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.