Prometheus ist installiert, jetzt beginnen wir damit Metriken von Systemen zu sammeln und zu speichern.
Auf GitHub kopieren wir uns den Link zur aktuellen Version des node_exporters für ARM64 Linux (https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-arm64.tar.gz)
Die Installation erfolgt mit eurem normalen Benutzer, da im Standard die Anmeldung mit root nicht gestattet ist.
1
2
3
4
| sudo mkdir /opt/node_exporter
cd /opt/node_exporter/
sudo wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-arm64.tar.gz
sudo tar xvfz node_exporter-1.6.1.linux-arm64.tar.gz
|
Um ein weiteres Unterverzeichnis mit der Versionsnummer im Namen zu vermeiden, verschieben wir die Inhalte des entpackten Archivs eine Ebene nach oben und löschen anschließend das heruntergeladene Archiv und den durch das Entpacken entstandene dazugehörigen Ordner.
1
2
3
| sudo mv node_exporter-1.6.1.linux-arm64/* .
sudo rm -r node_exporter-1.6.1.linux-arm64
sudo rm node_exporter-1.6.1.linux-arm64.tar.gz
|
Systemdienst / Autostart
Neue Datei anlegen
1
| sudo nano /etc/systemd/system/node_exporter.service
|
Wenn der Exporter nur auf eine bestimmte IP oder einen anderen Port hören soll, kann dies als Parameter bei ExecStart=… ergänzt werden: –web.listen-address=10.9.99.10:9100
1
2
3
4
5
6
7
8
9
10
| [Unit]
Description=Node Exporter
[Service]
User=root
Group=root
ExecStart=/opt/node_exporter/node_exporter
[Install]
WantedBy=multi-user.target
|
Speichern und schließen mit
Win: STRG+O, ENTER, STRG+X
Mac: CONTROL+O, ENTER, CONTROL+X
Anschließend neue Datei laden, Dienst starten, Autostart aktivieren und Status prüfen
1
2
3
4
| sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter
sudo systemctl status node_exporter
|
Jetzt tragen wir diesen Exporter in der Konfiguration unseres Prometheus ein.
Sollte Prometheus auf einer anderen Umgebung installiert sein müssen wir uns auf dieser Anmelden.
Prometheus docker-compose.yml ergänzen
Prometheus läuft in einem Docker Container und es soll das Host System abgefragt werden - dieser Schritt kann übersprungen werden wenn ein externes System abgefragt werden soll und nicht der Docker Host.
Wir wollen mit Prometheus Daten vom Host-System sammeln, auf dem Docker installiert ist. “localhost” verweist aber innerhalb von Docker auf den Container selbst. Die “extra_hosts”-Angabe sorgt dafür, dass wir im Prometheus-Container über die Adresse “host.docker.internal” das Host-System erreichen.
Dazu muss in der docker-compose.yml folgendes ergänzt werden:
1
2
| extra_hosts:
- "host.docker.internal:host-gateway"
|
Wenn es nach unserer Anleitung installiert wurde, sieht eure docker-compose.yml jetzt so aus:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| version: '3.2'
services:
prometheus:
container_name: prometheus
hostname: prometheus
image: prom/prometheus
restart: unless-stopped
ports:
- "9090:9090"
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- ./data:/etc/prometheus
- prometheus-data:/prometheus
volumes:
prometheus-data:
name: prometheus-data
|
Speichern und schließen mit
Win: STRG+O, ENTER, STRG+X
Mac: CONTROL+O, ENTER, CONTROL+X
Den Container neu starten:
1
2
| sudo docker compose down
sudo docker compose up -d
|
Prometheus Konfiguration anpassen
In der “prometheus.yml” muss folgendes ergänzt werden:
Docker Host lokal abfragen:
1
2
3
4
| scrape_configs:
- job_name: "NAME_EINTRAGEN"
static_configs:
- targets: ['host.docker.internal:9100']
|
Externes System abfragen:
1
2
3
4
| scrape_configs:
- job_name: "NAME_EINTRAGEN"
static_configs:
- targets: ["IP_NODE_EXPORTER:9100"]
|