Archiv des Autors: hermann

Mit Hilfe von prometheus Daten sammeln

Neben dem zuvor erstellen collectd lassen sich mit Hilfe von Prometheus weitere Daten aus der Fritzbox sammeln, die über Grafana ausgegeben werden können. Zunächst Prometheus installieren.

apt-get install prometheus

Prometheus dient dazu die Daten abzurufen, jedoch werden für die verschiedenen Systeme Exporter benötigt.

Für den hier verwendeten Exporter wird docker und go benötigt, beides wurde nach den folgenden Anleitungen installiert.

Docker: https://docs.docker.com/engine/install/debian/

Go: https://phoenixnap.com/kb/debian-install-go

Für den Export der Daten kommt der Fritzbox_Exporter zum Einsatz, der nach der Anleitung von https://github.com/sberk42/fritzbox_exporter installiert wurde.

Bei der Installation das Exporters mit go install github.com/sberk42/fritzbox_exporter@latest  docker build --tag fritzbox-prometheus-exporter:latest . kam es zu einem Fehler. Die Installation konnte mit docker build --tag fritzbox-prometheus-exporter:latest go/pkg/mod/github.com/sberk42/fritzbox_exporter@v0.0.0-20230106183717-d39a1d30d4cf fortgesetzt werden.

Zugriff auf die Fritzbox

Für den Zugriff auf die Fritzbox über den Exporter, muss zunächst ein Benutzer angelegt werden. Die Einrichtung erfolgt unter System => Fritzbox Benutzer, der Benutzer benötigt das Recht das Einstellungen eingesehen werden können.

Nach der Einrichtung kann der Exporter gestartet werden.

docker run -e 'USERNAME=Benutzername' \
    -e 'PASSWORD=Kennwort' \
    -e 'GATEWAY_URL="http://192.168.178.1:49000"' \
    -e 'LISTEN_ADDRESS="0.0.0.0:9042"' \
    -p 9042:9042 \
    fritzbox-prometheus-exporter:latest

Exporter in prometheus hinterlegen

In der Datei  /etc/prometheus/prometheus.yml wird der Exporter wie folgt hinterlegt:

- job_name: fritzbox

    static_configs:

      - targets: ['ipadresse:9042']

Ob der Exporter erfolgreich im prometheus eingerichtet wurde, kann innerhalb des prometheus unter Status => Targes geprüft werden.

Jetzt muss nur noch im Grafana das Dashboard https://grafana.com/grafana/dashboards/12579-fritz-box-status/ importiert werden und als Datenquelle prometheus auswählen.

Erste Daten in Grafana

Nachdem wie im vorherigen Artikel beschrieben Grafana installiert wurde, kam die Frage auf „und jetzt?“ Welche Datenquellen gibt es im Haus die man dort einbinden könnte. Die erste Wahl viel auf die Fritzbox.

Für die Abfrage der Daten und das Speichern der Informationen in der influxdb habe ich mich für collectd entschieden. Die benötigten Pakte wurden mit folgenden Befehlen als root installiert:

apt-get install -y python3-pip
apt-get install -y libxml2-dev libxslt1-dev
apt-get install -y collectd
pip install fritzcollectd

Für die Speicherung der Daten wurde in der influxdb eine Datenbank angelegt.

CREATE DATABASE "fritzbox"
user create -n fritzbox -p <password>
grant all on "fritzbox" to "fritzbox"

Die Konfigurationsdatei für die Influxdb (/etc/influxdb/influxdb.conf) wurde wie folgt angepasst bzw. ergänzt.

[[collectd]]
   enabled = true
   bind-address = ":25826"
   database = "fritzbox"
   retention-policy = ""

Die Datei um die Daten aus der Fritzbox zu holen wurden unter /etc/collectd/collectd.conf.d/fritzcollectd.conf  erstellt.

LoadPlugin python
LoadPlugin network
<Plugin network>
        Server "127.0.0.1" "25826"
</Plugin>
<Plugin python>
        Import "fritzcollectd"
        <Module fritzcollectd>
                Address "192.168.178.1"
                Port 49000
                User "benutzer"
                Password "kennwort"
                Hostname "fritzbox"
                Instance "1"
                Verbose "False"
        </Module>
</Plugin>

Der in der Datei hinterlegte Benutzer wurde zuvor in der Fritzbox angelegt.

Dienste neu starten

systemctl restart influxdb
systemctl restart collectd 

Im Grafana wurde zum Abschluss das Dashboard https://grafana.com/grafana/dashboards/713 hinzugefügt, bei dem hinzufügen wurden die bereits erstellten Zugangsdaten für die influxdb verwendet.

Dann schauen wir uns mal grafana an

Wer sich sich die alten Artikel auf meinem Blog angeschaut hat, der weiß das meine favorisierte Dashboardlösung das dashing.io ist. Für dashing.io habe ich mittlerweile diverse Abfragen erstellt unter anderem auslesen eines Ticketsystems, Telefonanlage, Patchsysteme.

Der ein oder andere Kollege meinte jedoch, das ich mit auch mal grafana anschauen sollte. Also kleine debian VM aufgesetzt und mit den folgenden Schritten grafana und influxdb installiert.

Folgendes als root Benutzer ausführen um influxdb zu installieren:

wget -q https://repos.influxdata.com/influxdb.key
echo '23a1c8836f0afc5ed24e0486339d7cc8f6790b83886c4c96995b88a061c5bb5d influxdb.key' | sha256sum -c && cat influxdb.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/influxdb.gpg > /dev/null
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdb.gpg] https://repos.influxdata.com/debian stable main' | tee /etc/apt/sources.list.d/influxdata.list
apt-get update && sudo apt-get install influxdb
systemctl unmask influxdb.service
systemctl start influxdb

Ebenfalls als root Benutzer ausführen um grafana zu installieren:

sudo apt-get install -y apt-transport-https
sudo apt-get install -y software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/enterprise/deb stable main" | tee -a /etc/apt/sources.list.d/grafana.list
apt-get update
apt-get install grafana-enterprise
systemctl start grafana-server
systemctl status grafana-server
systemctl enable grafana-server.service

Im Anschluss was über http://serverip:3000 ein Zugriff auf grafana möglich

Was soll auf einem Display angezeigt werden

In vielen Unternehmen beziehungsweise auch an öffentlichen Stellen hängen Display, die die verschiedensten Inhalte ausgeben. Es werden die nächsten Besucher angekündigt, das aktuelle Wetter, der Speiseplan oder andere verschiedene Dashboards. Die womöglich billigste Variante ist vermutlich einen Monitor / Fernseher zu verwenden, der an einem Raspberry Pi angeschlossen ist. Auf dem Raspberry Pi wird der Browser in dem Kiosk Modus gestartet und gibt die gewünschte Seite aus. Soll die Seite gewechselt werden, so wird die Konfiguration auf dem Raspberry Pi angepasst und der Browser wird neu gestartet. Gibt es mehrere Display die verwaltet werden müssen, so ist dies vermutlich ein gewisser Aufwand. Die kleine in Ruby on Rails geschriebene Webapplikation übernimmt die Verteilung der URL.

In der Webapplikation werden die Rasperry Pis hinterlegt und auf dem Raspberry Pis werden entsprechende Scripte eingerichtet. Damit die Webapplikation auf die Raspberry Pis zugreifen kann, muss der Public Key des Benutzers unter dem die Webapplikation läuft, auf dem Pi hinterlegt werden. Nun kann per Mausklick eine neue Url hinterlegt oder der Pi heruntergefahren bzw. neugestartet werden.

In der Webapplikation können Gruppen angelegt werden, Benutzer und Raspberry Pis werden der Gruppe zugeordnet. Die angelegten Benutzer können nur Raspberry Pis verwalten, die sich in der gleichen Gruppe befinden.

Verwaltung der Raspberry Pis

Git Repository https://github.com/Ostfriese26802/DashboardViewController

Betriebshandbuch

Für die Umgebung der IT gibt es die verschiedensten Möglichkeiten die Applikationen, Komponenten, Server usw. zu dokumentieren. In vielen Fällen kommt ein Wiki zum Einsatz, hier wird in Teilen eine Einheitliche Struktur verwendet. Was mich bislang daran gestört hat ist, das einige Punkte manuell gepflegt werden müssen bzw. Sie können nicht einfach miteinander verknüpft werden.
Bei Änderungen an Hardware wie RAM oder Festplatte, muss dies manuell angepasst werden. Wird zum Beispiel nach einem Change die Festplatte d erweitert, muss dieses im Nachgang im Wiki angepasst werden. An dieser Stelle wäre eine automatische Aktualisierung von Vorteil.

Ich habe mir hierzu ein paar Gedanken gemacht und ein kleines Ruby on Rails Projekt gestartet. Aktuell können dort folgende Punkte hinterlegt werden.

  • Kunden
  • Server
  • Hardware der Server
  • Applikationen
  • Komponenten
  • Monitoring
  • Technische Benutzer
  • Staging Stufe
  • interne Fachgruppen / Teams
  • externe Dienstleister
  • Supportmatrix

Es werden noch weitere Punkte hinzukommen wie automatischer Import der Server Hardware oder die Möglichkeit das gesamte BFH als PDF zu exportieren. Hierbei soll es eine Möglichkeit geben die zu exportierenden Punkte auszuwählen.

Wenn es Anregungen gibt was noch geben sollte, immer her damit.

Link zum Repository: https://github.com/Ostfriese26802/betriebshandbuch