in lib/apm-client/http-apm-client/index.js [1685:1777]
function metadataFromConf(opts, client) {
var payload = {
service: {
name: opts.serviceName,
environment: opts.environment,
runtime: {
name: process.release.name,
version: process.versions.node,
},
language: {
name: 'javascript',
},
agent: {
name: opts.agentName,
version: opts.agentVersion,
},
framework: undefined,
version: undefined,
node: undefined,
},
process: {
pid: process.pid,
ppid: process.ppid,
title: process.title,
argv: process.argv,
},
system: {
architecture: process.arch,
platform: process.platform,
container: undefined,
kubernetes: undefined,
},
labels: opts.globalLabels,
};
// On `system.*hostname` fields:
// - `hostname` was deprecated in APM server v7.4, replaced by the next two.
// - Around Elastic v8.9, ECS changed `host.name` to prefer the FQDN,
// hence APM agents now prefer FQDN for `detected_hostname`.
if (client.supportsConfiguredAndDetectedHostname()) {
payload.system.detected_hostname = opts.detectedHostname;
if (opts.configuredHostname) {
payload.system.configured_hostname = opts.configuredHostname;
}
} else {
payload.system.hostname = opts.configuredHostname || opts.detectedHostname;
}
if (opts.agentActivationMethod && client.supportsActivationMethodField()) {
payload.service.agent.activation_method = opts.agentActivationMethod;
}
if (opts.serviceNodeName) {
payload.service.node = {
configured_name: opts.serviceNodeName,
};
}
if (opts.serviceVersion) payload.service.version = opts.serviceVersion;
if (opts.frameworkName || opts.frameworkVersion) {
payload.service.framework = {
name: opts.frameworkName,
version: opts.frameworkVersion,
};
}
if (opts.containerId) {
payload.system.container = {
id: opts.containerId,
};
}
if (
opts.kubernetesNodeName ||
opts.kubernetesNamespace ||
opts.kubernetesPodName ||
opts.kubernetesPodUID
) {
payload.system.kubernetes = {
namespace: opts.kubernetesNamespace,
node: opts.kubernetesNodeName
? { name: opts.kubernetesNodeName }
: undefined,
pod:
opts.kubernetesPodName || opts.kubernetesPodUID
? { name: opts.kubernetesPodName, uid: opts.kubernetesPodUID }
: undefined,
};
}
return payload;
}