# ffdo Status Setup unter Linux Hier wird beschrieben wie ein ffdo Status System mit [nodes2grafana](README.md) 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](https://ubuntu.com) System. Andere [Debian](https://www.debian.org/) basierte Systeme sind sehr ähnlich und Distributionen mit rpm Nutzung sind ähnlich. ## Installation benötigter Programme ### Werkzeuge zum Erstellen von nodes2grafana 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 ### Services für den Betrieb von nodes2grafana Installation der für einen Status-Dienst nötigen Services: sudo apt -y install prometheus prometheus-node-exporter grafana ## nodes2grafana bauen 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](https://git.ffdo.de/altlast/nodes2grafana/archive/master.tar.gz) 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 ## nodes2grafana installieren Installation von nodes2grafana: sudo mv conf/substitutions.conf.local /etc/nodes2grafana.conf sudo make install ## Betrieb Nach der Installation von nodes2grafana kann nun der Status-Dienst in Betrieb genommen werden. ### prometheus-node-exporter anpassen 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 . ### prometheus Installation anpassen 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: - , - , - . ### grafana Installation anpassen 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](http://docs.grafana.org/features/datasources/prometheus/). Grafana aufrufen: . Dann als 'admin' einloggen, Password 'admin'. Anschließend unter 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.