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

  • jonofe
    antwortet
    In Telegraf kann man das zum Beispiel über namepass und namedrop machen:

    Outputs:

    Code:
    [[outputs.influxdb_v2]]
       urls = ["https://<influx-server>:8086"]
       token = "$INFLUX_TOKEN"
       organization = "<YOUR-ORG>"
       bucket = "TELEGRAF"
       tls_ca = "/etc/telegraf/ca.pem"
       namedrop = ["Temperatur Büro","Temperatur Flur"]
    
    [[outputs.influxdb_v2]]
       urls = ["https://<influx-server>:8086"]
       token = "$INFLUX_TOKEN"
       organization = "<YOUR-ORG>"
       bucket = "KNX"
       tls_ca = "/etc/telegraf/ca.pem"
       namepass = ["Temperatur Büro"]
    
    [[outputs.influxdb_v2]]
       urls = ["https://<influx-server>:8086"]
    ​   token = "$INFLUX_TOKEN"
       organization = "<YOUR-ORG>"
       bucket = "KNX30"
       tls_ca = "/etc/telegraf/ca.pem"
       namepass = ["Temperatur Flur"]
    ​
    Inputs:

    Code:
    [[inputs.knx_listener.measurement]]
    name = "Temperatur Flur"
    dpt = "9.001"
    addresses = ["2/1/41"]
    
    [[inputs.knx_listener.measurement]]
    name = "Temperatur Büro"
    dpt = "9.001"
    addresses = ["2/1/21"]
    ​
    Eigentlich sollte das auch über tagdrop, tagpass und tagexclude funktionieren, aber beim KNX Plugin ist es mir nicht gelungen ein Tag hinzuzufügen.
    Man würde dann z.B. ein tag knx=30days im KNX Input Plugin hinzufügen und im influxdb_v2 Output Plugin anhang des tags entscheiden in welchen Bucket es geht. Falls das jemand schafft wäre ich daran interessiert.

    Einen Kommentar schreiben:


  • shortyle
    antwortet
    Ich dachte einfach nur das man gar nicht erst in Versuchung kommt Daten, die man nicht ewig lange braucht, unendlich lange zu speichern. Wieviele Daten es final werden kann ich noch nicht abschätzen. Aber vielleicht bin ich da einfach etwas zu übervorsichtig. Der „Umweg“ über edomi wäre eine Alternative.
    Aber ich versuche es vielleicht auch erstmal mit einem Bucket

    Einen Kommentar schreiben:


  • stonie2oo4
    antwortet
    Darf ich fragen warum du das für nötig hältst?
    Speicherplatz, oder dauert die Diagramm-Anzeige dann länger?

    Also ich geh mal von mir aus 😅🙈, ich schreib schon wie ich finde recht viele Datenpunkte in die Datenbank, aber die einzelnen Werte hab ich KNX seitig meistens so eingestellt das sie ungefähr jede halbe Stunde einen Wert senden, manche sogar wesentlich seltener. Oder eben ab einer gewissen Wertänderung (bei den Geräten wo es geht).
    Das einzige wo recht viele Werte zusammen kommen ist bei den Stromzählern und Wirkleistungsaktoren bei den Leistungswerten (W), da sich diese doch recht oft ändern.

    Aber ich sag’s mal so, solange der KNX Bus damit klar kommt sollte influxdb spielend damit umgehen können 😉.


    Ne Möglichkeit wäre vielleicht, das du für die Werte die die nur kurz speichern willst über Edomi gehst und einfach so in ein extra bucket schreibst. Um wie viele Datenpunkte handelt es sich denn ungefähr?

    Einen Kommentar schreiben:


  • shortyle
    antwortet
    Ja genau, meinte die Speicherzeit in den Buckets. Die kann man ja leicht einstellen.
    Wenn ich da nun 2 Buckets mit unterschiedlichen Speicherzeiten (1x nie löschen + 1x z.B. 1Monat) habe für Werte vom KNX Bus, dann bräuchte ich ja auch 2 Configs für das KNX Plugin, wobei aber auch wieder 2 Tokens erzeugt werden. Aber beide scheinen nicht gleichzeitig aktiv sein zu können. Alternativ müsste man es schaffen in einer Config 2 verschiedene Bucket für die jeweiligen GAs zu definieren. Da weiß ich aber nicht wie.

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Wenn du mit Speicherzeiten die Retention in influxDB meinst, dann hängt diese immer am Bucket, d.h. dann müsste man unterschiedliche Buckets definieren.
    Ansonsten muss man die Retention extern realisieren, indem man entsprechende Befehle zum Löschen von Measurements bei bestimmtem Alter ausführt.

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • shortyle
    antwortet
    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.

    Einen Kommentar schreiben:


  • stonie2oo4
    antwortet
    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?

    Einen Kommentar schreiben:


  • stonie2oo4
    antwortet
    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.

    Einen Kommentar schreiben:


  • shortyle
    antwortet
    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


    Einen Kommentar schreiben:


  • stonie2oo4
    antwortet
    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.

    Einen Kommentar schreiben:


  • shortyle
    antwortet
    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.

    Einen Kommentar schreiben:


  • stonie2oo4
    antwortet
    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 ☺️

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    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.

    Einen Kommentar schreiben:


  • stonie2oo4
    antwortet
    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 😅.

    Einen Kommentar schreiben:

Lädt...
X