Nachdem wir ja nun schon das Prometheus Setup installiert haben und das erste Dashboard erstellt haben, will ich euch heute zeigen wie man ein Synology NAS in das Monitoring aufnimmt.
Das ganzes werde ich in zwei Schritten machen: Datenexport vom NAS mittels Node Exporter und anschließend die Visualisierung der Metriken in Grafana.
Node Exporter als Docker Container
Da die Installation von Software auf einem NAS nicht immer ganz einfach ist, werden wir den Node Exporter als Docker Container auf dem NAS laufen lassen. Dazu habe ich ein ganz interessantes docker-compose File gefunden, welches ich gerne einfach übernehmen. Den Originalartikel dazu könnt ihr hier finden.
Eine ssh Verbindung zum NAS setzte ich mal als bekannt voraus. Wie man Docker installiert will ich aber nochmal kurz zusammenfassen.
Für die Installation von Docker muss das Frontend des Synology NAS aufgerufen werden. Hier wird anschließend die Paketverwaltung ausgeführt. Dort einfach nach dem Stichwort Docker suchen und auf den Installieren Button klicken.
Nach der erfolgreichen Installation von Docker, verbindet man sich wie ssh zum NAS und wechselt dort zum root User.
Über das Terminal wird eine neue Datei mit dem Namen docker-compose.yml angelegt und anschließend mit einem Editor geöffnet. In die Datei kopiert man dann den folgenden Inhalt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | version: '2.0' services: node-exporter: privileged: true image: prom/node-exporter volumes: - /proc:/host/proc:ro - /sys:/host/sys:ro - /:/rootfs:ro ports: - 9100:9100 restart: always command: - '--path.procfs=/host/proc' - '--path.sysfs=/host/sys' - --collector.filesystem.ignored-mount-points - "^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($$|/)" |
Nach dem speichern und schließen der Datei, kann man den Docker Container mit den folgenden Befehl starte:
1 | docker-compose up -d |
Um zu testen das alles richtig funktioniert, können wir die Metriken einmal im Browser aufrufen. Dafür einfach die IP-Adresse eingeben und um Port und Pfad ergänzen. (<ip-adresse>:9100/metrics)
Synology Metriken in Prometheus einbinden
Um das ganze in Prometheus einzubinden, müssen wir die prometheus.yml Datei erweitern. Dafür verbinden wir uns mittels ssh auf das System. Habt ihr Prometheus wie hier im Tutorial erklärt installiert, dann findet ihr die prometheus.yml unter /opt/prometheus.
Die Datei wird im Bereich scrape_configs um einen Job erweitert. Die Zeilen die hinzukommen sehen dann wie folgt aus:
1 2 3 4 | - job_name: 'synology' static_configs: - targets: ['192.168.10.24:9100'] |
Die ganze prometheus.yml Datei könnte dann wie folgt aussehen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | # my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: # - "first_rules.yml" # - "second_rules.yml" # A scrape configuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9100'] - job_name: 'synology' static_configs: - targets: ['192.168.10.24:9100'] |
Nachdem die Datei angepasst wurde, müssen wir Prometheus einmal neustart. Da ich noch keinen Systemctl Script dafür erstellt habe, starte ich die Applikation mit dem folgenden Befehl:
1 | ./prometheus --config.file=./prometheus.yml & |
Nun kann das Prometheus Interface im Browser aufgerufen werden (<ip-adresse>:9090).
Zum Kontrollieren, dass auch die Metriken ankommen, Suche ich mit dem folgenden Query einmal nach allen Metriken des Jobs synology.
1 | {job=~"synology"} |
Das Ergebnis sollte dann ungefähr so aussehen:
Beispiel Dashboard
Nachdem wir im letzten Abschnitt geprüft haben, dass die Synology Metriken in Prometheus zur Verfügung stehen, können wir nun mit diesen Metriken ein Dashboard bauen.
Ich habe einfach mal ein paar Metriken genommen und ein Beispiel zu gestalten. Ein Dashboard könnte dann wie folgt aussehen.
Uli meint
sehr gute Beschreibung – Vielen Dank!