Hier wird beschrieben wie ein ffdo Status System mit nodes2grafana auf GNU/Linux aufgesetzt werden kann. Im Folgenden werden vorwiegend die Schritte beschrieben, die sich von der Installation auf anderen Betriebssystemen unterscheiden.
Als Basis dient ein Ubuntu System. Andere Debian basierte Systeme sind sehr ähnlich und Distributionen mit rpm Nutzung sind ähnlich.
nodes2grafana wird lokal gebaut.
Mit dem Programm git kann man den Quellcode von nodes2grafana kopieren.
Installieren von git:
sudo apt-get -y install git
Die Basis der Entwicklung ist das Meta Paket build-essential:
sudo apt-get -y install build-essential
(Es darf ggf. auch etwas weniger sein: sudo apt-get -y install make xz-utils
reicht.)
Zum Kompilieren wird schließlich noch smlnj benötigt:
sudo apt-get -y install smlnj ml-lpt
Installation der für einen Status-Dienst nötigen Services:
sudo apt -y install prometheus prometheus-node-exporter grafana
nodes2grafana wird lokal gebaut. Dazu muss der Quellcode geladen und übersetzt werden.
Laden des nodes2grafana Quellcodes mit git:
git clone https://git.ffdo.de/altlast/nodes2grafana.git
Alternativ kann man auch das bereits vorhandene wget oder curl verwenden um den Quellcode von nodes2grafana als Paket zu laden. Das Paket muss anschließend entpackt werden.
Konfigurieren und Übersetzen des Programms:
cd nodes2grafana
make -C conf
cp conf/substitutions.conf.default conf/substitutions.conf.local
vi conf/substitutions.conf.local
make -C conf && make
Installation von nodes2grafana:
sudo mv conf/substitutions.conf.local /etc/nodes2grafana.conf
sudo make install
Nach der Installation von nodes2grafana kann nun der Status-Dienst in Betrieb genommen werden.
Zuerst prüfen, ob schon ein node_exporter läuft:
netstat -l -n | grep :9100
und/oder
systemctl status prometheus-node-exporter.service
Die default Startparameter in /etc/default/prometheus-node-exporter
sind ausreichend. Eine angepasste, minimalistische Start-Konfiguration sähe zB so aus:
# Set the command-line arguments to pass to the server.
ARGS="-web.listen-address=localhost:9100 \
-collectors.enabled=textfile \
-collector.textfile.directory=/var/lib/prometheus/node-exporter"
Also ggf.
sudo vi /etc/default/prometheus-node-exporter
sowie anschließend
sudo systemctl restart prometheus-node-exporter.service
Einen kleinen Test, ob der node_export soweit gut aussieht, bekommt man dann auf der Seite http://localhost:9100/metric.
Zunächst kann man bei Bedarf die Standard Startparameter anpassen:
sudo vi /etc/default/prometheus
Das ist zB dann nötig, wenn die eingesammelten Zeitreihen länger oder kürzer gespeichert werden sollen als der default von 15 Tagen (s. -storage.local.retention). Oder wenn der hostname
des OS nicht zu einer IP-Adresse aufgelöst werden kann, zB weil er keinen A record im DNS hat, dann die IP Adresse bei -web.external-url setzen. Beispiel:
# Set the command-line arguments to pass to the server.
ARGS="-storage.local.retention 24h0m0s \
-web.external-url http://31.172.33.14:9090/"
Wenn man etwas geändert hat:
sudo systemctl restart prometheus.service
Die Konfigurationsdatei /etc/prometheus/prometheus.yml passt soweit. Denn sie enthält bereits einen Eintrag, um den lokalen node_exporter zu scrapen:
- job_name: node
# If prometheus-node-exporter is installed, grab stats about the local
# machine by default.
static_configs:
- targets: ['localhost:9100']
Wenn man doch noch etwas an der Konfiguration ändern möchte:
sudo vi /etc/prometheus/prometheus.yml
sowie anschließend die Konfiguration (neu) laden:
sudo systemctl reload prometheus.service
Einen kleinen Test, ob prometheus soweit gut aussieht, bekommt man dann auf den Seiten:
Abschließend ist die grafana Konfiguration anzupassen:
sudo vi /etc/grafana/grafana.ini
Hiermit wird der anonyme Lesezugriff ermöglicht:
#################################### Anonymous Auth ##########################
[auth.anonymous]
# enable anonymous access
;enabled = false
enabled = true
# specify organization name that should be used for unauthenticated users
;org_name = Main Org.
org_name = ffdo
# specify role for unauthenticated users
;org_role = Viewer
org_role = Viewer
So ziemlich am Ende sind zwei Zeilen anzupassen um de vordefinierten Übersichten in grafana bekannt zu machen:
...
;#################################### Dashboard JSON files ##########################
[dashboards.json]
enabled = true
path = /var/lib/grafana/dashboards
Das Verzeichnis /var/lib/grafana/dashboards sollte bei der Installation von nodes2grafana bereits angelegt und gefüllt worden sein. Ansonsten muss man das per Hand machen:
sudo mkdir /var/lib/grafana/dashboards
sudo cp -p dashboards/FF-DO-status*.json /var/lib/grafana/dashboards/
sudo chown -R grafana:grafana /var/lib/grafana/dashboards
Jetzt ist der grafana Service neu zu starten:
sudo systemctl restart grafana.service
Nun muss noch in grafana als Datenquelle der lokale prometheus Service eintragen werden. Eine detaillierte Anleitung gibt es auch unter prometheus.
Grafana aufrufen: http://localhost:3000/.
Dann als 'admin' einloggen, Password 'admin'.
Anschließend unter http://localhost:3000/datasources eine neue Datenquelle hinzufügen:
Name: prometheus-local (beliebig)
Default: aktiviert
Type: Prometheus
Url: http://localhost:9090
Access: direct
(Falls nur grafana, nicht aber prometheus auf einer öffentlich erreichbaren IP-Adresse lauscht, dann darf hier nicht direct
gewählt werden, sondern proxy
.)
Auf 'Add' klicken.
Dabei auf Fehlermeldungen achten, und bei grünem Licht (Datasource OK) die FF-DO-Dashboards ausprobieren.