Monitoring mit Grafana, Unpoller, InfluxDB und Unifi

TheManneken

Wokie Ultra
Administrator
Registriert
Sep. 2006
Beiträge
10.081
Hi,

Also folgendes Setup:
Mein Unifi Controller läuft auf einer DS720+ als Docker Container und macht seine Arbeit korrekt. Die UI ist über https://192.168.178.20:8443 zu erreichen. Read-only User besteht und funktioniert

Mein Ziel ist es, Unifi in Grafana zu monitoren, gibt dazu auch sehr hübsche Dashboards. Auf einem Mini-PC läuft Proxmox, darin u.a. eine VM mit Ubuntu Server. Grafana, InfluxDB und Unpoller je als Container. Docker-Compose und Portainer laufen auch in dieser Ubuntu-VM. Ich bin jetzt nicht so der Crack mit Linux, das ist alles recht neu für mich.
In InfluxDB wurde ein Bucket angelegt, das ist bereits als Datenquelle in Grafana eingebunden. Das Unifi Dashboard ist auch schon in Grafana, hat aber noch keine Daten.

Unpoller soll sich mit dem angelegten Readonly-User am Unifi Controller anmelden und die Daten empfangen, die Grafana dann grafisch aufbereiten soll. Tut es aber nicht. Und ich weiß auch, warum, nur ich verstehe nicht, wo das Problem liegt...

Unpoller soll beim Start die Config-Datei ./config/unpoller.conf laden, in der u.a. auch die URL und die Userdaten des Unifi Controllers konfiguriert werden. Hab ich mit Nano gemacht. Unpoller mountet die Konfig auch in /etc/unpoller/up.conf ohne Fehlermeldung,. Scheinbar wird aber von irgendwoher irgendwelche Konfig-Defaults geladen und Unpoller versucht Unifi unter https://127.0.0.1:8443 zu erreichen, aber dort läuft er nicht. Wenn ich die Konfig-Datei aber verschiebe oder lösche, kann der Container gar nicht gestartet werden, Unpoller quittiert das ironischerweise mit der fehlenden unpoller.conf. Ingesamt "ignoriert" Unpoller alles, was ich in der Konfigdatei verändere - ich kann sie auch leer anlegen oder irgendeinen Quatsch reinschreiben, keine Fehlermeldung. Aber fehlt die Datei, oder benenne ich sie um, geht gar nix. Es ist auch nichts auskommentiert in der unpoller.conf, was das verursachen könnte.

Ich bin gemäß https://unpoller.com/docs/install/dockercompose vorgegangen, da liegt auch ein Template für die unpoller.conf

Code:
root@grafana-produktiv:~/unpoller/config# sudo docker-compose up
Starting b34540dd0eeb_unpoller ... done
Attaching to b34540dd0eeb_unpoller
b34540dd0eeb_unpoller | 2024/09/12 14:02:34 [INFO] Loading Configuration File: /etc/unpoller/up.conf
b34540dd0eeb_unpoller | 2024/09/12 14:02:34 [INFO] UniFi Poller v2.11.2 Starting Up! PID: 1
b34540dd0eeb_unpoller | 2024/09/12 14:02:34 [ERROR] Controller 1 of 1 Auth or Connection Error, retrying: unifi controller: making request: Get "https://127.0.0.1:8443/": dial tcp 127.0.0.1:8443: connect: connection refused
 
Zuletzt bearbeitet:
Das ist Docker Networking, wenn du da sonst nicht viel tust, gib dem container im compose file
network_mode: "host"
Dann sollte es gehen

die unpoller config ist mit korrektem Inhalt im container sichtbar und fuer den entsprechenden User lesbar?
 
Du meinst, ich soll die Zeile in die docker-compose.yml hinzufügen?
Resultat:
Code:
root@grafana-produktiv:~/unpoller# sudo docker-compose up
Recreating unpoller ...

ERROR: for unpoller  'ContainerConfig'

ERROR: for unpoller  'ContainerConfig'
Traceback (most recent call last):
  File "docker-compose", line 3, in <module>
  File "compose/cli/main.py", line 81, in main
  File "compose/cli/main.py", line 203, in perform_command
  File "compose/metrics/decorator.py", line 18, in wrapper
  File "compose/cli/main.py", line 1186, in up
  File "compose/cli/main.py", line 1182, in up
  File "compose/project.py", line 702, in up
  File "compose/parallel.py", line 108, in parallel_execute
  File "compose/parallel.py", line 206, in producer
  File "compose/project.py", line 688, in do
  File "compose/service.py", line 581, in execute_convergence_plan
  File "compose/service.py", line 503, in _execute_convergence_recreate
  File "compose/parallel.py", line 108, in parallel_execute
  File "compose/parallel.py", line 206, in producer
  File "compose/service.py", line 496, in recreate
  File "compose/service.py", line 615, in recreate_container
  File "compose/service.py", line 334, in create_container
  File "compose/service.py", line 922, in _get_container_create_options
  File "compose/service.py", line 962, in _build_container_volume_options
  File "compose/service.py", line 1549, in merge_volume_bindings
  File "compose/service.py", line 1579, in get_container_data_volumes
KeyError: 'ContainerConfig'
[10614] Failed to execute script docker-compose
root@grafana-produktiv:~/unpoller#
madmax2010 schrieb:
unpoller config ist mit korrektem Inhalt im container sichtbar und fuer den entsprechenden User lesbar?
Wo schaue ich das bzw. wie prüfe ich das?
 
TheManneken schrieb:
Wo schaue ich das bzw. wie prüfe ich das?
docker exec -it <ContainerName oder Container id, bspw b34540dd0eeb> /bin/bash
und dann
cd /etc/unpoller
ls -l1h
cat up.conf
ping [URL='https://192.168.178.20:8443']192.168.178.20[/URL]
curl [URL]https://192.168.178.20:8443[/URL]

(in den Ordner gehen,
Dateien und Permissions auflisten,
in halt er config ausgeben,
schauen ob der Host des Controllers erreichbar ist,
schauen ob das Webinterface erreichbar ist)
TheManneken schrieb:
Du meinst, ich soll die Zeile in die docker-compose.yml hinzufügen?
eher so: (aber das wird das problem an der stelle vermutlich nicht beheben tbh, das istgelegentlich eher sinnvoll,wenn der controller im container läuft und die Hardware in einem anderen Adressbereich liegt)
Bash:
version: '3'
services:
  influxdb:
    restart: always
    image: influxdb:1.8
    network_mode: host
    volumes:
      - influxdb-storage:/var/lib/influxdb
    environment:
      - INFLUXDB_DB=${INFLUXDB_DB}
      - INFLUXDB_HTTP_AUTH_ENABLED=${INFLUXDB_HTTP_AUTH_ENABLED}
      - DOCKER_INFLUXDB_INIT_MODE=setup
      - DOCKER_INFLUXDB_INIT_USERNAME=${INFLUXDB_ADMIN_USER}
      - DOCKER_INFLUXDB_INIT_PASSWORD=${INFLUXDB_ADMIN_PASSWORD}
      - DOCKER_INFLUXDB_INIT_ORG=${INFLUXDB_ORG}
      - DOCKER_INFLUXDB_INIT_BUCKET=${INFLUXDB_BUCKET}
      - DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=${INFLUXDB_ADMIN_TOKEN}

  chronograf:
    image: chronograf:latest
    restart: always
    network_mode: host
    volumes:
      - chronograf-storage:/var/lib/chronograf
    depends_on:
      - influxdb
    environment:
      - INFLUXDB_URL=http://localhost:8086
      - INFLUXDB_USERNAME=${INFLUXDB_ADMIN_USER}
      - INFLUXDB_PASSWORD=${INFLUXDB_ADMIN_PASSWORD}

  grafana:
    image: grafana/grafana:latest
    restart: always
    network_mode: host
    volumes:
      - grafana-storage:/var/lib/grafana
    depends_on:
      - influxdb
    environment:
      - GF_SECURITY_ADMIN_USER=${GRAFANA_USERNAME}
      - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD}
      - GF_INSTALL_PLUGINS=grafana-clock-panel,natel-discrete-panel,grafana-piechart-panel

  unpoller:
    restart: always
    image: ghcr.io/unpoller/unpoller:${POLLER_TAG}
    network_mode: host
    depends_on:
      - grafana
      - influxdb
      - chronograf
    environment:
      - UP_INFLUXDB_DB=${INFLUXDB_DB}
      - UP_INFLUXDB_USER=${INFLUXDB_ADMIN_USER}
      - UP_INFLUXDB_PASS=${INFLUXDB_ADMIN_PASSWORD}
      - UP_INFLUXDB_ORG=${INFLUXDB_ORG}
      - UP_INFLUXDB_BUCKET=${INFLUXDB_BUCKET}
      - UP_INFLUXDB_AUTH_TOKEN=${INFLUXDB_ADMIN_TOKEN}
      - UP_INFLUXDB_URL=http://localhost:8086
      - UP_UNIFI_DEFAULT_USER=${UNIFI_USER}
      - UP_UNIFI_DEFAULT_PASS=${UNIFI_PASS}
      - UP_UNIFI_DEFAULT_URL=${UNIFI_URL}
      - UP_POLLER_DEBUG=${POLLER_DEBUG}
      - UP_UNIFI_DEFAULT_SAVE_DPI=${POLLER_SAVE_DPI}
    volumes:
      - YOURPATH/up.conf:/etc/unpoller/up.conf

volumes:
  influxdb-storage:
  chronograf-storage:
  grafana-storage:
Forum feature wish: yaml syntax highlighting;)

Aber erstmal schauen warum er die COnfig / auth nicht mag
Ergänzung ()

oh, eben mal die anleitung gelesen.
Die docker-compose.env hast du auch angepasst?
TheManneken schrieb:
Unpoller versucht Unifi unter https://172.0.0.1:8443 zu erre
oben sagtest du das,
in dem log das dann dazu kam steht aber 127.0.0.1:8443 - was sich mit UNIFI_URL=https://127.0.0.1:8443 deckt.
Der scheint sich u.a die Login Daten aus den Umgebungsvariablen zu holen
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: TheManneken
Da hat sich ein Zahlendreher eingeschlichen... ja, 127.0.0.1

madmax2010 schrieb:
docker-compose.env hast du auch angepasst?

Ja, zumindest nach meinem Verständnis. Ist mir nicht so ganz klar geworden, ob ich beispielsweise bei {INFLUXDB_ORG} die Org-ID oder den Org-Namen verwenden muss. Aber komme heute nicht mehr dazu, das nochmal auszuprobieren.
 
Momentan ist es mir gar nicht möglich, den Unpoller Container zu starten. Er existiert auch nicht: in der Portainer WebUI nicht mehr vorhanden und der Pfad /etc/unpoller existiert auch nicht.

Es existiert ein Pfad /unpoller in root@grafana-produktiv:~#

Allerdings glaube ich, ohnehin im falschen Pfad zu sein, denn der Pfad /etc befindet sich in:
root@grafana-produktiv:/#

Wenn ich richtig liege müsste ~ das Home-Verzeichnis des Benutzers root sein, / aber das Root-Verzeichnis des gesamten Dateisystems. Könnte hier mein Fehler liegen und müssten alle Container im selben Verzeichnis liegen?

Momentan habe ich in /var/lib/docker/containers zwei Verzeichnisse, namentlich die IDs der Container Influxdb und Portainer
 
Zurück
Oben