4 Minuten
Start mit Grafana und Loki
Grafana beschreibt Loki folgendermaßen:
Loki: like Prometheus, but for logs. Loki is a horizontally-scalable, highly-available, multi-tenant log aggregation system inspired by Prometheus. It is designed to be very cost effective and easy to operate. It does not index the contents of the logs, but rather a set of labels for each log stream.
Mit anderen Worten: Loki ist eine Server-Applikation speziell zur sammlung und Aggregation von Log-Daten mit Fokus auf Hochverfügbarkeit und Skalierbarkeit. Um im Gegensatz zu seinen Konkurrenten wirklich einfach zu installieren und enorm Resourcen-Effizient.
Einen Vergleich mit Elastic, Greylog und Co wird es auch noch geben. In diesem Artikel soll es aber vor allem erstmal darum gehen, wie man ein Loki Setup schnell und einfach installiert.
Das Setup
Neben Loki als Log-Server brauchen wir noch zwei weitere Tools: Grafana und Promtail. Grafana ist das weit bekannte Visualisierungs-Tool von dem gleichnamigen Hersteller. Promtail ist ein Log-Daten-Lieferant. Als Agent wird dieser genau dort installiert, wo die Log-Daten erstehen. Promtail ließt dann die gewünschten Logfiles aus und sendet den Inhalt an Loki.
Hier noch einmal eine Übersicht:
Name | Version | Docs |
---|---|---|
Grafana | v6.4.4 | https://grafana.com/docs/ |
Loki | v1.0.0 | https://github.com/grafana/loki/tree/master/docs |
Promtail | v1.0.0 | https://github.com/grafana/loki/blob/master/docs/clients/promtail/README.md |
Die Installation von Grafana werde ich in dem Artikel hier nicht beschreiben, da es dafür eine exzellente Dokumentation und Anleitung von Grafana selbst gibt.
Installation Loki
Loki ist eine in Go geschriebene Software und dadurch denkbar einfach zu installieren. Dazu müssen wir die Binaries runterladen, entpacken und einfach starten. Zunächst laden wir die Binary herunter.
mkdir /opt/loki/ && cd /opt/loki/
wget https://github.com/grafana/loki/releases/download/v1.0.0/loki-linux-amd64.gz
gunzip loki-linux-amd64.gz
chmod a+x loki-linux-amd64
Nun legen wir noch die Basis Konfiguration in die /opt/loki/config.yaml
dazu.
auth_enabled: false
server:
http_listen_port: 3100
ingester:
lifecycler:
address: 127.0.0.1
ring:
kvstore:
store: inmemory
replication_factor: 1
final_sleep: 0s
chunk_idle_period: 5m
chunk_retain_period: 30s
schema_config:
configs:
- from: 2018-04-15
store: boltdb
object_store: filesystem
schema: v9
index:
prefix: index_
period: 168h
storage_config:
boltdb:
directory: /tmp/loki/index
filesystem:
directory: /tmp/loki/chunks
limits_config:
enforce_metric_name: false
reject_old_samples: true
reject_old_samples_max_age: 168h
chunk_store_config:
max_look_back_period: 0
table_manager:
chunk_tables_provisioning:
inactive_read_throughput: 0
inactive_write_throughput: 0
provisioned_read_throughput: 0
provisioned_write_throughput: 0
index_tables_provisioning:
inactive_read_throughput: 0
inactive_write_throughput: 0
provisioned_read_throughput: 0
provisioned_write_throughput: 0
retention_deletes_enabled: false
retention_period: 0
Eine genau Beschreibung darüber was die Konfiguration im einzelnen macht, lässt sich am besten der Dokumentation entnehmen. Zusammengefasst starten wir hier einen Loki Server, der auf Port 3100
lauscht. Die Log-Daten werden von Loki auf dem Filesystem gespeichert und indiziert. Wer ein solches Setup produktiv verwenden möchte sollte darauf achten nicht /tmp/ als Directory zu verwenden, da dieser Ordner nach einem Neustart der Node wieder leer ist.
Damit ist Loki jetzt schon einsatzbereit. Mit dem folgenden Kommando lässt sich der Server einfach starten:
/opt/loki/loki-linux-amd64 -config.file /opt/loki/config.yaml
Ein Beispiel für eine Systemd Unit findet sich hier:
[Unit]
Description=Like Prometheus, but for logs.
Documentation=https://github.com/grafana/loki
[Service]
ExecStart=/opt/loki/loki-linux-amd64 -config.file /opt/loki/config.yaml
[Install]
WantedBy=multi-user.target
Installation Promtail
Promtail ist ein Agent, der die Log-Daten für Loki bereitstellt und an Loki sendet. Die Inhalte der Logfiles können durch Promtail gelabelt, manipuliert und restrukturiert werden.
Promtail ist genauso einfach zu installieren, wie Loki.
mkdir /opt/promtail/ && cd /opt/promtail/
wget https://github.com/grafana/loki/releases/download/v1.0.0/promtail-linux-amd64.gz
gunzip promtail-linux-amd64.gz
chmod a+x promtail-linux-amd64
Auch Promtail will ein wenig konfiguriert werden. Deswegen legen wir noch eine /opt/promtail/config.yaml
dazu.
# Promtail Server Config
server:
http_listen_port: 9080
grpc_listen_port: 0
# Positions
positions:
filename: /tmp/positions.yaml
# Loki Server URL
clients:
- url: http://localhost:3100/loki/api/v1/push
scrape_configs:
- job_name: syslog
static_configs:
- targets:
- localhost
labels:
job: syslog
host: localhost
__path__: /var/log/syslog
Die wichtigste Konfiguration hier ist der Abschnitt scrape_configs. Hier legen wir fest, welche Logfiles gelesen und berücksichtigt werden sollen. Die Manipulation von Logeingrägen lässt sich in den pipeline_stages realisieren.
In unserem Beispiel lesen wir einfach die syslog aus und senden diesen unverändert an Loki.
Starten lässt sich Promtail nun via Konsole mit
/opt/promtail/promtail-linux-amd64 -config.file /opt/promtail/config.yaml
oder mit Systemd
[Unit]
Description=Promtail
Documentation=https://github.com/grafana/loki
[Service]
ExecStart=/opt/promtail/promtail-linux-amd64 -config.file /opt/promtail/config.yaml
[Install]
WantedBy=multi-user.target
Ab diesem Moment sollten bereits Logdaten in Loki reinlaufen. In Grafana fügen wir Loki nun als Datasource hinzu und können im Explorer die Logfiles beobachten, aggregieren und filtern.
Fazit
Die Inbetriebnahme von Loki ist einfach einfach. Ohne weitere Abhängigkeiten, wie Java oder Python, lässt sich mit Loki ein stabiler, schneller und resourcensparender Log-Server installieren, der eine ganze Bandbreite an Data-Backends unterstützt und gut mit existierendem Tooling zusammenarbeitet. Sowohl Loki, als auch der Agent Promtail sind effizient und einfach konfiguriert. Zusätzlich gibt es fertige Binaries für Linus, macOS, Windows und diverse Chip-Architekturen. Interessant wird es vor allem aber für Kubernetes Betreiber, denn das ist eigentlich die Zielgruppe von Loki.
In einem weiteren Artikel werde ich zeigen, was Loki im Detail kann und wie Loki im Vergleich zu seinen beliebtesten Konkurrenten steht.