InfluxDB v2.0 Database Size / Größe ausgeben

Moin, ich versuche die DB Größe von Influx rauszubekommen bzw. als Sensor anzulegen. Der Sensor gibt aber immer nur = 0 aus. Jemand eine Idee woran das liegt. Im Netz habe ich einiges gelesen, dass erst via Terminal Script was gemacht werden muss, wunder mich aber trotzdem, dass es nicht so einfach geht.

sensor:
  #InfluxDB Database Sensor
  - platform: influxdb
    host: 192.168.0.100
    port: 8086
    username: superduperadmin
    password: superduperpasswort
    scan_interval: 3600
    queries:
      - name: InfluxDB Database Size
        unit_of_measurement: MB
        value_template: "{{ (value | float(0) / 1024 /1024) | round(1) }}"
        group_function: sum
        measurement: '"monitor"."shard"'
        database: home_assistant
        where: 'time > now() - 1m AND "database"=''home_assistant'''
        field: diskBytes

Bei mir funktioniert es mit folgende Eintrag für die database:

database: _internal
1 „Gefällt mir“

Danke mit _Internal wird mir der Sensor gar nicht mehr angezeigt? Seltsam?

Das Thema war doch ein wenig komplexer. Mit Influxdb v2.0 kann man das nicht mehr so einfach auslesen. Database _internal heißt man verwendet die interne DB von Influx, die Metadaten der anderen DB trackt. Sollte mittlerweile aber per Default ausgeschaltet werden:
2023-05-16 08_37_43-Home Assistant – Mozilla Firefox

Um jetzt die Influx DB-Größe messen zu können, benötigt man die folgende Addons:

  • Advanced SSH & Web Terminal
  • Mosquitto broker
  • Zigbee2MQTT

SSH
SSH muss dafür allerdings im “ungesicherten Modus” laufen.
SSH Config anpassen unter init_commands:

while [ 1 = 1 ]; do docker exec addon_a0d7b954_influxdb du -s
    /data/influxdb/data/homeassistant | mosquitto_pub -t
    home-assistant/sensor/dbsize -r -u <user> -P <password> -l && sleep
    300; done &

Wichtig: InfluxDB Namen anpassen (bei mir ist das home_assistant) und euer MQTT User + Passwort.
Also dann bei meiner DB home_assistant abändern zu:

while [ 1 = 1 ]; do docker exec addon_a0d7b954_influxdb du -s
    /data/influxdb/data/home_assistant | mosquitto_pub -t
    home-assistant/sensor/dbsize -r -u <user> -P <password> -l && sleep
    300; done &

Eintrag in SSH sieht dann so aus:

MQTT:
Mit MQTT erstellst Du dann einen Sensor (configuration.yaml oder sensor.yaml etc. eintragen oder wo halt deine config für Sensoren liegt!)

mqtt:
  sensor:
    - name: InfluxDB DB Size
      unit_of_measurement: "MB"
      icon: hass:chart-line
      state_topic: "home-assistant/sensor/dbsize"
      value_template: "{{ (value.split('\t')[0]|int(0)/1000)|round(3) }}"

Weitere Infos: Unreliable InfluxDB size sensor - #55 by beylie - Configuration - Home Assistant Community?

Meine InfluxDB Systeminfo Card sieht dann jetzt so aus:
2023-05-16 08_34_52-Übersicht – Home Assistant – Mozilla Firefox

Unter influxDB 2.0 habe ich für mich nun folgende Lösung gefunden

from(bucket: "homeassistant")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "storage_shard_disk_size")
  |> filter(fn: (r) => r["bucket"] == "3ae17f5d0301bdae")
  |> aggregateWindow(every: 6h, fn: last, createEmpty: false)
  |> yield(name: "last")

Wenn ich das in grafana eingebe und dann eine Darstellung wähle, die die Kurven additiv darstellt dann kommt folgendes bei mir raus. Das kommt dem tatsächlichen Wert schon recht nahe, wenn ich mir anschaue wie stark die Disk im LXC ausgelastet ist.
Man könnte natürlich |> filter(fn: (r) => r["bucket"] == "3ae17f5d0301bdae") auch weg lassen, dann wäre es die komplette DB und nicht nur die für HomeAssistant.

Viel Spaß damit

Claudius

Das funktioniert nur, wenn man einen Scraper anlegt. Da diese unheimlich viele Daten sammelt und somit sehr viel Speicherplatz frisst, habe ich ihn wieder deaktiviert und neu angelegt. Die Neuanlage zeigt aber nun auf ein neues bucket “Metrics”, das alle Daten älter als 14Tage löscht. So sollte dann auch das extreme Wachstum eingedämmt sein.

Hallo Soul
Meine Name ist Manfred bin fast 70 Jahre und bin ein relativer Neuling zum Thema HassIO und ich habe deinen Betrag vom Mai.2023 zu „DB Größe von Influx rausbekommen“ gelesen und bekomme es einfach nicht zu laufen.
Betreibe Home Assistant auf einem separaten NUC-Pc und habe auf diesem InfluxDB Current Version 5.0.0 als Addon und Grafana 10.0 integriert.
Habe bereits mehrere Sensoren angelegt und keine Probleme damit, aber beim Sensor für die Größe der InfluxDB habe ich massive Probleme.

Hier meine Installation des HA
Aktuelle Version Home Assistant:
Core2024.7.3
Supervisor2024.06.2
Operating System12.4
Frontend20240710.0
Ich möchte dies Größe der InfluxDB an einem Sensor ausgeben um diesen via Grafana anzeigen zu können.
Habe deinen Code in die „configuration.yaml“ unterhalb anderer Sensoren eingefügt wie folgt:

####################################################
# Energie und Power - Sensoren - der Waermepumpe O&O
####################################################
template:
  - sensor:
    - name: "WP O&O Power Total"
      unique_id: WP_O&O_power_total
      state: >
        {{ states('sensor.zahler_wp_o_o_phase_a_active_power')|float(0) +
            states('sensor.zahler_wp_o_o_phase_b_active_power')|float(0) +
            states('sensor.zahler_wp_o_o_phase_c_active_power')|float(0) }}
      unit_of_measurement: W
      device_class: power
      state_class: measurement
      availability: >
          {{
              [ states('sensor.zahler_wp_o_o_phase_a_active_power'),
                states('sensor.zahler_wp_o_o_phase_b_active_power'),
                states('sensor.zahler_wp_o_o_phase_c_active_power') ] | map('is_number') | min }}
  - sensor:
    - name: "WP O&O Energy Total"
      unique_id: WP_O&O_energy_total
      state: >
        {{ states('sensor.zahler_wp_o_o_phase_a_total_active_energy')|float(0) +
            states('sensor.zahler_wp_o_o_phase_b_total_active_energy')|float(0) +
            states('sensor.zahler_wp_o_o_phase_c_total_active_energy')|float(0) }}
      unit_of_measurement: kWh
      device_class: energy
      state_class: total_increasing
      attributes:
        last_reset: "1970-01-01T00:00:00+00:00"
      availability: >
          {{ 
              [ states('sensor.zahler_wp_o_o_phase_a_total_active_energy'),
                states('sensor.zahler_wp_o_o_phase_b_total_active_energy'),
                states('sensor.zahler_wp_o_o_phase_c_total_active_energy') ] | map('is_number') | min }}


####################################################
# Energie und Power - Sensoren - der Waermepumpe T&J
####################################################
  - sensor:
    - name: "WP T&J Power Total"
      unique_id: WP_T&J_power_total
      state: >
        {{ states('sensor.zahler_wp_t_j_phase_a_active_power')|float(0) +
            states('sensor.zahler_wp_t_j_phase_b_active_power')|float(0) +
            states('sensor.zahler_wp_t_j_phase_c_active_power')|float(0) }}
      unit_of_measurement: W
      device_class: power
      state_class: measurement
      availability: >
          {{
              [ states('sensor.zahler_wp_t_j_phase_a_active_power'),
                states('sensor.zahler_wp_t_j_phase_b_active_power'),
                states('sensor.zahler_wp_t_j_phase_c_active_power') ] | map('is_number') | min }}
  - sensor:
    - name: "WP T&J Energy Total"
      unique_id: WP_T&J_energy_total
      state: >
        {{ states('sensor.zahler_wp_t_j_phase_a_total_active_energy')|float(0) +
            states('sensor.zahler_wp_t_j_phase_b_total_active_energy')|float(0) +
            states('sensor.zahler_wp_t_j_phase_c_total_active_energy')|float(0) }}
      unit_of_measurement: kWh
      device_class: energy
      state_class: total_increasing
      attributes:
        last_reset: "1970-01-01T00:00:00+00:00"
      availability: >
          {{ 
              [ states('sensor.zahler_wp_t_j_phase_a_total_active_energy'),
                states('sensor.zahler_wp_t_j_phase_b_total_active_energy'),
                states('sensor.zahler_wp_t_j_phase_c_total_active_energy') ] | map('is_number') | min }}


###############################################
# Energie und Power - Sensoren - der Poolanlage
###############################################
  - sensor:
    - name: "Poolanlage Power Total"
      unique_id: Poolanlage_power_total
      state: >
        {{ states('sensor.zahler_poolanlage_phase_a_active_power')|float(0) +
            states('sensor.zahler_poolanlage_phase_b_active_power')|float(0) +
            states('sensor.zahler_poolanlage_phase_c_active_power')|float(0) }}
      unit_of_measurement: W
      device_class: power
      state_class: measurement
      availability: >
          {{
              [ states('sensor.zahler_poolanlage_phase_a_active_power'),
                states('sensor.zahler_poolanlage_phase_b_active_power'),
                states('sensor.zahler_poolanlage_phase_c_active_power') ] | map('is_number') | min }}
  - sensor:
    - name: "Poolanlage Energy Total"
      unique_id: Poolanlage_energy_total
      state: >
        {{ states('sensor.zahler_poolanlage_phase_a_total_active_energy')|float(0) +
            states('sensor.zahler_poolanlage_phase_b_total_active_energy')|float(0) +
            states('sensor.zahler_poolanlage_phase_c_total_active_energy')|float(0) }}
      unit_of_measurement: kWh
      device_class: energy
      state_class: total_increasing
      attributes:
        last_reset: "1970-01-01T00:00:00+00:00"
      availability: >
          {{ 
              [ states('sensor.zahler_poolanlage_phase_a_total_active_energy'),
                states('sensor.zahler_poolanlage_phase_b_total_active_energy'),
                states('sensor.zahler_poolanlage_phase_c_total_active_energy') ] | map('is_number') | min }}


###########################
# Dateigroesse der InfluxDB
###########################
sensor:          (Das ist Zeile 190 in der configuration.yaml)
  - platform: influxdb
    host: 192.xxx.x.xxx
    username: xx_xxxxxx_xx_User
    password: xx_xxxxxx_xx_Passwort
    queries:
      - name: InfluxDB Database Size
        unit_of_measurement: MB
        value_template: '{{ (value | float / 1024 /1024) | round(1) }}'
        group_function: mean
        measurement: '"monitor"."shard"'
        database: home_assistant
        where: 'time > now() - 1m AND "database"=''home_assistant'''
        field: diskBytes

Habe den Namen der Datenbank auch bereits auf „database: _internal“ gerändert leider ohne Erfolg.

Hast du bitte eine Idee was ich falsch mache oder was ich ändern muss um den Wert der Datenbankgröße an einen Sensor übergeben kann.

Wäre über jeden Hinweis dankbar

LG Manfred

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)

Hi, hast Du meinen Beitrag #4 gelesen? Da steht das meiste drin. Ist halt schon recht komplexes Thema nur für die DB Größe auszulesen.

Zigbee muss auch konfiguriert werden. Meine InfluxDB ist aber auch nach über einem Jahr gerade mal 3.2GB groß. Da komme ich mit meiner 500GB SSD noch ewig hin :wink:

Hallo Soul

Danke, werde versuchen das umzusetzen :woozy_face:

Moin,

Achtung, @Guwama57 hat influxDB V1.8 definitiv nicht influxDB >=V 2.0, auch wenn immer alle behaupten sie hätten influxDB V 5.0.0 installiert, das ist quatsch, das ist die Version ,des Add-on und nicht die Version von influxDB!

Es gibt nur

  • InfluxDB V 1.8.x
  • InfluxDB V 2.x.x
  • und vielleicht dieses Jahr oder im nächsten, InfluxDB 3.x

Irgendwann habe ich mal Beschrieben wie man die Versionen auf der Kommandozeile herausbekommt

  • InfluxDB V 1.8
    • influxd version

Ob das für V 1.8 und/oder V 2.x klappt kann ich aus Ermangelung einer V 1.8 nicht testen, aber für V 2.x, bekommt man das

❯ curl -skL -I 'http://influxdb.fritz.box:8086/ping'
HTTP/1.1 204 No Content
Vary: Accept-Encoding
X-Influxdb-Build: OSS
X-Influxdb-Version: 2.7.5
Date: Thu, 01 Aug 2024 18:11:15 GMT

Wobei X-Influxdb-Version die installierte Version ist

Achtung, wenn Du es nicht explizit angegeben hast, ist bei Dir nicht die 2er-Version installiert.

VG
Bernd