UNPKG

@instana/aws-fargate

Version:

Instana tracing and monitoring for Node.js based AWS Fargate tasks

52 lines (45 loc) 1.5 kB
/* * (c) Copyright IBM Corp. 2021 * (c) Copyright Instana Inc. and contributors 2020 */ 'use strict'; const { environment: environmentUtil } = require('@instana/serverless'); const { DataProcessor } = require('@instana/metrics-util'); class EcsTaskProcessor extends DataProcessor { constructor(dataSource) { super('com.instana.plugin.aws.ecs.task', [['taskDefinition'], ['taskDefinitionVersion']]); this.addSource('snapshot', dataSource); } getEntityId() { if (this.entityId != null) { return this.entityId; } const rawData = this._compileRawData(); if (!rawData.snapshot) { return null; } this.entityId = rawData.snapshot.TaskARN; return this.entityId; } processData(rawDataPerSource) { const metadata = rawDataPerSource.snapshot; return { taskArn: metadata.TaskARN, clusterArn: metadata.Cluster, taskDefinition: metadata.Family, taskDefinitionVersion: metadata.Revision, availabilityZone: metadata.AvailabilityZone, instanaZone: environmentUtil.getCustomZone(), desiredStatus: metadata.DesiredStatus, knownStatus: metadata.KnownStatus, limits: { cpu: metadata.Limits ? metadata.Limits.CPU : undefined, memory: metadata.Limits ? metadata.Limits.Memory : undefined }, pullStartedAt: metadata.PullStartedAt, pullStoppedAt: metadata.PullStoppedAt, tags: environmentUtil.getTags() }; } } module.exports = exports = EcsTaskProcessor;