Skip to content

Commit

Permalink
clean up addInfluxTags
Browse files Browse the repository at this point in the history
  • Loading branch information
Adnan Rahic committed Apr 7, 2021
1 parent c7268f9 commit 04a1123
Showing 1 changed file with 143 additions and 116 deletions.
259 changes: 143 additions & 116 deletions lib/agent.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,137 @@ function formatArray (a) {
}
}

function addProcessTags (metric) {
try {
const processTags = JSON.parse(process.env.processTags)
if (!metric.tags['process.pid']) {
metric.tags['process.pid'] = processTags.process.pid
}
if (!metric.tags['process.ppid']) {
metric.tags['process.ppid'] = processTags.process.ppid
}
if (!metric.tags['process.name']) {
metric.tags['process.name'] = processTags.process.name
}
if (!metric.tags['process.type']) {
metric.tags['process.type'] = processTags.process.type
}
} catch (err) {
if (process.env.DEBUG === 'true' || process.env.DEBUG === true) {
console.log('Error adding Process tags.', err)
}
}
}

function addK8sTags (metric) {
try {
const isK8s = process.env.isKubernetes === 'true'
if (isK8s) {
const kubernetesTags = JSON.parse(process.env.kubernetesTags)
// don't set default tags, when already provided
if (!metric.tags['os.host'] && kubernetesTags.os.host) {
metric.tags['os.host'] = kubernetesTags.os.host
}
if (
!metric.tags['container.id'] &&
kubernetesTags &&
kubernetesTags.container &&
kubernetesTags.container.id
) {
metric.tags['container.id'] = kubernetesTags.container.id
}
if (
!metric.tags['container.name'] &&
kubernetesTags &&
kubernetesTags.container &&
kubernetesTags.container.name
) {
metric.tags['container.name'] = kubernetesTags.container.name
}
if (
!metric.tags['container.image.name'] &&
kubernetesTags &&
kubernetesTags.image &&
kubernetesTags.image.name
) {
metric.tags['container.image.name'] = kubernetesTags.image.name
}
if (
!metric.tags['container.image.tag'] &&
kubernetesTags &&
kubernetesTags.image &&
kubernetesTags.image.tag
) {
metric.tags['container.image.tag'] = kubernetesTags.image.tag
}
if (
!metric.tags['container.image.digest'] &&
kubernetesTags &&
kubernetesTags.image &&
kubernetesTags.image.digest
) {
metric.tags['container.image.digest'] = kubernetesTags.image.digest
}
if (!metric.tags['kubernetes.pod.name'] && process.env.POD_NAME) {
metric.tags['kubernetes.pod.name'] = process.env.POD_NAME
}
if (
!metric.tags['kubernetes.pod.namespace'] &&
process.env.POD_NAMESPACE
) {
metric.tags['kubernetes.pod.namespace'] = process.env.POD_NAMESPACE
}
}
} catch (err) {
if (process.env.DEBUG === 'true' || process.env.DEBUG === true) {
console.log('Error adding K8s tags.', err)
}
}
}

function addDockerTags (metric) {
try {
const isDkr = process.env.isDocker === 'true'
if (isDkr) {
// don't set default tags, when already provided
if (!metric.tags['container.id'] && process.env.containerId) {
metric.tags['container.id'] = process.env.containerId
}
if (!metric.tags['container.name'] && process.env.containerName) {
metric.tags['container.name'] = process.env.containerName
}
if (
!metric.tags['container.image.name'] &&
process.env.containerImageName
) {
metric.tags['container.image.name'] = process.env.containerImageName
}
if (
!metric.tags['container.image.tag'] &&
process.env.containerImageTag
) {
metric.tags['container.image.tag'] = process.env.containerImageTag
}
if (
!metric.tags['container.image.digest'] &&
process.env.containerImageDigest
) {
metric.tags['container.image.digest'] = process.env.containerImageDigest
}
if (!metric.tags['swarm.stack.name'] && process.env.swarmStackName) {
metric.tags['swarm.stack.name'] = process.env.swarmStackName
}
if (!metric.tags['swarm.service.name'] && process.env.swarmServiceName) {
metric.tags['swarm.service.name'] = process.env.swarmServiceName
}
}
} catch (err) {
if (process.env.DEBUG === 'true' || process.env.DEBUG === true) {
console.log('Error adding Docker tags.', err)
}
}
}

/**
* Agent super class that provides an EventEmitter for 'metric' event.
* In addition it fires for each added metric an event named by the property metric.name
Expand Down Expand Up @@ -116,127 +247,23 @@ function Agent (plugin) {
metric.tags['nodejs.worker.id'] = workerId
}

const processTags = JSON.parse(process.env.processTags)
if (!metric.tags['process.pid']) {
metric.tags['process.pid'] = processTags.process.pid
}
if (!metric.tags['process.ppid']) {
metric.tags['process.ppid'] = processTags.process.ppid
}
if (!metric.tags['process.name']) {
metric.tags['process.name'] = processTags.process.name
}
if (!metric.tags['process.type']) {
metric.tags['process.type'] = processTags.process.type
}
// Set process tags
addProcessTags(metric)

// Set container tags only for K8s metrics if running in K8s
const isK8s = process.env.isKubernetes === 'true'
if (isK8s) {
const kubernetesTags = JSON.parse(process.env.kubernetesTags)
// don't set default tags, when already provided
if (!metric.tags['os.host'] && kubernetesTags.os.host) {
metric.tags['os.host'] = kubernetesTags.os.host
}
if (
!metric.tags['container.id'] &&
kubernetesTags &&
kubernetesTags.container &&
kubernetesTags.container.id
) {
metric.tags['container.id'] = kubernetesTags.container.id
}
if (
!metric.tags['container.name'] &&
kubernetesTags &&
kubernetesTags.container &&
kubernetesTags.container.name
) {
metric.tags['container.name'] = kubernetesTags.container.name
}
if (
!metric.tags['container.image.name'] &&
kubernetesTags &&
kubernetesTags.image &&
kubernetesTags.image.name
) {
metric.tags['container.image.name'] = kubernetesTags.image.name
}
if (
!metric.tags['container.image.tag'] &&
kubernetesTags &&
kubernetesTags.image &&
kubernetesTags.image.tag
) {
metric.tags['container.image.tag'] = kubernetesTags.image.tag
}
if (
!metric.tags['container.image.digest'] &&
kubernetesTags &&
kubernetesTags.image &&
kubernetesTags.image.digest
) {
metric.tags['container.image.digest'] = kubernetesTags.image.digest
}
if (!metric.tags['kubernetes.pod.name'] && process.env.POD_NAME) {
metric.tags['kubernetes.pod.name'] = process.env.POD_NAME
}
if (
!metric.tags['kubernetes.pod.namespace'] &&
process.env.POD_NAMESPACE
) {
metric.tags['kubernetes.pod.namespace'] = process.env.POD_NAMESPACE
}
}
addK8sTags(metric)

// Set container tags only for container metrics if running in Docker
const isDkr = process.env.isDocker === 'true'
if (isDkr) {
// don't set default tags, when already provided
if (!metric.tags['container.id'] && process.env.containerId) {
metric.tags['container.id'] = process.env.containerId
}
if (!metric.tags['container.name'] && process.env.containerName) {
metric.tags['container.name'] = process.env.containerName
}
if (
!metric.tags['container.image.name'] &&
process.env.containerImageName
) {
metric.tags['container.image.name'] = process.env.containerImageName
}
if (
!metric.tags['container.image.tag'] &&
process.env.containerImageTag
) {
metric.tags['container.image.tag'] = process.env.containerImageTag
}
if (
!metric.tags['container.image.digest'] &&
process.env.containerImageDigest
) {
metric.tags['container.image.digest'] =
process.env.containerImageDigest
}
if (!metric.tags['swarm.stack.name'] && process.env.swarmStackName) {
metric.tags['swarm.stack.name'] = process.env.swarmStackName
}
if (
!metric.tags['swarm.service.name'] &&
process.env.swarmServiceName
) {
metric.tags['swarm.service.name'] = process.env.swarmServiceName
}
}
}
addDockerTags(metric)

// save the metric token tag, in case global tags set 'token'
const token = metric.tags.token
// add global tags to metrics Object
Object.assign(metric.tags, this.globalTags || {})
// set metric specific token, e.g. in case of infra-app token
if (token) {
metric.tags.token = token
// save the metric token tag, in case global tags set 'token'
const token = metric.tags.token
// add global tags to metrics Object
Object.assign(metric.tags, this.globalTags || {})
// set metric specific token, e.g. in case of infra-app token
if (token) {
metric.tags.token = token
}
}
},

Expand Down

0 comments on commit 04a1123

Please sign in to comment.