apiVersion: v1 kind: ConfigMap metadata: name: promtail-config namespace: default data: promtail.yaml: | server: http_listen_port: 9080 grpc_listen_port: 0 positions: filename: /tmp/positions.yaml clients: - url: http://loki:3100/loki/api/v1/push scrape_configs: - job_name: kubernetes-pods kubernetes_sd_configs: - role: pod pipeline_stages: # 解析 zap 输出的 JSON 日志,提取结构化字段 - json: expressions: level: level traceID: traceID spanID: spanID caller: caller pod: pod namespace: namespace node: node # 将关键字段提升为 Loki Label,支持在 Grafana 中按实例/Trace 过滤 - labels: level: traceID: pod: namespace: node: relabel_configs: - source_labels: [__meta_kubernetes_namespace] target_label: namespace - source_labels: [__meta_kubernetes_pod_name] target_label: pod - source_labels: [__meta_kubernetes_pod_container_name] target_label: container - source_labels: [__meta_kubernetes_pod_label_app] target_label: app # 只采集有 app label 的 Pod - source_labels: [__meta_kubernetes_pod_label_app] action: keep regex: .+