Ankündigung

Einklappen
Keine Ankündigung bisher.

Grafana und InfluxDB neben Edomi. Installation und Best Practice

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

    #91
    Zitat von rdeckard Beitrag anzeigen
    Dieses Problem könnte man in Edomi mit Variablen anstatt dieser fixen Zahlen lösen. Leider habe ich dazu noch keine Erfahrung, wie man das umsetzt.
    Hier eine Anleitung, wie man das Problem lösen kann. Es werden Buttons angelegt, mit denen man den Graphen steuern kann.
    Hilfreiche Doku: Use Dashboards
    Die Urls können auch "now" bzw "now-24h" oder so. Ich bin mal bei Stunden geblieben, geht aber sicher auch mit Tagen.
    "Spicken" kann man immer im Grafana selber:
    230202 21_43_59-View panel - New dashboard - Dashboards - Grafana – Mozilla Firefox000060.png Die URL kann man dann im Edomi so übernehmen:
    Code:
    http://192.168.178.84:3000/d-solo/xVIFR9h4z/new-dashboard?orgId=1&from=now- {#+24}h&to=now-{#}h&panelId=2" width="450" height="200" frameborder="0"
    wobei der interessante Teil
    Code:
    &from=now- {#+24}h
    und
    Code:
    &to=now-{#}h
    ist.

    Ich habe dazu nun 2 Buttons für die Navigation und einen Anzeige / Komfortbutton (Reset) eingefügt:
    230202 21_58_54-EDOMI · Administration000062.png

    Die Buttons sind folgendermassen konfiguriert:

    230202 21_42_44-EDOMI · Administration000058.png
    Wichtig ist hier, der Befehl, bei dem 24 (Stunden) auf das KO addiert werden.
    beim "Vor" Button wird das Analog eingestellt, nur mit subtrahieren.

    Reset Button:
    230202 21_42_59-EDOMI · Administration000059.png

    Das Visuelement an sich noch:

    230202 21_42_09-EDOMI · Administration000056.png
    Hier sollte das KO1 eingetragen werden, die eigene URL mit den Modifikationen oben beschrieben und dem aktivierten "Aktualisierung per KO", damit sich der Graph nach dem Button betätigen auch aktualisiert.

    Das Ergebnis:
    230202 21_58_31-EDOMI · Visualisierung000061.png

    Kommentar


      #92
      Vielen Dank für die tolle Beschreibung. Komme aktuell leider mangels Zeit kaum dazu, hier wieder etwas "rumzuspielen". Werde es aber sicher mal genauer ansehen.

      Kommentar


        #93
        Ich hab ja bei mir das telegraf KNX Plugin am Laufen und schieb mir damit die KNX-Werte in die influxdb.
        Jetzt hab ich gemerkt, das wenn z.B. der Strom der Linie (LS aus beim rumbasteln an Gerät) ausfällt oder die Netzwerkverbindung verloren geht (Router / Switch Update) er die Verbindung nicht erneut aufbaut. Also es werden ab da keine Werte mehr in die influxdb geschrieben.

        Hat jemand zufällig von euch auch Telegraf im Einsatz und konnte das selbe Problem feststellen?
        Bzw. weiß jemand vielleicht eine Abhilfe, das man vielleicht in regelmäßigen Abständen die Verbindung prüfen kann und evtl. einen reconnect durchführt?

        Was auch nicht schlecht wäre, aber eher zusätzlich dazu. Kann man Grafana, Telegraf, influxdb prüfen ob es läuft und den Status in Edomi anzeigen?
        Dann könnte man z.B. auch ein Telegram verschicken bei Ausfall einer der Dienste.
        Gruß Ben

        Kommentar


          #94
          Zitat von stonie2oo4 Beitrag anzeigen
          er die Verbindung nicht erneut aufbaut
          Wer genau? Telegraf?

          Und Verbindung wohin? zu KNX oder zu Influx?

          Kommentar


            #95
            Für Grafana und influxDB (und einiges mehr) mache ich das per HTTP-Request (Web bzw. API) und/oder Hostcheck.
            Bei Grafana (https://IP:PORT/api/health) und InfluxDB (siehe Screenshot) ist die API mMn Health-Indikator genug, wenn sie mir die akt. Version liefert.
            Prüfe zZ alle 15 min und im Fehlerfall wird eine Kachel meines edomi-Dashboard orange oder rot - je nach schwere. Dazu Mail.
            Was noch aussteht zum einbau: per SSH den jeweiligen Docker-Container zu rebooten - entweder automatisch oder in der Statusseite per Knopfdruck (um Dauerschleifen zu vermeiden)

            Unbenannt1.jpg Unbenannt.jpg Unbenannt2.jpg
            Unbenannt3.jpg
            Angehängte Dateien
            Zuletzt geändert von saegefisch; 08.02.2023, 18:49.

            Kommentar


              #96
              Zitat von jonofe Beitrag anzeigen

              Wer genau? Telegraf?

              Und Verbindung wohin? zu KNX oder zu Influx?
              Gute Frage 😅. Also auf jeden Fall liegt es an Telegraf.
              Dein LBS hat weiterhin Werte in die influxdb geschoben. Also nehme ich an das influxdb weiter läuft sobald das Netzwerk wieder da ist. Zumindest Schließ ich das daraus.

              Und da Telegraf auf dem gleichen Server läuft wie influxdb vermute ich eher das er die Verbindung zu KNX „verliert?“. Würde auch das Verhalten erklären, nach stromlos schalten der Hauptlinie wo eben auch der KNX-Router sitzt.

              @saegefisch
              Danke dir für das Beispiel 😁. Hatte dich noch Wage in Erinnerung das du so etwas hattest 🙈.
              Muss ich unbedingt bei mir umsetzen. Ich fände es natürlich schöner wenn sich Telegraf erstmal selbst versuchen würde zu heilen. Aber so merkt man wenigstens wenn etwas nicht mehr stimmt.

              Du hast da schon richtig viel umgesetzt 👍, find ich richtig klasse. Man (ich) macht sich dazu viel zu wenig Gedanken. Ich reagier da meistens erst wenn ich mal zufällig merke das etwas nicht mehr läuft.
              Heute war auch reiner Zufall das ich gemerkt hab das keine Werte mehr ankommen, da ich zur Zeit relativ häufig am basteln bin.
              Ich hab mir z.B. ein automatisches tägliches Backup von Grafana / influxdb / mariadb auf googledrive eingerichtet, auf dem ich mir immer die letzten 5 Tage wegsichere. An sich richtig klasse, aber leider ist das auch schon mal ausgefallen und hat eben kein tägliches Backup mehr ausgeführt. Hier muss ich auch mal schauen wie ich einen Fehlerfall fest stellen und mir anzeigen kann.
              Ich schweife aber grad ab.
              Erstmal würde ich gern eine Lösung für Telegraf finden 😅.
              Gruß Ben

              Kommentar


                #97
                Schreibt Telegraf denn noch non-KNX Daten in die InfluxDB? Falls ja, dann würde das auf ein Problem mit KNX hindeuten. Wenn gar keine Daten von Telegraf nach InfluxDB geschrieben werden, dann ist das Problem eher/auch die Verbindung von Telegraf zu InfluxDB.

                Kommentar


                  #98
                  Normalerweise schon, die hab ich aber geblockt, da die Systemdaten nix im KNX-Bucket zu suchen haben 😅.
                  Muss mal schauen wie ich die Config anpasse das er mir das in ein extra Bucket schreibt.
                  Danke für den Tip, so kann ich’s mal testen ☺️
                  Gruß Ben

                  Kommentar


                    #99
                    stonie2oo4

                    Hast du bei die das KNX Plugin in influxDB erfolgreich am laufen? Bei mir will das einfach nicht klappen.

                    Configuration etc. ist ja kein Hexenwerk, aber dennoch werden kein Daten geschrieben.

                    Und wenn ich im Terminal die Telegraf Config starten will erscheint eine Fehlermeldung alá

                    der Befehl zum Starten der config ist ja auch in dem PopUp von "create new configuration" beschrieben

                    Code:
                    telegraf --config http://IPvonInfluxDB:8086/api/v2/telegrafs/0abb44f89ca49000
                    Hier der Output
                    Code:
                    E! error loading config file http://IPvonInfluxDB:8086/api/v2/telegrafs/0abb44f89ca49000: error parsing data: line 155: key `name' is in conflict with line 96d
                    line 155 ist das 2. measurement "Temperatur Innen"

                    Wenn ich den Bereich der Config mit den measurement auskommentiere, kommt keine Fehlermeldung, aber er ignoriert natürliche alle eingehenden Telegramme

                    Code:
                    @InfluxGrafanaTelegraf:~# telegraf --config http://IPvonInfluxDB:8086/api/v2/telegrafs/0abb44f89ca49000
                    
                    2023-02-10T21:40:31Z I! Starting Telegraf 1.25.1
                    2023-02-10T21:40:31Z I! Available plugins: 228 inputs, 9 aggregators, 26 processors, 21 parsers, 57 outputs, 2 secret-stores
                    2023-02-10T21:40:31Z I! Loaded inputs: knx_listener
                    2023-02-10T21:40:31Z I! Loaded aggregators:
                    2023-02-10T21:40:31Z I! Loaded processors:
                    2023-02-10T21:40:31Z I! Loaded secretstores:
                    2023-02-10T21:40:31Z I! Loaded outputs: influxdb_v2
                    2023-02-10T21:40:31Z I! Tags enabled: host=InfluxGrafanaTelegraf
                    2023-02-10T21:40:31Z I! [agent] Config: Interval:10s, Quiet:false, Hostname:"InfluxGrafanaTelegraf", Flush Interval:10s
                    2023-02-10T21:40:31Z I! [inputs.knx_listener] Trying to connect to "tunnel" at "IPvonIPInterface:3671"
                    2023-02-10T21:40:31Z I! [inputs.knx_listener] Connected!
                    2023-02-10T21:43:05Z I! [inputs.knx_listener] Ignoring message {Command:Write Source:1.0.131 Destination:9/0/30 Data:[0 12 36]} for unknown GA "9/0/30"
                    2023-02-10T21:43:05Z I! [inputs.knx_listener] Ignoring message {Command:Write Source:1.0.131 Destination:9/4/31 Data:[0 20 8]} for unknown GA "9/4/31"
                    ​

                    meine config sieht wie folgt aus
                    Code:
                    # Configuration for telegraf agent
                    [agent]
                      ## Default data collection interval for all inputs
                      interval = "10s"
                      ## Rounds collection interval to 'interval'
                      ## ie, if interval="10s" then always collect on :00, :10, :20, etc.
                      round_interval = true
                    
                      ## Telegraf will send metrics to outputs in batches of at most
                      ## metric_batch_size metrics.
                      ## This controls the size of writes that Telegraf sends to output plugins.
                      metric_batch_size = 1000
                    
                      ## Maximum number of unwritten metrics per output.  Increasing this value
                      ## allows for longer periods of output downtime without dropping metrics at the
                      ## cost of higher maximum memory usage.
                      metric_buffer_limit = 10000
                    
                      ## Collection jitter is used to jitter the collection by a random amount.
                      ## Each plugin will sleep for a random time within jitter before collecting.
                      ## This can be used to avoid many plugins querying things like sysfs at the
                      ## same time, which can have a measurable effect on the system.
                      collection_jitter = "0s"
                    
                      ## Default flushing interval for all outputs. Maximum flush_interval will be
                      ## flush_interval + flush_jitter
                      flush_interval = "10s"
                      ## Jitter the flush interval by a random amount. This is primarily to avoid
                      ## large write spikes for users running a large number of telegraf instances.
                      ## ie, a jitter of 5s and interval 10s means flushes will happen every 10-15s
                      flush_jitter = "0s"
                    
                      ## By default or when set to "0s", precision will be set to the same
                      ## timestamp order as the collection interval, with the maximum being 1s.
                      ##   ie, when interval = "10s", precision will be "1s"
                      ##       when interval = "250ms", precision will be "1ms"
                      ## Precision will NOT be used for service inputs. It is up to each individual
                      ## service input to set the timestamp at the appropriate precision.
                      ## Valid time units are "ns", "us" (or "µs"), "ms", "s".
                      precision = ""
                    
                      ## Log at debug level.
                      # debug = false
                      ## Log only error level messages.
                      # quiet = false
                    
                      ## Log target controls the destination for logs and can be one of "file",
                      ## "stderr" or, on Windows, "eventlog".  When set to "file", the output file
                      ## is determined by the "logfile" setting.
                      # logtarget = "file"
                    
                      ## Name of the file to be logged to when using the "file" logtarget.  If set to
                      ## the empty string then logs are written to stderr.
                      # logfile = ""
                    
                      ## The logfile will be rotated after the time interval specified.  When set
                      ## to 0 no time based rotation is performed.  Logs are rotated only when
                      ## written to, if there is no log activity rotation may be delayed.
                      # logfile_rotation_interval = "0d"
                    
                      ## The logfile will be rotated when it becomes larger than the specified
                      ## size.  When set to 0 no size based rotation is performed.
                      # logfile_rotation_max_size = "0MB"
                    
                      ## Maximum number of rotated archives to keep, any older logs are deleted.
                      ## If set to -1, no archives are removed.
                      # logfile_rotation_max_archives = 5
                    
                      ## Pick a timezone to use when logging or type 'local' for local time.
                      ## Example: America/Chicago
                      # log_with_timezone = ""
                    
                      ## Override default hostname, if empty use os.Hostname()
                      hostname = ""
                      ## If set to true, do no set the "host" tag in the telegraf agent.
                      omit_hostname = false
                    [[outputs.influxdb_v2]]
                      ## The URLs of the InfluxDB cluster nodes.
                      ##
                      ## Multiple URLs can be specified for a single cluster, only ONE of the
                      ## urls will be written to each interval.
                      ##   ex: urls = ["https://us-west-2-1.aws.cloud2.influxdata.com"]
                    urls = ["http://IPvonInfluxDB:8086"]
                    
                      ## Token for authentication.
                    token = "$INFLUX_TOKEN"
                    
                      ## Organization is the name of the organization you wish to write to; must exist.
                    organization = "home"
                    
                      ## Destination bucket to write into.
                    bucket = "knx_bus_sensoren"
                    
                      ## The value of this tag will be used to determine the bucket.  If this
                      ## tag is not set the 'bucket' option is used as the default.
                      # bucket_tag = ""
                    
                      ## If true, the bucket tag will not be added to the metric.
                      # exclude_bucket_tag = false
                    
                      ## Timeout for HTTP messages.
                      # timeout = "5s"
                    
                      ## Additional HTTP headers
                      # http_headers = {"X-Special-Header" = "Special-Value"}
                    
                      ## HTTP Proxy override, if unset values the standard proxy environment
                      ## variables are consulted to determine which proxy, if any, should be used.
                      # http_proxy = "http://corporate.proxy:3128"
                    
                      ## HTTP User-Agent
                      # user_agent = "telegraf"
                    
                      ## Content-Encoding for write request body, can be set to "gzip" to
                      ## compress body or "identity" to apply no encoding.
                      # content_encoding = "gzip"
                    
                      ## Enable or disable uint support for writing uints influxdb 2.0.
                      # influx_uint_support = false
                    
                      ## Optional TLS Config for use on HTTP connections.
                      # tls_ca = "/etc/telegraf/ca.pem"
                      # tls_cert = "/etc/telegraf/cert.pem"
                      # tls_key = "/etc/telegraf/key.pem"
                      ## Use TLS but skip chain & host verification
                      # insecure_skip_verify = false
                    
                    ## Drop other Measurements than KNX
                       namedrop = ["cpu*","disk*","kernel","mem*","processes*","swap*","system*"]
                    
                    # Listener capable of handling KNX bus messages provided through a KNX-IP Interface.
                    [[inputs.knx_listener]]
                      ## Type of KNX-IP interface.
                      ## Can be either "tunnel" or "router".
                    service_type = "tunnel"
                    
                      ## Address of the KNX-IP interface.
                    service_address = "IPvomIPInterface:3671"
                    
                      ## Measurement definition(s)
                      # [[inputs.knx_listener.measurement]]
                      #   ## Name of the measurement
                      #   name = "temperature"
                      #   ## Datapoint-Type (DPT) of the KNX messages
                      #   dpt = "9.001"
                      #   ## List of Group-Addresses (GAs) assigned to the measurement
                      #   addresses = ["5/5/1"]
                    
                    [COLOR=#c0392b] # [[inputs.knx_listener.measurement]]
                      name = "Temperaturen Innen"
                      dpt = "9.001"
                      addresses = ["9/0/10","9/0/11","9/0/12","9/0/30","9/0/31","9/0/32","9/0/40","9/0/41"]
                    
                      # [[inputs.knx_listener.measurement]]
                      name = "Temperaturen Aussen"
                      dpt = "9.001"
                      addresses = ["9/0/200","9/0/220","9/0/221","9/0/222","9/0/223"]
                    
                      # [[inputs.knx_listener.measurement]]
                      name = "Luftfeuchte Innen"
                      dpt = "9.007"
                      addresses = ["9/4/10","9/4/30","9/4/31","9/4/50","9/4/60","9/4/120","9/4/140","9/4/150","9/4/160"]
                    
                      # [[inputs.knx_listener.measurement]]
                      name = "Luftfeuchte Aussen"
                      dpt = "9.007"
                      addresses = ["9/4/200","9/4/220","9/4/230","9/4/250"]​[/COLOR]
                    
                    ​
                    Zuletzt geändert von shortyle; 11.02.2023, 08:37.
                    Gruß David

                    Kommentar


                      Ja, Plugin läuft einwandfrei, ausgenommen oben genanntes Problem 😅.

                      Ähm vielleicht doofe Frage, aber die drei Werte hast du mit deinen gefüllt?
                      Ip-Interface?
                      Influx-Host?
                      Token mit Zugriff auf knx_bus_sensors?

                      Ist aus der Config nicht ganz ersichtlich. Ansonsten Vergleich ich die nachher mal am Pc mit meiner, vielleicht fällt mir noch etwas auf.
                      Gruß Ben

                      Kommentar


                        Moin moin und kein Stress

                        ja korrekt

                        urls = ["http://IPvonInfluxDB:8086"] <- hirer steht bei mir die richtige IP von InfluxDB...könnte man sicher auch auf localhost stehen lassen, da InfluxDB und Telegraf im selben LXC laufen

                        token = "$INFLUX_TOKEN" <- das habe ich so belassen, da bei der configuration, kurz vor dem Abschluss ja steht, dass man folgenden Befehl ausführen soll
                        Code:
                        export INFLUX_TOKEN=YaYeWttf2i45RWm0jhG7aJllZDomk.....
                        ​
                        organization = "home" <- so heißt meine InfluxDB Organisation

                        bucket = "knx_bus_sensoren" <- so heißt der bucket den ich für das plugin angelegt habe

                        service_address = "IPvomIPInterface:3671" <- und hier die richtige IP von Interface


                        Das scheint auch alles zu klappen solange ich nicht echte Werte in den measurement definiere. bzw diese nicht auskommentiere


                        Gruß David

                        Kommentar


                          Also ich weiß dass das mit dem Token bei mir komisch war. Hab das glaub auch erst so wie du gemacht, aber dann den Token fest in die config eingetragen. Ich weiß nicht ob es daran lag das es danach ging.
                          Aber vielleicht könntest das mal probieren um es auszuschließen.
                          Gruß Ben

                          Kommentar


                            So, bin jetzt doch an Pc, hat mir keine Ruhe gelassen 😅.
                            Meine Config ist komplett identisch (abgesehen vom Token), außer im unteren Abschnitt bei den KNX Adressen.
                            Code:
                            [[inputs.knx_listener.measurement]]
                            Hier ist bei dir immer ein "#" vorne dran, bei mir nicht. Vielleicht geht es auch deswegen nicht?
                            Gruß Ben

                            Kommentar


                              Das war es...oh man...dank dir!!!

                              Jetzt muss ich es nur noch hinbekommen, mehrere Configs mit unterschiedlichen Speicherzeiten anzulegen. Da gibt es glaube ich Probleme mit dem Token
                              Zuletzt geändert von shortyle; 11.02.2023, 10:44.
                              Gruß David

                              Kommentar


                                Was meinst mit speicherzeiten?
                                Wie oft der Wert in die Datenbank geschrieben wird?
                                Kannst das nicht KNX-seitig einstellen (Sendeintervall)?

                                Gruß Ben

                                Kommentar

                                Lädt...
                                X