Skip to content

Latest commit

 

History

History
172 lines (146 loc) · 3.75 KB

installation.md

File metadata and controls

172 lines (146 loc) · 3.75 KB

Installing Promtail

Promtail is distributed as a binary, Docker container, and Helm chart.

Binary

Every Loki release includes binaries for Promtail:

# download a binary (modify app, os, and arch as needed)
# Installs v0.3.0. Go to the releases page for the latest version
$ curl -fSL -o "/usr/local/bin/promtail.gz" "https://github.com/grafana/loki/releases/download/v0.3.0/promtail_linux_amd64.gz"
$ gunzip "/usr/local/bin/promtail.gz"

# make sure it is executable
$ chmod a+x "/usr/local/bin/promtail"

Binaries for macOS and Windows are also provided at the Releases page.

Docker

# modify tag to most recent version
$ docker pull grafana/promtail:v0.3.0

Helm

Make sure that Helm is installed and deployed to your cluster. Then you can add Loki's chart repository to Helm:

$ helm repo add loki https://grafana.github.io/loki/charts

And the chart repository can be updated by running:

$ helm repo update

Finally, Promtail can be deployed with:

$ helm upgrade --install promtail loki/promtail --set "loki.serviceName=loki"

Kubernetes

DaemonSet (Recommended)

A DaemonSet will deploy promtail on every node within a Kubernetes cluster.

The DaemonSet deployment is great to collect the logs of all containers within a cluster. It's the best solution for a single-tenant model.

---Daemonset.yaml
apiVersion: extensions/v1beta1
kind: Daemonset
metadata:
  name: promtail-daemonset
  ...
spec:
  ...
  template:
    spec:
      serviceAccount: SERVICE_ACCOUNT
      serviceAccountName: SERVICE_ACCOUNT
      volumes:
      - name: logs
        hostPath: HOST_PATH
      - name: promtail-config
        configMap
          name: promtail-configmap
      containers:
      - name: promtail-container
         args:
         - -config.file=/etc/promtail/promtail.yaml
         volumeMounts:
         - name: logs
            mountPath: MOUNT_PATH
         - name: promtail-config
            mountPath: /etc/promtail
  ...

---configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: promtail-config
  ...
data:
  promtail.yaml: YOUR CONFIG

---Clusterrole.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: promtail-clusterrole
rules:
  - apiGroups:
     resources:
     - nodes
     - services
     - pod
    verbs:
    - get
    - watch
    - list
---ServiceAccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: promtail-serviceaccount

---Rolebinding
apiVersion: rbac.authorization.k9s.io/v1
kind: ClusterRoleBinding
metadata:
  name: promtail-clusterrolebinding
subjects:
    - kind: ServiceAccount
       name: promtail-serviceaccount
roleRef:
    kind: ClusterRole
    name: promtail-clusterrole
    apiGroup: rbac.authorization.k8s.io

Sidecar

The Sidecar method deploys promtail as a sidecar container for a specific pod. In a multi-tenant environment, this enables teams to aggregate logs for specific pods and deployments.

---Deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: my_test_app
  ...
spec:
  ...
  template:
    spec:
      serviceAccount: SERVICE_ACCOUNT
      serviceAccountName: SERVICE_ACCOUNT
      volumes:
      - name: logs
        hostPath: HOST_PATH
      - name: promtail-config
        configMap
          name: promtail-configmap
      containers:
      - name: promtail-container
         args:
         - -config.file=/etc/promtail/promtail.yaml
         volumeMounts:
         - name: logs
            mountPath: MOUNT_PATH
         - name: promtail-config
            mountPath: /etc/promtail
      ...
  ...