SNMP fähige Geräte in einer Monitoring Lösung darzustellen ist recht einfach wenn die Community oder die V3 Credentials bekannt sind.
Beispiel: Openitcockpit und 1 Switch
Soweit ok. Frage wäre aber: Wie geht es mit SNMP in Prometheus.
Lösung: Der SNMP_Exporter!
Was wir dazu brauchen:
- Prometheus
- SNMP Exporter
- SNMP Exporter Config Generator
- Grafana
- MIB von der QNAP NAS
- Laufendes SNMP auf dem Prometheus Server
Nachdem Prometheus installiert ist, wird das GO Binary vom SNMP Exporter ebenfalls installiert.
Der Exporter kann nun mit einer einfachen Beispielconfig (der sog. snmp.yml) gestartet werden und lauscht
default auf Port 9116 unseres Prometheus Servers
Damit läuft schon mal händisch der SNMP Exporter. Der Trick besteht jetzt darin ein Config-File für den Exporter zu bauen, was
die Werte der NAS auslesen und interpretieren kann!
Dazu nutzen wir den SNMP Exporter Config Generator. Nach der Installation liegt dieser in einem Unterordner vom SNMP_Exporter!
Dieser nutzt zum Aufruf die Syntax ./generator generate! Als Template wird dabei die hier gespeicherter Datei generator.yml genutzt!
BEVOR wir hier starten müssen wir 2 DINGE machen:
- MIB File von der NAS downloaden und im Ordner mibs speichern (MIB gibt es in der Sektion SNMP auf der NAS)
- generator.yml anpassen!
Beispiel: generator.yml mit SNMP v2c community am Ende!
Wir jetzt der Generator gestartet erzeugt dieser im gleichen Ordner eine snmp.yml!
/pfad/zu/snmp_exporter –config.file /pfad/zu/snmp.yml –log.level warn –web.listen-address IP-Prometheus:9116
Der SNMP Exporter sollte nun bei Aufruf von der IP der NAS Dose mit Metric “qnap” was auslesen (Achtung: Der Abruf dauert 20-40 Sekunden)!
SEHR gut! Was wir jetzt noch benötigen ist dieser Port :9116 als Prometheus TARGET damit wir das ganze in Grafana auch nutzen können!
Wir passen also die prometheus.yml an um ein neues Target.
- job_name: ‘qnapsnmp’
- scrape_interval: 2m
- scrape_timeout: 2m
- static_configs:
- targets: [‘NAS-IP’] # SNMP device.
- metrics_path: /snmp
- params:
- module: [qnap]
- relabel_configs:
- source_labels: [module]
target_label: __param_module - source_labels: [address]
target_label: __param_target - target_label: address
replacement: PROMETHEUS-IP:9116 # SNMP exporter.
- source_labels: [module]
WICHTIG: Das Scrape_Interval sollte deutlich länger gewählt werden als default 10 oder 30 sekunden wie sonst in der Global Sektion der prometheus.yml!
Haben wir alles richtig eingetragen und gespeichert überprüfen wir kurz die Syntax der Prometheus Config auf Fehler:
promtool check config /etc/prometheus/prometheus.yml
Fein. Wird jetzt der Prometheus Service neu gestartet sollte ein neues Target auftauchen:
Prima:
Das ganze jetzt nur noch als Datenquelle in Grafana nutzen und nette Dashboards aus den Werten bauen welchen wir in der SNMP.yml wiederfinden:
TIP:
Damit das ganze auch Reboot fähig wird sollte neben Prometheus ebenfalls der SNMP-Exporter als Service dauerhaft in der Installation laufen!