@instana/aws-fargate
Version:
Instana tracing and monitoring for Node.js based AWS Fargate tasks
52 lines (45 loc) • 1.5 kB
JavaScript
/*
* (c) Copyright IBM Corp. 2021
* (c) Copyright Instana Inc. and contributors 2020
*/
;
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;