in elasticapm/base.py [0:0]
def get_system_info(self):
system_data = {
"detected_hostname": keyword_field(elasticapm.utils.getfqdn()),
"architecture": platform.machine(),
"platform": platform.system().lower(),
}
if self.config.hostname:
system_data["configured_hostname"] = keyword_field(self.config.hostname)
if not self.check_server_version(gte=(7, 4, 0)):
system_data["hostname"] = system_data.get("configured_hostname", system_data["detected_hostname"])
system_data.update(cgroup.get_cgroup_container_metadata())
pod_name = os.environ.get("KUBERNETES_POD_NAME") or keyword_field(
self.config.hostname or elasticapm.utils.getfqdn().split(".")[0]
)
changed = False
if "kubernetes" in system_data:
k8s = system_data["kubernetes"]
k8s["pod"]["name"] = pod_name
else:
k8s = {"pod": {"name": pod_name}}
# get kubernetes metadata from environment
if "KUBERNETES_NODE_NAME" in os.environ:
k8s["node"] = {"name": os.environ["KUBERNETES_NODE_NAME"]}
changed = True
if "KUBERNETES_NAMESPACE" in os.environ:
k8s["namespace"] = os.environ["KUBERNETES_NAMESPACE"]
changed = True
if "KUBERNETES_POD_UID" in os.environ:
# this takes precedence over any value from /proc/self/cgroup
k8s["pod"]["uid"] = os.environ["KUBERNETES_POD_UID"]
changed = True
if changed:
system_data["kubernetes"] = k8s
return system_data