From 72eb0f30a3dc067969ea478340f0a57e391a064c Mon Sep 17 00:00:00 2001 From: coesensbert Date: Wed, 19 Jun 2024 14:55:41 +0200 Subject: [PATCH] scripts for loki clients --- loki-docker-logs.sh | 22 +++++++++++++++ loki-system-logs.sh | 68 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 loki-docker-logs.sh create mode 100644 loki-system-logs.sh diff --git a/loki-docker-logs.sh b/loki-docker-logs.sh new file mode 100644 index 0000000..dcb2fbf --- /dev/null +++ b/loki-docker-logs.sh @@ -0,0 +1,22 @@ +#!/bin/sh -e +# This script will setup docker to push all newly created container logs to https://int.loki.grid.tf +# NOTE: existing containers will need to be recreated to send their logs to Loki + +### Install docker plugin +docker plugin install grafana/loki-docker-driver:2.9.2 --alias loki --grant-all-permissions + +### Edit docker daemon config file +cat << EOF > /etc/docker/daemon.json +{ + "debug" : true, + "log-driver": "loki", + "log-opts": { + "loki-url": "https://int.loki.grid.tf/loki/api/v1/push", + "loki-batch-size": "400" + } +} +EOF + +### Restart docker +systemctl restart docker +echo "Don't forget to recreate all containers that should send their logs to Loki! This config does not apply to existing containers" diff --git a/loki-system-logs.sh b/loki-system-logs.sh new file mode 100644 index 0000000..dde90b0 --- /dev/null +++ b/loki-system-logs.sh @@ -0,0 +1,68 @@ +#/bin/bash +# This script will setup Promtail to push to https://int.loki.grid.tf + +### Install Promtail +mkdir -p /etc/apt/keyrings/ +wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor > /etc/apt/keyrings/grafana.gpg +echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | tee /etc/apt/sources.list.d/grafana.list +apt update && apt install promtail -y +usermod -a -G adm promtail + +### Set config +cat << EOF > /etc/promtail/config.yml +server: + http_listen_port: 9080 + grpc_listen_port: 0 + +positions: + filename: /tmp/positions.yaml + +clients: +- url: https://int.loki.grid.tf/loki/api/v1/push + +scrape_configs: +- job_name: system + static_configs: + - targets: + - localhost + labels: + host: ${HOSTNAME} + job: varlogs + __path__: /var/log/*log +- job_name: journal + journal: + json: false + max_age: 24h + path: /var/log/journal + labels: + host: ${HOSTNAME} + job: systemd-journal + relabel_configs: + - source_labels: ['__journal__systemd_unit'] + target_label: 'unit' +EOF + +### Edit service +cat << EOF > /etc/systemd/system/promtail.service +[Unit] +Description=Promtail service +After=network.target + +[Service] +Type=simple +User=promtail +Environment="HOSTNAME=%H" +ExecStart=/usr/bin/promtail -config.file /etc/promtail/config.yml -config.expand-env=true +# Give a reasonable amount of time for promtail to start up/shut down +TimeoutSec = 60 +Restart = on-failure +RestartSec = 2 + +[Install] +WantedBy=multi-user.target +EOF + +### Reload and restart +systemctl daemon-reload +systemctl restart promtail +systemctl status promtail