diff --git a/production/helm/loki-stack/Chart.yaml b/production/helm/loki-stack/Chart.yaml
index 86789f10a620de1487a0d092ceba9f385e6c5242..777922dc2bbad01f4d5686a956d391dc284ef1e9 100644
--- a/production/helm/loki-stack/Chart.yaml
+++ b/production/helm/loki-stack/Chart.yaml
@@ -1,5 +1,5 @@
 name: loki-stack
-version: 0.7.2
+version: 0.8.0
 appVersion: 0.0.1
 kubeVersion: "^1.10.0-0"
 description: "Loki: like Prometheus, but for logs."
diff --git a/production/helm/promtail/Chart.yaml b/production/helm/promtail/Chart.yaml
index 8f3ea952a3f9b9cd85464048543ac502dee6cdbb..806b12091f97964aa916e229c1a6e4f2ff369092 100644
--- a/production/helm/promtail/Chart.yaml
+++ b/production/helm/promtail/Chart.yaml
@@ -1,5 +1,5 @@
 name: promtail
-version: 0.6.3
+version: 0.7.0
 appVersion: 0.0.1
 kubeVersion: "^1.10.0-0"
 description: "Responsible for gathering logs and sending them to Loki"
diff --git a/production/helm/promtail/templates/daemonset.yaml b/production/helm/promtail/templates/daemonset.yaml
index f800bc3e8e9cf3717e8ae1c6f1af627ab4be1caa..2d98b3fc62ebb3f9d4c999eebe1a21f1d98b8660 100644
--- a/production/helm/promtail/templates/daemonset.yaml
+++ b/production/helm/promtail/templates/daemonset.yaml
@@ -28,7 +28,10 @@ spec:
         {{- toYaml . | nindent 8 }}
         {{- end }}          
       annotations:
-        {{ toYaml .Values.podAnnotations | nindent 8 }}
+        checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
+        {{- with .Values.podAnnotations }}
+        {{- toYaml . | nindent 8 }}
+        {{- end }}
     spec:
       serviceAccountName: {{ template "promtail.serviceAccountName" . }}
     {{- if .Values.priorityClassName }}
diff --git a/production/helm/promtail/values.yaml b/production/helm/promtail/values.yaml
index 2f5c0dcc463e0e01df2060fafe072eb54865850d..5d31ea2c12948caa2fbdf6631f9668c8e7f53288 100644
--- a/production/helm/promtail/values.yaml
+++ b/production/helm/promtail/values.yaml
@@ -318,3 +318,51 @@ config:
       - __meta_kubernetes_pod_uid
       - __meta_kubernetes_pod_container_name
       target_label: __path__
+  - entry_parser: '{{ .Values.entryParser }}'
+    job_name: kubernetes-pods-static
+    kubernetes_sd_configs:
+    - role: pod
+    relabel_configs:
+    - action: drop
+      regex: ^$
+      source_labels:
+      - __meta_kubernetes_pod_annotation_kubernetes_io_config_mirror
+    - action: replace
+      source_labels:
+      - __meta_kubernetes_pod_label_component
+      target_label: __service__
+    - source_labels:
+      - __meta_kubernetes_pod_node_name
+      target_label: __host__
+    - action: drop
+      regex: ^$
+      source_labels:
+      - __service__
+    - action: replace
+      replacement: $1
+      separator: /
+      source_labels:
+      - __meta_kubernetes_namespace
+      - __service__
+      target_label: job
+    - action: replace
+      source_labels:
+      - __meta_kubernetes_namespace
+      target_label: namespace
+    - action: replace
+      source_labels:
+      - __meta_kubernetes_pod_name
+      target_label: instance
+    - action: replace
+      source_labels:
+      - __meta_kubernetes_pod_container_name
+      target_label: container_name
+    - action: labelmap
+      regex: __meta_kubernetes_pod_label_(.+)
+    - replacement: /var/log/pods/$1/*.log
+      separator: /
+      source_labels:
+      - __meta_kubernetes_pod_annotation_kubernetes_io_config_mirror
+      - __meta_kubernetes_pod_container_name
+      target_label: __path__
+
diff --git a/production/ksonnet/promtail/scrape_config.libsonnet b/production/ksonnet/promtail/scrape_config.libsonnet
index 9f7fb327c7180ff1f76616b07fa25252e06391c1..35dddbcd9c60f0b146ebe579fcc2237705f209d3 100644
--- a/production/ksonnet/promtail/scrape_config.libsonnet
+++ b/production/ksonnet/promtail/scrape_config.libsonnet
@@ -1,7 +1,7 @@
 local config = import 'config.libsonnet';
 
 config + {
-  local gen_scrape_config(job_name) = {
+  local gen_scrape_config(job_name, pod_uid) = {
     job_name: job_name,
     entry_parser: $._config.promtail_config.entry_parser,
     kubernetes_sd_configs: [{
@@ -61,7 +61,7 @@ config + {
 
       // Kubernetes puts logs under subdirectories keyed pod UID and container_name.
       {
-        source_labels: ['__meta_kubernetes_pod_uid', '__meta_kubernetes_pod_container_name'],
+        source_labels: [pod_uid, '__meta_kubernetes_pod_container_name'],
         target_label: '__path__',
         separator: '/',
         replacement: '/var/log/pods/$1/*.log',
@@ -72,7 +72,7 @@ config + {
   promtail_config:: {
     scrape_configs: [
       // Scrape config to scrape any pods with a 'name' label.
-      gen_scrape_config('kubernetes-pods-name') {
+      gen_scrape_config('kubernetes-pods-name', '__meta_kubernetes_pod_uid') {
         prelabel_config:: [
 
           // Use name label as __service__.
@@ -84,7 +84,7 @@ config + {
       },
 
       // Scrape config to scrape any pods with a 'app' label.
-      gen_scrape_config('kubernetes-pods-app') {
+      gen_scrape_config('kubernetes-pods-app', '__meta_kubernetes_pod_uid') {
         prelabel_config:: [
           // Drop pods with a 'name' label.  They will have already been added by
           // the scrape_config that matches on the 'name' label
@@ -104,7 +104,7 @@ config + {
 
       // Scrape config to scrape any pods with a direct controller (eg
       // StatefulSets).
-      gen_scrape_config('kubernetes-pods-direct-controllers') {
+      gen_scrape_config('kubernetes-pods-direct-controllers', '__meta_kubernetes_pod_uid') {
         prelabel_config:: [
           // Drop pods with a 'name' or 'app' label.  They will have already been added by
           // the scrape_config that matches above.
@@ -133,7 +133,7 @@ config + {
 
       // Scrape config to scrape any pods with an indirect controller (eg
       // Deployments).
-      gen_scrape_config('kubernetes-pods-indirect-controller') {
+      gen_scrape_config('kubernetes-pods-indirect-controller', '__meta_kubernetes_pod_uid') {
         prelabel_config:: [
           // Drop pods with a 'name' or 'app' label.  They will have already been added by
           // the scrape_config that matches above.
@@ -160,6 +160,26 @@ config + {
           },
         ]
       },
+
+      // Scrape config to scrape any control plane static pods (e.g. kube-apiserver
+      // etcd, kube-controller-manager & kube-scheduler)
+      gen_scrape_config('kubernetes-pods-static', '__meta_kubernetes_pod_annotation_kubernetes_io_config_mirror') {
+        prelabel_config:: [
+          // Ignore pods that aren't mirror pods
+          {
+            action: 'drop',
+            source_labels: ['__meta_kubernetes_pod_annotation_kubernetes_io_config_mirror'],
+            regex: '^$',
+          },
+
+          // Static control plane pods usually have a component label that identifies them
+          {
+            action: 'replace',
+            source_labels: ['__meta_kubernetes_pod_label_component'],
+            target_label: '__service__',
+          },
+        ]
+      },
     ],
   },
-}
\ No newline at end of file
+}
diff --git a/tools/promtail.sh b/tools/promtail.sh
index 635eb534e7b27f30170fb42f5f873429fc1a0c44..aae6c854d803e71f376853520672efab548b1569 100755
--- a/tools/promtail.sh
+++ b/tools/promtail.sh
@@ -211,6 +211,54 @@ data:
         - __meta_kubernetes_pod_uid
         - __meta_kubernetes_pod_container_name
         target_label: __path__
+    - entry_parser: <parser>
+      job_name: kubernetes-pods-static
+      kubernetes_sd_configs:
+      - role: pod
+      relabel_configs:
+      - action: drop
+        regex: ^$
+        source_labels:
+        - __meta_kubernetes_pod_annotation_kubernetes_io_config_mirror
+      - action: replace
+        source_labels:
+        - __meta_kubernetes_pod_label_component
+        target_label: __service__
+      - source_labels:
+        - __meta_kubernetes_pod_node_name
+        target_label: __host__
+      - action: drop
+        regex: ^$
+        source_labels:
+        - __service__
+      - action: replace
+        replacement: $1
+        separator: /
+        source_labels:
+        - __meta_kubernetes_namespace
+        - __service__
+        target_label: job
+      - action: replace
+        source_labels:
+        - __meta_kubernetes_namespace
+        target_label: namespace
+      - action: replace
+        source_labels:
+        - __meta_kubernetes_pod_name
+        target_label: instance
+      - action: replace
+        source_labels:
+        - __meta_kubernetes_pod_container_name
+        target_label: container_name
+      - action: labelmap
+        regex: __meta_kubernetes_pod_label_(.+)
+      - replacement: /var/log/pods/$1/*.log
+        separator: /
+        source_labels:
+        - __meta_kubernetes_pod_annotation_kubernetes_io_config_mirror
+        - __meta_kubernetes_pod_container_name
+        target_label: __path__
+
 kind: ConfigMap
 metadata:
   name: promtail