feat(opentelemetry): enhance logging attributes with additional Kubernetes labels and service names

This commit is contained in:
Nicolas 2025-09-28 10:12:21 +08:00
parent 54ff853f4b
commit 1fac5d3bf2
7 changed files with 59 additions and 7 deletions

View File

@ -79,8 +79,20 @@ spec:
log_statements: log_statements:
- context: log - context: log
statements: statements:
- set(resource.attributes["application"], "chat") # Set Grafana queryable labels
- set(resource.attributes["service_name"], "chat")
- set(resource.attributes["environment"], "{{ .Values.global.environment | default .Release.Namespace }}") - set(resource.attributes["environment"], "{{ .Values.global.environment | default .Release.Namespace }}")
- set(resource.attributes["pod_name"], resource.attributes["k8s.pod.name"])
- set(resource.attributes["pod_ip"], resource.attributes["k8s.pod.ip"])
# Keep application for backward compatibility
- set(resource.attributes["application"], "chat")
# Set additional kubernetes labels
- set(resource.attributes["kubernetes_node_name"], resource.attributes["k8s.node.name"])
- set(resource.attributes["kubernetes_pod_name"], resource.attributes["k8s.pod.name"])
- set(resource.attributes["kubernetes_pod_ip"], resource.attributes["k8s.pod.ip"])
- set(resource.attributes["kubernetes_deployment_name"], resource.attributes["k8s.deployment.name"])
- set(resource.attributes["kubernetes_namespace"], resource.attributes["k8s.namespace.name"])
# Parse and enrich log body
- set(resource.attributes["body_json"], ParseJSON(log.body)) - set(resource.attributes["body_json"], ParseJSON(log.body))
- set(resource.attributes["body_json"]["kubernetes"]["pod"], resource.attributes["k8s.pod.name"]) - set(resource.attributes["body_json"]["kubernetes"]["pod"], resource.attributes["k8s.pod.name"])
- set(resource.attributes["body_json"]["kubernetes"]["namespace"], resource.attributes["k8s.namespace.name"]) - set(resource.attributes["body_json"]["kubernetes"]["namespace"], resource.attributes["k8s.namespace.name"])

View File

@ -78,13 +78,20 @@ spec:
log_statements: log_statements:
- context: log - context: log
statements: statements:
- set(resource.attributes["application"], log.attributes["context"]["app"]) # Set Grafana queryable labels
- set(resource.attributes["service_name"], "content")
- set(resource.attributes["environment"], log.attributes["context"]["env"]) - set(resource.attributes["environment"], log.attributes["context"]["env"])
- set(resource.attributes["pod_name"], resource.attributes["k8s.pod.name"])
- set(resource.attributes["pod_ip"], resource.attributes["k8s.pod.ip"])
# Keep application for backward compatibility
- set(resource.attributes["application"], log.attributes["context"]["app"])
# Set additional kubernetes labels
- set(resource.attributes["kubernetes_node_name"], resource.attributes["k8s.node.name"]) - set(resource.attributes["kubernetes_node_name"], resource.attributes["k8s.node.name"])
- set(resource.attributes["kubernetes_pod_name"], resource.attributes["k8s.pod.name"]) - set(resource.attributes["kubernetes_pod_name"], resource.attributes["k8s.pod.name"])
- set(resource.attributes["kubernetes_pod_ip"], resource.attributes["k8s.pod.ip"]) - set(resource.attributes["kubernetes_pod_ip"], resource.attributes["k8s.pod.ip"])
- set(resource.attributes["kubernetes_deployment_name"], resource.attributes["k8s.deployment.name"]) - set(resource.attributes["kubernetes_deployment_name"], resource.attributes["k8s.deployment.name"])
- set(resource.attributes["kubernetes_namespace"], resource.attributes["k8s.namespace.name"]) - set(resource.attributes["kubernetes_namespace"], resource.attributes["k8s.namespace.name"])
# Parse and enrich log body
- set(resource.attributes["body_json"], ParseJSON(log.body)) - set(resource.attributes["body_json"], ParseJSON(log.body))
- set(resource.attributes["body_json"]["kubernetes"]["pod"], resource.attributes["k8s.pod.name"]) - set(resource.attributes["body_json"]["kubernetes"]["pod"], resource.attributes["k8s.pod.name"])
- set(resource.attributes["body_json"]["kubernetes"]["namespace"], resource.attributes["k8s.namespace.name"]) - set(resource.attributes["body_json"]["kubernetes"]["namespace"], resource.attributes["k8s.namespace.name"])

View File

@ -78,13 +78,20 @@ spec:
log_statements: log_statements:
- context: log - context: log
statements: statements:
- set(resource.attributes["application"], log.attributes["context"]["app"]) # Set Grafana queryable labels
- set(resource.attributes["service_name"], "devops")
- set(resource.attributes["environment"], log.attributes["context"]["env"]) - set(resource.attributes["environment"], log.attributes["context"]["env"])
- set(resource.attributes["pod_name"], resource.attributes["k8s.pod.name"])
- set(resource.attributes["pod_ip"], resource.attributes["k8s.pod.ip"])
# Keep application for backward compatibility
- set(resource.attributes["application"], log.attributes["context"]["app"])
# Set additional kubernetes labels
- set(resource.attributes["kubernetes_node_name"], resource.attributes["k8s.node.name"]) - set(resource.attributes["kubernetes_node_name"], resource.attributes["k8s.node.name"])
- set(resource.attributes["kubernetes_pod_name"], resource.attributes["k8s.pod.name"]) - set(resource.attributes["kubernetes_pod_name"], resource.attributes["k8s.pod.name"])
- set(resource.attributes["kubernetes_pod_ip"], resource.attributes["k8s.pod.ip"]) - set(resource.attributes["kubernetes_pod_ip"], resource.attributes["k8s.pod.ip"])
- set(resource.attributes["kubernetes_deployment_name"], resource.attributes["k8s.deployment.name"]) - set(resource.attributes["kubernetes_deployment_name"], resource.attributes["k8s.deployment.name"])
- set(resource.attributes["kubernetes_namespace"], resource.attributes["k8s.namespace.name"]) - set(resource.attributes["kubernetes_namespace"], resource.attributes["k8s.namespace.name"])
# Parse and enrich log body
- set(resource.attributes["body_json"], ParseJSON(log.body)) - set(resource.attributes["body_json"], ParseJSON(log.body))
- set(resource.attributes["body_json"]["kubernetes"]["pod"], resource.attributes["k8s.pod.name"]) - set(resource.attributes["body_json"]["kubernetes"]["pod"], resource.attributes["k8s.pod.name"])
- set(resource.attributes["body_json"]["kubernetes"]["namespace"], resource.attributes["k8s.namespace.name"]) - set(resource.attributes["body_json"]["kubernetes"]["namespace"], resource.attributes["k8s.namespace.name"])

View File

@ -81,14 +81,20 @@ spec:
log_statements: log_statements:
- context: log - context: log
statements: statements:
- set(resource.attributes["application"], log.attributes["context"]["app"]) # Set Grafana queryable labels
- set(resource.attributes["service_name"], "devsvc") - set(resource.attributes["service_name"], "devsvc")
- set(resource.attributes["environment"], "{{ .Values.global.environment | default .Release.Namespace }}") - set(resource.attributes["environment"], "{{ .Values.global.environment | default .Release.Namespace }}")
- set(resource.attributes["pod_name"], resource.attributes["k8s.pod.name"])
- set(resource.attributes["pod_ip"], resource.attributes["k8s.pod.ip"])
# Keep application for backward compatibility
- set(resource.attributes["application"], log.attributes["context"]["app"])
# Set additional kubernetes labels
- set(resource.attributes["kubernetes_node_name"], resource.attributes["k8s.node.name"]) - set(resource.attributes["kubernetes_node_name"], resource.attributes["k8s.node.name"])
- set(resource.attributes["kubernetes_pod_name"], resource.attributes["k8s.pod.name"]) - set(resource.attributes["kubernetes_pod_name"], resource.attributes["k8s.pod.name"])
- set(resource.attributes["kubernetes_pod_ip"], resource.attributes["k8s.pod.ip"]) - set(resource.attributes["kubernetes_pod_ip"], resource.attributes["k8s.pod.ip"])
- set(resource.attributes["kubernetes_deployment_name"], resource.attributes["k8s.deployment.name"]) - set(resource.attributes["kubernetes_deployment_name"], resource.attributes["k8s.deployment.name"])
- set(resource.attributes["kubernetes_namespace"], resource.attributes["k8s.namespace.name"]) - set(resource.attributes["kubernetes_namespace"], resource.attributes["k8s.namespace.name"])
# Parse and enrich log body
- set(resource.attributes["body_json"], ParseJSON(log.body)) - set(resource.attributes["body_json"], ParseJSON(log.body))
- set(resource.attributes["body_json"]["kubernetes"]["pod"], resource.attributes["k8s.pod.name"]) - set(resource.attributes["body_json"]["kubernetes"]["pod"], resource.attributes["k8s.pod.name"])
- set(resource.attributes["body_json"]["kubernetes"]["namespace"], resource.attributes["k8s.namespace.name"]) - set(resource.attributes["body_json"]["kubernetes"]["namespace"], resource.attributes["k8s.namespace.name"])

View File

@ -81,8 +81,14 @@ spec:
log_statements: log_statements:
- context: log - context: log
statements: statements:
- set(resource.attributes["application"], "freeleaps") # Set Grafana queryable labels
- set(resource.attributes["service_name"], "freeleaps")
- set(resource.attributes["environment"], "{{ .Values.global.environment | default .Release.Namespace }}") - set(resource.attributes["environment"], "{{ .Values.global.environment | default .Release.Namespace }}")
- set(resource.attributes["pod_name"], resource.attributes["k8s.pod.name"])
- set(resource.attributes["pod_ip"], resource.attributes["k8s.pod.ip"])
# Keep application for backward compatibility
- set(resource.attributes["application"], "freeleaps")
# Set additional kubernetes labels
- set(resource.attributes["kubernetes_node_name"], resource.attributes["k8s.node.name"]) - set(resource.attributes["kubernetes_node_name"], resource.attributes["k8s.node.name"])
- set(resource.attributes["kubernetes_pod_name"], resource.attributes["k8s.pod.name"]) - set(resource.attributes["kubernetes_pod_name"], resource.attributes["k8s.pod.name"])
- set(resource.attributes["kubernetes_pod_ip"], resource.attributes["k8s.pod.ip"]) - set(resource.attributes["kubernetes_pod_ip"], resource.attributes["k8s.pod.ip"])

View File

@ -78,13 +78,20 @@ spec:
log_statements: log_statements:
- context: log - context: log
statements: statements:
- set(resource.attributes["application"], log.attributes["context"]["app"]) # Set Grafana queryable labels
- set(resource.attributes["service_name"], "notification")
- set(resource.attributes["environment"], log.attributes["context"]["env"]) - set(resource.attributes["environment"], log.attributes["context"]["env"])
- set(resource.attributes["pod_name"], resource.attributes["k8s.pod.name"])
- set(resource.attributes["pod_ip"], resource.attributes["k8s.pod.ip"])
# Keep application for backward compatibility
- set(resource.attributes["application"], log.attributes["context"]["app"])
# Set additional kubernetes labels
- set(resource.attributes["kubernetes_node_name"], resource.attributes["k8s.node.name"]) - set(resource.attributes["kubernetes_node_name"], resource.attributes["k8s.node.name"])
- set(resource.attributes["kubernetes_pod_name"], resource.attributes["k8s.pod.name"]) - set(resource.attributes["kubernetes_pod_name"], resource.attributes["k8s.pod.name"])
- set(resource.attributes["kubernetes_pod_ip"], resource.attributes["k8s.pod.ip"]) - set(resource.attributes["kubernetes_pod_ip"], resource.attributes["k8s.pod.ip"])
- set(resource.attributes["kubernetes_deployment_name"], resource.attributes["k8s.deployment.name"]) - set(resource.attributes["kubernetes_deployment_name"], resource.attributes["k8s.deployment.name"])
- set(resource.attributes["kubernetes_namespace"], resource.attributes["k8s.namespace.name"]) - set(resource.attributes["kubernetes_namespace"], resource.attributes["k8s.namespace.name"])
# Parse and enrich log body
- set(resource.attributes["body_json"], ParseJSON(log.body)) - set(resource.attributes["body_json"], ParseJSON(log.body))
- set(resource.attributes["body_json"]["kubernetes"]["pod"], resource.attributes["k8s.pod.name"]) - set(resource.attributes["body_json"]["kubernetes"]["pod"], resource.attributes["k8s.pod.name"])
- set(resource.attributes["body_json"]["kubernetes"]["namespace"], resource.attributes["k8s.namespace.name"]) - set(resource.attributes["body_json"]["kubernetes"]["namespace"], resource.attributes["k8s.namespace.name"])

View File

@ -78,13 +78,20 @@ spec:
log_statements: log_statements:
- context: log - context: log
statements: statements:
- set(resource.attributes["application"], log.attributes["context"]["app"]) # Set Grafana queryable labels
- set(resource.attributes["service_name"], "payment")
- set(resource.attributes["environment"], log.attributes["context"]["env"]) - set(resource.attributes["environment"], log.attributes["context"]["env"])
- set(resource.attributes["pod_name"], resource.attributes["k8s.pod.name"])
- set(resource.attributes["pod_ip"], resource.attributes["k8s.pod.ip"])
# Keep application for backward compatibility
- set(resource.attributes["application"], log.attributes["context"]["app"])
# Set additional kubernetes labels
- set(resource.attributes["kubernetes_node_name"], resource.attributes["k8s.node.name"]) - set(resource.attributes["kubernetes_node_name"], resource.attributes["k8s.node.name"])
- set(resource.attributes["kubernetes_pod_name"], resource.attributes["k8s.pod.name"]) - set(resource.attributes["kubernetes_pod_name"], resource.attributes["k8s.pod.name"])
- set(resource.attributes["kubernetes_pod_ip"], resource.attributes["k8s.pod.ip"]) - set(resource.attributes["kubernetes_pod_ip"], resource.attributes["k8s.pod.ip"])
- set(resource.attributes["kubernetes_deployment_name"], resource.attributes["k8s.deployment.name"]) - set(resource.attributes["kubernetes_deployment_name"], resource.attributes["k8s.deployment.name"])
- set(resource.attributes["kubernetes_namespace"], resource.attributes["k8s.namespace.name"]) - set(resource.attributes["kubernetes_namespace"], resource.attributes["k8s.namespace.name"])
# Parse and enrich log body
- set(resource.attributes["body_json"], ParseJSON(log.body)) - set(resource.attributes["body_json"], ParseJSON(log.body))
- set(resource.attributes["body_json"]["kubernetes"]["pod"], resource.attributes["k8s.pod.name"]) - set(resource.attributes["body_json"]["kubernetes"]["pod"], resource.attributes["k8s.pod.name"])
- set(resource.attributes["body_json"]["kubernetes"]["namespace"], resource.attributes["k8s.namespace.name"]) - set(resource.attributes["body_json"]["kubernetes"]["namespace"], resource.attributes["k8s.namespace.name"])