From b7a4035ba69f0ded089e523bf8370e0aa42cafba Mon Sep 17 00:00:00 2001
From: Anthony Woods <awoods@grafana.com>
Date: Sat, 19 Jan 2019 10:28:29 +0800
Subject: [PATCH] add container_name label to logs

fixes #190
Pods can have multiple containers. This fix ensures that we collect
logs for all containers.
---
 .../helm/templates/promtail/configmap.yaml    | 10 ++++++++++
 .../ksonnet/promtail/promtail.libsonnet       | 20 +++++++++++++++++++
 tools/promtail.sh                             | 10 ++++++++++
 3 files changed, 40 insertions(+)

diff --git a/production/helm/templates/promtail/configmap.yaml b/production/helm/templates/promtail/configmap.yaml
index e90695e9..291320cb 100644
--- a/production/helm/templates/promtail/configmap.yaml
+++ b/production/helm/templates/promtail/configmap.yaml
@@ -36,6 +36,12 @@ data:
           source_labels:
           - __meta_kubernetes_pod_name
           target_label: instance
+        - action: replace
+          source_labels:
+          - __meta_kubernetes_container_name
+          target_label: container_name
+        - action: labelmap
+          regex: __meta_kubernetes_pod_label_(.+)
         - replacement: /var/log/pods/$1/0.log
           separator: /
           source_labels:
@@ -68,6 +74,10 @@ data:
           source_labels:
           - __meta_kubernetes_pod_name
           target_label: instance
+        - action: replace
+          source_labels:
+          - __meta_kubernetes_container_name
+          target_label: container_name
         - action: labelmap
           regex: __meta_kubernetes_pod_label_(.+)
         - replacement: /var/log/pods/$1/0.log
diff --git a/production/ksonnet/promtail/promtail.libsonnet b/production/ksonnet/promtail/promtail.libsonnet
index 7c85c2c5..9088f223 100644
--- a/production/ksonnet/promtail/promtail.libsonnet
+++ b/production/ksonnet/promtail/promtail.libsonnet
@@ -82,6 +82,19 @@ k {
             target_label: 'instance',
           },
 
+          // Include container_name label
+          {
+            source_labels: ['__meta_kubernetes_container_name'],
+            action: 'replace',
+            target_label: 'container_name',
+          },
+
+          // Also include all the other labels on the pod.
+          {
+            action: 'labelmap',
+            regex: '__meta_kubernetes_pod_label_(.+)',
+          },
+
           // Kubernetes puts logs under subdirectories keyed pod UID and container_name.
           {
             source_labels: ['__meta_kubernetes_pod_uid', '__meta_kubernetes_pod_container_name'],
@@ -135,6 +148,13 @@ k {
             target_label: 'instance',
           },
 
+          // Include container_name label
+          {
+            source_labels: ['__meta_kubernetes_container_name'],
+            action: 'replace',
+            target_label: 'container_name',
+          },
+
           // Also include all the other labels on the pod.
           {
             action: 'labelmap',
diff --git a/tools/promtail.sh b/tools/promtail.sh
index eb5eb096..4d36c614 100644
--- a/tools/promtail.sh
+++ b/tools/promtail.sh
@@ -42,6 +42,12 @@ data:
         source_labels:
         - __meta_kubernetes_pod_name
         target_label: instance
+      - action: replace
+        source_labels:
+        - __meta_kubernetes_container_name
+        target_label: container_name
+      - action: labelmap
+          regex: __meta_kubernetes_pod_label_(.+)
       - replacement: /var/log/pods/$1
         separator: /
         source_labels:
@@ -74,6 +80,10 @@ data:
         source_labels:
         - __meta_kubernetes_pod_name
         target_label: instance
+      - action: replace
+        source_labels:
+        - __meta_kubernetes_container_name
+        target_label: container_name
       - action: labelmap
         regex: __meta_kubernetes_pod_label_(.+)
       - replacement: /var/log/pods/$1
-- 
GitLab