Promtail est un agent. Il scrute les fichiers de logs et communique les changements à la base Loki.
Télécharger l'image Docker:
docker image pull grafana/promtail:2.3.0
Fichier de configuration
server: http_listen_port: 9080 grpc_listen_port: 0 positions: filename: /tmp/positions.yaml clients: - url: http://loki:3100/loki/api/v1/push scrape_configs: - job_name: system static_configs: - targets: - localhost labels: job: varlogs __path__: /var/log/*log
Depuis les versions 1.6 les images sont configurées pour s'executer avec l'UID 1001. Si l'utilisateur a un UID différents il peut spécifier l'UID a utiliser via l'argument --user de la commande docker run.
docker run -v $(pwd):/mnt/config -v /var/log:/var/log grafana/promtail:2.3.0 -config.file=/mnt/config/promtail-config.yaml
Le pipeline est le processus permettant de transformer les données entrantes dans promtail avant leur injection dans Loki. Le pipeline peut agir sur l'enregistrement, les labels et le timestamp associé. Un pipeline se compose d'étapes successives (stages):
D'ordinaire le pipeline commence avec une étape d'analyse basée sur une regex pour extraire les données de la ligne. Puis une série étapes de type action comme la création de labels
On souhaite utiliser promtail pour injecter le journal d'événement produit par UFW. Les logs d'UFW sont de la forme:
Jan 22 18:56:24 localhost kernel: [29221.074606] [UFW BLOCK] IN= OUT=veth4db71c3 SRC=fe80:0000:0000:0000:c0dc:0eff:feee:01b7 DST=ff02:0000:0000:0000:0000:0000:0000:00fb LEN=93 TC=0 HOPLIMIT=255 FLOWLBL=922644 PROTO=UDP SPT=5353 DPT=5353 LEN=53 Jan 22 19:23:11 localhost kernel: [30828.656403] [UFW ALLOW] IN= OUT=br_webmon SRC=192.168.101.1 DST=192.168.101.7 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=63526 DF PROTO=TCP SPT=35150 DPT=443 WINDOW=64240 RES=0x00 SYN URGP=0
On cherche ici à produire un label du type action=“ALLOW” à partir d'une ligne de log contenant le texte [UFW ALLOW] ou action=“BLOCK” à partir d'une ligne contenant [UFW BLOCK].
Après modification du fichier de configuration pour ajouter un pipeline, le redémarrage du service promtail échoue, le message d'erreur retourné:
romtail_1 | level=error ts=2022-01-22T20:25:00.288750107Z caller=main.go:115 msg="error creating promtail" error="failed to make file target manager: pipeline stage must contain only one key"