Monitoring mit prometheus + Grafana

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Gast

    #1

    Monitoring mit prometheus + Grafana

    Nachdem die Diskussion dort relative ausartet vom Thema, beginne ich das Thema hier separat...

    Die Docker Images sind online: https://hub.docker.com/r/mabunixda/misc

    Ich starte den Container bei mir so:
    docker run -v /media/docker/prometheus/config.json:/opt/config.json --name loxprom mabunixda/misc:loxonegoprometheus-0.1

    /media/docker/prometheus/config.json schaut dann wie folgt aus:
    {
    "Miniserver": "<IP des Miniservers>",
    "Authentication": "<HTTP Basic Encoded Authentication>",
    "Metrics":

    [
    {
    "URI": "/dev/sps/io/0d118e2e-025e-b7f2-ffff8973e5f5454c/state",
    "Interval": 60,
    "Values":
    [
    {
    "ValuePath": "/LL/@value",
    "Name": "Technikraum_temperature"
    }
    ]
    },
    }

    HTTP Basic Encoded Authentication enspricht einem Base64 Encodeden STring von usernameassword .. also zB admin:admin
    Ich habe hier einen eigenen User angelegt, der bei mir Controls sieht, die man sonst als USer nicht sieht, da ich nicht alle Temperatursensoren zB brauche/sehen will.
    URI ist relativ und ist dann http://<IP>/<URI> ... anstatt state kann man auch noch all verwenden. Ich verwende hier noch die XML API und muss erst mal umstellen, wobei ich hier auch gerade gesehen habe, dass zB das eh nicht viel anders aussieht
    Der Interval ist in Sekunden im Moment

    Ich habe bei mir dann noch den prometheus Container prom/prometheus gezogen - loxprom von oben ist hier als verlinkter Container referenziert und die prometheus.yml ist ziemlich Standard
    # my global config
    global:
    scrape_interval: 15s # By default, scrape targets every 15 seconds.
    evaluation_interval: 15s # By default, scrape targets every 15 seconds.
    # scrape_timeout is set to the global default (10s).

    # Attach these labels to any time series or alerts when communicating with
    # external systems (federation, remote storage, Alertmanager).
    external_labels:
    monitor: 'codelab-monitor'

    # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
    rule_files:
    # - "first.rules"
    # - "second.rules"

    # A scrape configuration containing exactly one endpoint to scrape:
    # Here it's Prometheus itself.
    scrape_configs:
    # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
    - job_name: 'prometheus'

    # Override the global default and scrape targets from this job every 5 seconds.
    scrape_interval: 5s

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090', 'loxprom:8080']


    Bei Grafana ist auch alles ganz laut Doku mit persistentem Speicher ala https://github.com/grafana/grafana-docker listet - nur dass hier halt der prometheus Container wieder als Link publiziert ist.

    Ich werde in der nächsten Woche dann auf die neue API umstellen - dann wäre das nächste Rieeeesen-Todo eine UI zu schreiben um sich die Config zusammenbauen zu können und nicht im Editor das json Config file generieren muss.
    Hallo zusammen, nachdem Loxone seine XML Api schneller außer Betrieb genommen hat, als ich mit der vollständigen Implementation selbiger in C# fertig
  • Gast

    #2
    Warum habe ich das damals geschrieben/angefangen: Weil der Miniserver die SD Karte immer wieder vernichtet hat ... und die Statistiken kriegt man bis auf den Energieverbrauch sehr gut hin so und kann auch diverse Statistiken überlagern und/oder auch Werte abfragen/durchsuchen.

    Was auch noch nicht 100%ig bei mir konfiguriert ist nun seitdem ich auf Container umgestiegen bin: der Alertmanager ... man kann hier zB auch alerts schicken, wenn die Temperatur im Raum in der nächsten Stunde auf Grund der aktuellen Interpolation zB um x Grad sinken wird ( Fenster vergessen zuzumachen im Winter ... )

    Kommentar


    • okenny
      okenny kommentierte
      Kommentar bearbeiten
      Danke nitram!
      Wird dein Container auf x86 funktionieren oder nur Raspi?
  • Gast

    #3
    Gute Frage - ich habe es noch nicht probiert .. im Moment verwende ich debian:jessie als Basis im Container - bei mir lauft das im Moment nicht auf einem Raspy

    Kommentar

    • okenny
      LoxBus Spammer
      • 09.08.2016
      • 306

      #4
      ah okay, also zur zeit hast du es auf einem x86/x64 Rechner laufen?

      Kommentar

      • Gast

        #5
        ja .. es lauft z.Z. auf einem Ubuntu 16.04 mit Docker Paketen von docker direkt.

        Ich habe gerade geschaut - für Rasby müsste ich das Go mal cross compilen und dann ein 2. Dockerfile nehmen ... letzteres ist nicht schwer, ersteres hab ich noch nie gemacht..

        Kommentar


        • beeper
          beeper kommentierte
          Kommentar bearbeiten
          Hi, was meinst du mit "Go mal cross comilen"? Das du eine GO Version benötigst die auf dem Raspi läuft? Oder habe ich das falsch verstanden. Sonst wäre es nicht so schwierig. Immerhin habe ich dein GO Script bereits auf dem Raspi compiliert. Ich habe dazu:
          1.) https://storage.googleapis.com/golan...-armv6l.tar.gz heruntergeladen
          2.) Mit tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz nach /usr/local entpackt (Variablen im Namen einfach austauschen)
          3.) Add /usr/local/go/bin to the PATH environment variable. You can do this by adding this line to your /etc/profile (for a system-wide installation) or $HOME/.profile (export PATH=$PATH:/usr/local/go/bin)
          4.) Mit export GOPATH=$HOME/work den GOPATH setzen
          dann konnte ich compilieren und auch starten. Aber wie gesagt, vielleicht hatte ich es auch falsch vestanden. Dann bitte korrigieren

          War übrigens ein PI2 mit Jessie Raspian

          Danke
      • okenny
        LoxBus Spammer
        • 09.08.2016
        • 306

        #6
        Ok, sehr gut danke. Ich bin mit Ubuntu ganz zufrieden, noch ein Raspi will ich nicht.


        Ich hab es auf meinem Qnap probiert, ging erstmal nicht. Ich probiere es wieder A am Wochenende

        Kommentar

        Lädt...