Projekt:graphs.k4cg.org: Unterschied zwischen den Versionen
Noqqe (Diskussion | Beiträge) (→Licht) |
F10 (Diskussion | Beiträge) (→InfluxDB 1.x auf 2.x Migration: Schritte genauer beschrieben) |
||
(11 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 123: | Zeile 123: | ||
date +%s -d "last thursday" | date +%s -d "last thursday" | ||
1476914400 | 1476914400 | ||
curl -i -XPOST 'http://localhost:8086/write?db=sensors' --data-binary "besucher besucher=15 1476914400000000000 | curl -i -XPOST 'http://localhost:8086/write?db=sensors' --data-binary "besucher besucher=15 1476914400000000000" | ||
</pre> | </pre> | ||
Früher oder später wird es hierfür ein Skript geben. | Früher oder später wird es hierfür ein Skript geben. --> [[Stats#Besucherzahlen_2]] | ||
== Ich will auch Graphen zeichnen == | == Ich will auch Graphen zeichnen == | ||
Zeile 133: | Zeile 132: | ||
TODO. | TODO. | ||
Bisher bei noqqe melden | Bisher bei noqqe melden | ||
== InfluxDB 1.x auf 2.x Migration == | |||
Hier gibt es ein schoenes Diagramm, welche Systeme auf die InfluxDB zugreifen: https://k4cg.github.io/homeassi/docs/homeassi/communication-diagrams/images/k4cg-internal-communication.drawio.svg | |||
InfluxDB 1.8.x does contain a forwards compatible API endpoint for this v2 API. | |||
Influx Konfig: | |||
http.auth-enabled = true | |||
continuous_queries.enabled = true | |||
https://docs.influxdata.com/influxdb/v2.7/upgrade/v1-to-v2/automatic-upgrade/ | |||
https://docs.influxdata.com/influxdb/v2.7/upgrade/v1-to-v2/manual-upgrade/ | |||
{| class="wikitable" | |||
|- | |||
! Quelle !! Welche Daten !! Zieldatenbank !! Nutzer !! Library/Version !! Bemerkung !! Hinweise zur Migration | |||
|- | |||
| Telegraf (mqtt.intern.k4cg.org) || sensors/# || wip || mqtt_telegraf || Telegraf 1.13.3, Output Plugin influxdb || Scheinbar Authentifizierung mit Username und Passwort (in der Konfig hinterlegt). || https://docs.influxdata.com/influxdb/cloud/write-data/no-code/use-telegraf/manual-config/ (influxdb_v2 Output Plugin verwenden) | |||
|- | |||
| Homeassistant || Alle konfigurierten Sensoren, momentan nichts explizit ausgeschlossen || home_assistant || homeassi || Momentan noch Konfiguration fuer InfluxDB 1.x. || --- || Doku: https://www.home-assistant.io/integrations/influxdb/ | |||
|- | |||
| Promox VMs ({proxmox,beehive}.intern.k4cg) || "various stats about your hosts, virtual guests and storages" || proxmox || proxmox (?) || InfluxDB 1.x ueber UDP || --- || 2.x hat nur noch eine http(s) API. Umstellung der Proxmox Konfig auf http(s) API vor dem Upgrade schon moeglich, siehe https://pve.proxmox.com/wiki/External_Metric_Server | |||
|- | |||
| sensor-fetcher (rumpl.k4cg.org) || status.json (http://k4cgrouter.duckdns.org:59468/status.json) || sensors || sensorfetcher || Package influxdb 5.2.2 (/usr/local/sensor-fetcher/.venv) || Scheinbar Authentifizierung mit Username und Passwort (in /usr/local/sensor-fetcher/fetch.py hinterlegt). || Package influxdb ist deprecated (https://github.com/influxdata/influxdb-python). Nachfolger fuer InfluxDB 2.x: https://github.com/influxdata/influxdb-client-python | |||
|- | |||
| Donnerstats (rumpl.k4cg.org) || Anzahl User im Formular || sensors || donnerstats || HTTP Request (POST http://localhost:8086/write?db=sensors&precision=s, GET http://localhost:8086/query?pretty=true) || Scheinbar Authentifizierung mit Username und Passwort (in /var/www/k4cg.org/donnerstats.php hinterlegt). || Authentifizierung muss umgestellt werden und die Requests muessen umgestellt werden (https://docs.influxdata.com/influxdb/v2.7/write-data/developer-tools/api/, https://docs.influxdata.com/influxdb/v2.7/query-data/execute-queries/influx-api/). | |||
|- | |||
| Telegraf (rumpl.k4cg.org) || Apache Metriken, diverse System Metriken || sensors || telegraf || Telegraf 1.20.3, Output Plugin influxdb || Scheinbar Authentifizierung mit Username und Passwort (in der Konfig hinterlegt) || https://docs.influxdata.com/influxdb/cloud/write-data/no-code/use-telegraf/manual-config/ (influxdb_v2 Output Plugin verwenden) | |||
|- | |||
| irc2influx || User Count IRC || sensors || sensorfetcher || HTTP Request (curl -i -XPOST http://sensorfetcher:_passwort_@localhost:8086/write?db=sensors --data-binary "irc value=$USERCOUNT") || Authentifizierung mit Username und Passwort (im Skript /usr/local/irc2influx/irc2influx.sh hinterlegt) || Ueberhaupt noch relevant? | |||
|- | |||
| Grafana || TODO || || || || || Einiges hier dokumentiert: https://k4cg.github.io/homeassi/docs/homeassi/homeassi-todos/#doku. Dokumentieren: welche Data Sources gibt es und in welchen Dashboards werden welche Data Sources verwendet? | |||
|} | |||
=== Braindump === | |||
Spalten in der Tabelle ergaenzen: | |||
* Vorschlag fuer Migration | |||
* Reihenfolge (1. homeassi, 2. proxmox, 3. sensors, 4. wip, 5. donnerstats, 6. telegraf rumpl, 7. grafana data sources) | |||
* Erledigt? | |||
Schritte: | |||
# Influx 2 installieren | |||
# Konfig übertragen | |||
# Compatibility Zeugs machen (Authentification, User, Policy Mapping, etc. Siehe Migration Guide) | |||
# Daten migrieren (müsste sensors und wip sein) | |||
# Dafür sorgen, dass neue Daten reinkommen (Telegraf MQTT, sensor-fetcher) | |||
# Grafana umstellen | |||
Am besten die Sachen zuerst, die Daten schreiben (sensor-fetcher, Telegraf MQTT). Wenn wir erst wip und sensor-fetcher umstellen, haben wir wahrscheinlich fehlende Daten, weil die Clients nicht mehr schreiben können. Vorher vielleicht testen mit Homeassi und Proxmox. wip und sensor-fetcher: möglichst wenig Aufwand, weil eigentlich obsolet. sensor-fetcher: Compatibility, wip: Telegraf MQTT influxdb_v2 | |||
=== Schritte im Detail === | |||
# Influx 2 installieren (Konfig basteln, anderer Port, Firewallfreigabe) | |||
# Retention Policy prüfen und ggf. neue anlegen | |||
# Homeassi Datenbank in neues Bucket migrieren | |||
# API Token erstellen: https://docs.influxdata.com/influxdb/v2.7/security/tokens/#readwrite-token | |||
# InfluxDB Konfig im Homeassi ändern | |||
# Same für Proxmox | |||
# Neues Token für Grafana erstellen | |||
# Grafana Datasource erstellen | |||
# Dashboards anpassen | |||
# Vorbereitungen aus Migration Guide für wip und sensor-fetcher | |||
# Daten migrieren und Clients (sensor-fetcher, Telegraf MQTT umstellen) |
Aktuelle Version vom 18. Juni 2023, 20:36 Uhr
Projekt:graphs.k4cg.org | |
Betreuer*In | noqqe |
Jahr | 2016 |
Läuft auf | nixe.k4cg.org |
Wir brauchen schon länger eine Möglichkeit anständige Graphen für all unsere Sensoren zu bauen. Dieses Projekt soll diese Möglichkeit nun bringen.
Setup
InfluxDB und Grafana. Daten werden per REST an InfluxDB geschickt.
InfluxDB
Läuft auf Port 8086 unter v6 auf der Nixe. Ist ausschliesslich über localhost erreichbar
Die NixOS Config auf Nixe für InfluxDB ist unspektakulär. Nur Services Enabled.
Grafana
Unter https://graphs.k4cg.org erreichbar. Intern unter Port 3000.
Es gibt momentan 2 Public Dashboards. Um die Graphen unter Stats einzubetten muss Anonymous Access erlaubt werden
https://graphs.k4cg.org/dashboard/db/besucher https://graphs.k4cg.org/dashboard/db/sensors
services.grafana = { enable = true; protocol = "http"; port = 3000; auth.anonymous.enable = true; };
Apache
{ documentRoot = "/var/www/graphs.k4cg.org"; port = 80; hostName = "graphs.k4cg.org"; serverAliases = [ "www.graphs.k4cg.org" ]; adminAddr = "xxx"; extraConfig = '' Alias /.well-known/acme-challenge/ /var/www/challenges/ <Directory /var/www/challenges/> AllowOverride None Require all granted Satisfy Any </Directory> ''; } { documentRoot = "/var/www/graphs.k4cg.org/public"; port = 443; enableSSL = true; sslServerCert = "/usr/local/acme-tiny/k4cg.org.crt"; sslServerKey = "/usr/local/acme-tiny/k4cg.org.key"; sslServerChain = "/usr/local/acme-tiny/intermediate.crt"; hostName = "graphs.k4cg.org"; serverAliases = [ "www.graphs.k4cg.org" ]; adminAddr = "xxx"; extraConfig = '' ProxyPass "/" "http://localhost:3000/" ''; }
Collectors
Hier wird dokumentiert welche Daten wie zustande kommen, wie sie gesendet werden und wo man den Code dazu finden kann.
Die meisten Daten werden über das Skript https://github.com/k4cg/sensor-fetcher erfasst.
Licht
Momentane UV Werte in der CG werden über den Tischtennisschläger(tm) aus organic-entropy.org erfasst.
Die Werte sind meistens null, da der Sensor momentan sehr weit weg vom Fenster montiert ist.
Ein Test wurde jedoch vollzogen mit einem geliehenen UV Strahler.
Geraeusche
Die momentane Geräuschkulisse wird ebenfalls über den Noise Sensor von Tinkerforge an dem Tischtennisschläger(tm) erfasst.
Temperatur
Im Temperatur Graphen sind aktuell 3 verschiedene Daten enthalten.
1. Interner Temperatur Sensor
Temperatur Sensor von Tinkerforge der über sensor-fetcher erfasst wird.
2. Interner Temperatursensor
Waijb brachte einen weiteren Temperatursensor mit welcher an Scotty angeschlossen ist. Siehe [Host:scotty.intern.k4cg.org] unter 'Tempi'
3. Externer Temperatur Sensor
Über die API von wunderground wird die Außentemperatur in den Graphen eingepflegt. Hierzu ist nur ein REST Call nötig und wird emebfalls über sensor-fetcher erledigt.
Geraete in der CG
Die Netzwerk Geräte innerhalb der CG werden über das Projekt:openstatus abgefragt. Die bereits erstellte JSON Datei devices.json
wird auch hier über sensor-fetcher abgefragt.
Besucherzaehlungen (manuell)
Die Besucherzaehlungen werden von Hand in der InfluxDB hinterlegt.
date +%s -d "last thursday" 1476914400 curl -i -XPOST 'http://localhost:8086/write?db=sensors' --data-binary "besucher besucher=15 1476914400000000000"
Früher oder später wird es hierfür ein Skript geben. --> Stats#Besucherzahlen_2
Ich will auch Graphen zeichnen
TODO. Bisher bei noqqe melden
InfluxDB 1.x auf 2.x Migration
Hier gibt es ein schoenes Diagramm, welche Systeme auf die InfluxDB zugreifen: https://k4cg.github.io/homeassi/docs/homeassi/communication-diagrams/images/k4cg-internal-communication.drawio.svg
InfluxDB 1.8.x does contain a forwards compatible API endpoint for this v2 API.
Influx Konfig:
http.auth-enabled = true continuous_queries.enabled = true
https://docs.influxdata.com/influxdb/v2.7/upgrade/v1-to-v2/automatic-upgrade/ https://docs.influxdata.com/influxdb/v2.7/upgrade/v1-to-v2/manual-upgrade/
Quelle | Welche Daten | Zieldatenbank | Nutzer | Library/Version | Bemerkung | Hinweise zur Migration |
---|---|---|---|---|---|---|
Telegraf (mqtt.intern.k4cg.org) | sensors/# | wip | mqtt_telegraf | Telegraf 1.13.3, Output Plugin influxdb | Scheinbar Authentifizierung mit Username und Passwort (in der Konfig hinterlegt). | https://docs.influxdata.com/influxdb/cloud/write-data/no-code/use-telegraf/manual-config/ (influxdb_v2 Output Plugin verwenden) |
Homeassistant | Alle konfigurierten Sensoren, momentan nichts explizit ausgeschlossen | home_assistant | homeassi | Momentan noch Konfiguration fuer InfluxDB 1.x. | --- | Doku: https://www.home-assistant.io/integrations/influxdb/ |
Promox VMs ({proxmox,beehive}.intern.k4cg) | "various stats about your hosts, virtual guests and storages" | proxmox | proxmox (?) | InfluxDB 1.x ueber UDP | --- | 2.x hat nur noch eine http(s) API. Umstellung der Proxmox Konfig auf http(s) API vor dem Upgrade schon moeglich, siehe https://pve.proxmox.com/wiki/External_Metric_Server |
sensor-fetcher (rumpl.k4cg.org) | status.json (http://k4cgrouter.duckdns.org:59468/status.json) | sensors | sensorfetcher | Package influxdb 5.2.2 (/usr/local/sensor-fetcher/.venv) | Scheinbar Authentifizierung mit Username und Passwort (in /usr/local/sensor-fetcher/fetch.py hinterlegt). | Package influxdb ist deprecated (https://github.com/influxdata/influxdb-python). Nachfolger fuer InfluxDB 2.x: https://github.com/influxdata/influxdb-client-python |
Donnerstats (rumpl.k4cg.org) | Anzahl User im Formular | sensors | donnerstats | HTTP Request (POST http://localhost:8086/write?db=sensors&precision=s, GET http://localhost:8086/query?pretty=true) | Scheinbar Authentifizierung mit Username und Passwort (in /var/www/k4cg.org/donnerstats.php hinterlegt). | Authentifizierung muss umgestellt werden und die Requests muessen umgestellt werden (https://docs.influxdata.com/influxdb/v2.7/write-data/developer-tools/api/, https://docs.influxdata.com/influxdb/v2.7/query-data/execute-queries/influx-api/). |
Telegraf (rumpl.k4cg.org) | Apache Metriken, diverse System Metriken | sensors | telegraf | Telegraf 1.20.3, Output Plugin influxdb | Scheinbar Authentifizierung mit Username und Passwort (in der Konfig hinterlegt) | https://docs.influxdata.com/influxdb/cloud/write-data/no-code/use-telegraf/manual-config/ (influxdb_v2 Output Plugin verwenden) |
irc2influx | User Count IRC | sensors | sensorfetcher | HTTP Request (curl -i -XPOST http://sensorfetcher:_passwort_@localhost:8086/write?db=sensors --data-binary "irc value=$USERCOUNT") | Authentifizierung mit Username und Passwort (im Skript /usr/local/irc2influx/irc2influx.sh hinterlegt) | Ueberhaupt noch relevant? |
Grafana | TODO | Einiges hier dokumentiert: https://k4cg.github.io/homeassi/docs/homeassi/homeassi-todos/#doku. Dokumentieren: welche Data Sources gibt es und in welchen Dashboards werden welche Data Sources verwendet? |
Braindump
Spalten in der Tabelle ergaenzen:
- Vorschlag fuer Migration
- Reihenfolge (1. homeassi, 2. proxmox, 3. sensors, 4. wip, 5. donnerstats, 6. telegraf rumpl, 7. grafana data sources)
- Erledigt?
Schritte:
- Influx 2 installieren
- Konfig übertragen
- Compatibility Zeugs machen (Authentification, User, Policy Mapping, etc. Siehe Migration Guide)
- Daten migrieren (müsste sensors und wip sein)
- Dafür sorgen, dass neue Daten reinkommen (Telegraf MQTT, sensor-fetcher)
- Grafana umstellen
Am besten die Sachen zuerst, die Daten schreiben (sensor-fetcher, Telegraf MQTT). Wenn wir erst wip und sensor-fetcher umstellen, haben wir wahrscheinlich fehlende Daten, weil die Clients nicht mehr schreiben können. Vorher vielleicht testen mit Homeassi und Proxmox. wip und sensor-fetcher: möglichst wenig Aufwand, weil eigentlich obsolet. sensor-fetcher: Compatibility, wip: Telegraf MQTT influxdb_v2
Schritte im Detail
- Influx 2 installieren (Konfig basteln, anderer Port, Firewallfreigabe)
- Retention Policy prüfen und ggf. neue anlegen
- Homeassi Datenbank in neues Bucket migrieren
- API Token erstellen: https://docs.influxdata.com/influxdb/v2.7/security/tokens/#readwrite-token
- InfluxDB Konfig im Homeassi ändern
- Same für Proxmox
- Neues Token für Grafana erstellen
- Grafana Datasource erstellen
- Dashboards anpassen
- Vorbereitungen aus Migration Guide für wip und sensor-fetcher
- Daten migrieren und Clients (sensor-fetcher, Telegraf MQTT umstellen)