Monitoring

Ein kurzes Tutorial für die Einrichtung eines Open Source Monitoring Systems.
Juni 27, 2022 Translations: 

Ein funktionierendes Monitoring ist für ein ordentliches Homelab ein Muss. In diesem Blog Artikel sowie im Video erkläre ich die Grundlagen eines Monitoringsystems auf der Basis von Grafana, Prometheus und MQTT.

Diese Installation ist nur ein Beispiel und ist so nicht produktionsreif!


Grafana installieren

Es ist empfehlenswert hierfür die ffizielle Dokumentation zu beachten. Die grundlegenden Schritte werden im Folgenden kurz erläutert.

Dependencies installieren

sudo apt install -y apt-transport-https
sudo apt install -y software-properties-common wget

GPG Key hinzufügen

wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -

Apt source hinzufügen

echo "deb https://packages.grafana.com/enterprise/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

Installation durchführen

sudo apt update
sudo apt install grafana-enterprise

Dienst aktivieren

sudo systemctl enable --now grafana-server

Grafana MQTT datasource builden

Dieser Schritt ist nicht mehr notwendig, da die Datasource inzwischen offiziell verfügbar ist!

Der ursprüngliche Prozess ist in einem GitHub Issue beschrieben

Go installieren

wget -O -https://raw.githubusercontent.com/mauleyzaola/scripts/master/go/go.install.sh | sh
source ~/.bashrc

Mage installieren

sudo apt install git
git clone https://github.com/magefile/mage
cd mage
go run bootstrap.go

Node.js installieren

curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install -y nodejs

Yarn aktivieren

sudo corepack enable

Pluginkonfiguration in Grafana anpassen

sudo nano /etc/grafana/grafana.ini

Diese Variablen anpassen:

plugins = /var/lib/grafana/plugins
allow_loading_unsigned_plugins = grafana-mqtt-datasource

Plugin Ordner erstellen

mkdir /var/lib/grafana/plugins

MQTT Datasource builden

cd /var/lib/grafana/plugins
git clone https://github.com/grafana/mqtt-datasource.git
cd mqtt-datasource
yarn add @grafana/toolkit
yarn build
yarn install

Grafana neu starten

sudo systemctl restart grafana-server

Mosquitto installieren und konfigurieren

Installation

sudo apt install mosquitto

Mosquitto konfigurieren

Konfigurationsdatei erstellen

sudo nano /etc/mosquitto/conf.d/mosquitto.conf

Konfiguration einfügen:

listener 1883 0.0.0.0
log_dest syslog
log_dest stdout
log_dest topic
log_type error
log_type warning
log_type notice
log_type information
connection_messages true
log_timestamp true
allow_anonymous false
password_file /etc/mosquitto/pwfile

Passwortdatei anlegen

sudo nano /etc/mosquitto/pwfile

In dieser Datei müssen Nutzer nach dem Schema <username>:<password> angelegt werden.

Passwortdatei hashen

sudo mosquitto_passwd -U /etc/mosquitto/pwfile

Mosquitto Dienst starten

sudo systemctl enable --now mosquitto

Prometheus installieren und konfigurieren

Service Account anlegen

Es empfiehlt sich für Prometheus einen unprivilegierten Serviceaccount anzulegen.

sudo adduser prometheus
sudo su - prometheus

Prometheus herunterladen und entpacken

wget https://github.com/prometheus/prometheus/releases/download/v2.36.0/prometheus-2.36.0.linux-amd64.tar.gz
tar -xzvf prometheus-2.36.0.linux-amd64.tar.gz
mv prometheus-2.36.0.linux-amd64/ prometheus/

Prometheus Dienst erstellen

Die folgenden Schritte müssen wieder mit einem Admin Account durchgeführt werden.

sudo nano /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus Server
After=network-online.target

[Service]
User=prometheus
Restart=on-failure
ExecStart=/home/prometheus/prometheus/prometheus \
--config.file=/home/prometheus/prometheus/prometheus.yml \
--storage.tsdb.path=/home/prometheus/prometheus/data

[Install]
WantedBy=multi-user.target

Prometheus Dienst starten

sudo systemctl enable --now prometheus

Node Exporter installieren

Auch hier empfiehlt es sich, einen Serviceaccount anzulegen. Das Vorgehen dafür ist dasselbe wie bei Prometheus.

Node Exporter installieren

wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
tar -xzvf node_exporter-1.3.1.linux-amd64.tar.gz
mv node_exporter-1.3.1.linux-amd64/ node_exporter/

Node Exporter Dienst erstellen

sudo nano /etc/systemd/system/node-exporter.service
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
ExecStart=/home/prometheus/node_exporter/node_exporter

[Install]
WantedBy=default.target

Node Exporter Dienst starten

sudo systemctl enable --now node node-exporter

Node Exporter zu Prometheus hinzufügen

Die Konfigurationsdatei befindet sich im prometheus Ordner des Prometheus Service Accounts.

nano prometheus.yaml

Diese Konfiguration muss bei den Jobkonfigurationen angefügt werden.

- job_name: 'node_exporter'
  static_configs:
   - targets: ['localhost:9100']

Prometheus neu starten

sudo systemctl restart prometheus

Fertig!