Important: This documentation is about an older version. It's relevant only to the release noted, many of the features and functions have been updated or replaced. Please view the current version .
Install Promtail Promtail is distributed as a binary, in a Docker container,
or there is a Helm chart to install it in a Kubernetes cluster.
Binary Every Grafana Loki release includes binaries for Promtail which can be found on the
Releases page as part of the release assets.
Docker
docker pull grafana/promtail:2.0.0
Helm Make sure that Helm is installed.
See Installing Helm .
Then you can add Grafana’s chart repository to Helm:
helm repo add grafana https://grafana.github.io/helm-charts
And the chart repository can be updated by running:
Finally, Promtail can be deployed with:
helm upgrade --install promtail grafana/promtail
Kubernetes DaemonSet (recommended) A DaemonSet
will deploy Promtail on every node within a Kubernetes cluster.
The DaemonSet deployment works well at collecting the logs of all containers within a
cluster. It’s the best solution for a single-tenant model. Replace {YOUR_LOKI_ENDPOINT}
with your Loki endpoint.
Expand code
---
apiVersion : apps/v1
kind : DaemonSet
metadata :
name : promtail- daemonset
spec :
selector :
matchLabels :
name : promtail
template :
metadata :
labels :
name : promtail
spec :
serviceAccount : promtail- serviceaccount
containers :
- name : promtail- container
image : grafana/promtail
args :
- - config.file=/etc/promtail/promtail.yaml
env :
- name : 'HOSTNAME'
valueFrom :
fieldRef :
fieldPath : 'spec.nodeName'
volumeMounts :
- name : logs
mountPath : /var/log
- name : promtail- config
mountPath : /etc/promtail
- mountPath : /var/lib/docker/containers
name : varlibdockercontainers
readOnly : true
volumes :
- name : logs
hostPath :
path : /var/log
- name : varlibdockercontainers
hostPath :
path : /var/lib/docker/containers
- name : promtail- config
configMap :
name : promtail- config
---
apiVersion : v1
kind : ConfigMap
metadata :
name : promtail- config
data :
promtail.yaml : |
server:
http_listen_port: 9080
grpc_listen_port: 0
clients :
- url : https: //{ YOUR_LOKI_ENDPOINT} /loki/api/v1/push
positions :
filename : /tmp/positions.yaml
target_config :
sync_period : 10s
scrape_configs :
- job_name : pod- logs
kubernetes_sd_configs :
- role : pod
pipeline_stages :
- docker : { }
relabel_configs :
- source_labels :
- __meta_kubernetes_pod_node_name
target_label : __host__
- action : labelmap
regex : __meta_kubernetes_pod_label_(.+)
- action : replace
replacement : $1
separator : /
source_labels :
- __meta_kubernetes_namespace
- __meta_kubernetes_pod_name
target_label : job
- action : replace
source_labels :
- __meta_kubernetes_namespace
target_label : namespace
- action : replace
source_labels :
- __meta_kubernetes_pod_name
target_label : pod
- action : replace
source_labels :
- __meta_kubernetes_pod_container_name
target_label : container
- replacement : /var/log/pods/*$1/*.log
separator : /
source_labels :
- __meta_kubernetes_pod_uid
- __meta_kubernetes_pod_container_name
target_label : __path__
---
apiVersion : rbac.authorization.k8s.io/v1
kind : ClusterRole
metadata :
name : promtail- clusterrole
rules :
- apiGroups : [ "" ]
resources :
- nodes
- services
- pods
verbs :
- get
- watch
- list
---
apiVersion : v1
kind : ServiceAccount
metadata :
name : promtail- serviceaccount
---
apiVersion : rbac.authorization.k8s.io/v1
kind : ClusterRoleBinding
metadata :
name : promtail- clusterrolebinding
subjects :
- kind : ServiceAccount
name : promtail- serviceaccount
namespace : default
roleRef :
kind : ClusterRole
name : promtail- clusterrole
apiGroup : rbac.authorization.k8s.io