Monitoring
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-httpssudo apt install -y software-properties-common wgetGPG 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.listInstallation durchführen
sudo apt update
sudo apt install grafana-enterpriseDienst aktivieren
sudo systemctl enable --now grafana-serverGrafana 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 | shsource ~/.bashrcMage installieren
sudo apt install gitgit clone https://github.com/magefile/magecd magego run bootstrap.goNode.js installieren
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -sudo apt install -y nodejsYarn aktivieren
sudo corepack enablePluginkonfiguration in Grafana anpassen
sudo nano /etc/grafana/grafana.iniDiese Variablen anpassen:
plugins = /var/lib/grafana/plugins
allow_loading_unsigned_plugins = grafana-mqtt-datasourcePlugin Ordner erstellen
mkdir /var/lib/grafana/pluginsMQTT Datasource builden
cd /var/lib/grafana/pluginsgit clone https://github.com/grafana/mqtt-datasource.gitcd mqtt-datasourceyarn add @grafana/toolkityarn buildyarn installGrafana neu starten
sudo systemctl restart grafana-serverMosquitto installieren und konfigurieren
Installation
sudo apt install mosquittoMosquitto konfigurieren
Konfigurationsdatei erstellen
sudo nano /etc/mosquitto/conf.d/mosquitto.confKonfiguration 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/pwfilePasswortdatei anlegen
sudo nano /etc/mosquitto/pwfileIn dieser Datei müssen Nutzer nach dem Schema <username>:<password> angelegt werden.
Passwortdatei hashen
sudo mosquitto_passwd -U /etc/mosquitto/pwfileMosquitto Dienst starten
sudo systemctl enable --now mosquittoPrometheus installieren und konfigurieren
Service Account anlegen
Es empfiehlt sich für Prometheus einen unprivilegierten Serviceaccount anzulegen.
sudo adduser prometheussudo su - prometheusPrometheus herunterladen und entpacken
wget https://github.com/prometheus/prometheus/releases/download/v2.36.0/prometheus-2.36.0.linux-amd64.tar.gztar -xzvf prometheus-2.36.0.linux-amd64.tar.gzmv 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.targetPrometheus Dienst starten
sudo systemctl enable --now prometheusNode 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.gztar -xzvf node_exporter-1.3.1.linux-amd64.tar.gzmv 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.targetNode Exporter Dienst starten
sudo systemctl enable --now node node-exporterNode Exporter zu Prometheus hinzufügen
Die Konfigurationsdatei befindet sich im prometheus Ordner des Prometheus Service Accounts.
nano prometheus.yamlDiese Konfiguration muss bei den Jobkonfigurationen angefügt werden.
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100']Prometheus neu starten
sudo systemctl restart prometheusFertig!