Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Zabbix Daten in ioBroker bekommen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.8k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    883

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Zabbix Daten in ioBroker bekommen

Geplant Angeheftet Gesperrt Verschoben Blockly
8 Beiträge 2 Kommentatoren 144 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • David G.D Online
    David G.D Online
    David G.
    schrieb am zuletzt editiert von David G.
    #1

    Hallo,

    eventuell ist das eine ungewöhnliche Anfrage, da es mit JS vermutlich auch geht....
    Allerdings werde ich mit JS nicht ganz warm..... Deshalb des Shellscript aus aus der Ki.....

    Ich habe ein Shell Script geschrieben und über den Admin in userdata abgelegt.
    Ich bin den Weg gegangen, damit es mit in den Backups landet.

    Kann ich das Script über Blockly ausführbar machen (damit nach einem restore auf einem neuen System weiter läuft) und ausführen?

    Habe es mal so getestet, das klappt aber nicht.
    1000058368.jpg
    1000058365.jpg

    Zeigt eure Lovelace-Visualisierung klick
    (Auch ideal um sich Anregungen zu holen)

    Meine Tabellen für eure Visualisierung klick

    OliverIOO 1 Antwort Letzte Antwort
    0
    • David G.D David G.

      Hallo,

      eventuell ist das eine ungewöhnliche Anfrage, da es mit JS vermutlich auch geht....
      Allerdings werde ich mit JS nicht ganz warm..... Deshalb des Shellscript aus aus der Ki.....

      Ich habe ein Shell Script geschrieben und über den Admin in userdata abgelegt.
      Ich bin den Weg gegangen, damit es mit in den Backups landet.

      Kann ich das Script über Blockly ausführbar machen (damit nach einem restore auf einem neuen System weiter läuft) und ausführen?

      Habe es mal so getestet, das klappt aber nicht.
      1000058368.jpg
      1000058365.jpg

      OliverIOO Offline
      OliverIOO Offline
      OliverIO
      schrieb am zuletzt editiert von
      #2

      @David-G.

      chmod musst du eigentlich nur einmal machen,

      wenn der iobroker etwas ausführt dann macht er das als der user iobroker
      wenn etwas nicht funktioniert liegt es meist daran, das der nutzer iobroker das skript, welches du wahrscheinlich mit deinem normal nutzer erstellt hat
      nicht ausführen darf oder sogar nicht sieht.

      wenn su auf der shell den folgenden befeh eingibst

      sudo -u iobroker bash
      

      wird eine neue shell als nutzer iobroker geöffnet.
      da kann man gut testen und sieht welche fehlermeldungen da kommen.

      Meine Adapter und Widgets
      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
      Links im Profil

      David G.D 1 Antwort Letzte Antwort
      0
      • OliverIOO OliverIO

        @David-G.

        chmod musst du eigentlich nur einmal machen,

        wenn der iobroker etwas ausführt dann macht er das als der user iobroker
        wenn etwas nicht funktioniert liegt es meist daran, das der nutzer iobroker das skript, welches du wahrscheinlich mit deinem normal nutzer erstellt hat
        nicht ausführen darf oder sogar nicht sieht.

        wenn su auf der shell den folgenden befeh eingibst

        sudo -u iobroker bash
        

        wird eine neue shell als nutzer iobroker geöffnet.
        da kann man gut testen und sieht welche fehlermeldungen da kommen.

        David G.D Online
        David G.D Online
        David G.
        schrieb am zuletzt editiert von David G.
        #3

        @OliverIO

        Hab es jetzt "manuell" ausführbar gemacht. Kann ja eine Meldung ins log schreiben, falls keine Daten ankommen für eine Neuinstallation.

        Hab die json zumindest jetzt so wie ich es mag.
        Die Items die man sehen will, lassen sich easy anpassen.

        {
          "Zabbix server": {
            "Load average (1m avg)": {
              "value": "2.232422",
              "unit": "",
              "value_type": "number"
            },
            "Load average (5m avg)": {
              "value": "0.520996",
              "unit": "",
              "value_type": "number"
            },
            "Load average (15m avg)": {
              "value": "0.666992",
              "unit": "",
              "value_type": "number"
            },
            "warnings": {
              "online_status": "Available",
              "count": 0,
              "alerts": {}
            }
          },
          "Taiscale": {
            "Load average (1m avg)": {
              "value": "0.37207",
              "unit": "",
              "value_type": "number"
            },
            "Load average (5m avg)": {
              "value": "0.494141",
              "unit": "",
              "value_type": "number"
            },
            "Load average (15m avg)": {
              "value": "0.657227",
              "unit": "",
              "value_type": "number"
            },
            "warnings": {
              "online_status": "Available",
              "count": 1,
              "alerts": {
                "32546": {
                  "uid": "36660",
                  "triggerid": "32546",
                  "message": "Tailscale Service down",
                  "priority": "High",
                  "time": "30.12.2025 17:58:44"
                }
              }
            }
          },
          "MariaDB": {
            "Load average (1m avg)": {
              "value": "2.078125",
              "unit": "",
              "value_type": "number"
            },
            "Load average (5m avg)": {
              "value": "0.520996",
              "unit": "",
              "value_type": "number"
            },
            "Load average (15m avg)": {
              "value": "0.670898",
              "unit": "",
              "value_type": "number"
            },
            "warnings": {
              "online_status": "Available",
              "count": 0,
              "alerts": {}
            }
          },
          "Proxmox_Home": {
            "Load average (1m avg)": {
              "value": "0.540527",
              "unit": "",
              "value_type": "number"
            },
            "Load average (5m avg)": {
              "value": "0.89209",
              "unit": "",
              "value_type": "number"
            },
            "Load average (15m avg)": {
              "value": "0.77832",
              "unit": "",
              "value_type": "number"
            },
            "warnings": {
              "online_status": "Available",
              "count": 1,
              "alerts": {
                "32961": {
                  "uid": "37689",
                  "triggerid": "32961",
                  "message": "Proxmox VE: VM [pve/Docker (qemu/113)]: Not running",          "priority": "Average",
                  "time": "30.12.2025 20:17:27"
                }
              }
            }
          },
          "PBS": {
            "Load average (1m avg)": {
              "value": "0.076172",
              "unit": "",
              "value_type": "number"
            },
            "Load average (5m avg)": {
              "value": "0.089844",
              "unit": "",
              "value_type": "number"
            },
            "Load average (15m avg)": {
              "value": "0.086426",
              "unit": "",
              "value_type": "number"
            },
            "warnings": {
              "online_status": "Available",
              "count": 0,
              "alerts": {}
            }
          },
          "Docker": {
            "Load average (1m avg)": {
              "value": "0.750977",
              "unit": "",
              "value_type": "number"
            },
            "Load average (5m avg)": {
              "value": "0.586914",
              "unit": "",
              "value_type": "number"
            },
            "Load average (15m avg)": {
              "value": "0.487793",
              "unit": "",
              "value_type": "number"
            },
            "warnings": {
              "online_status": "Not available",
              "count": 3,
              "alerts": {
                "33250": {
                  "uid": "37079",
                  "triggerid": "33250",
                  "message": "Docker: Failed to fetch info data",
                  "priority": "Warning",
                  "time": "30.12.2025 18:47:10"
                },
                "33262": {
                  "uid": "36877",
                  "triggerid": "33262",
                  "message": "Linux: Zabbix agent is not available",
                  "priority": "Average",
                  "time": "30.12.2025 18:21:39"
                },
                "33307": {
                  "uid": "36761",
                  "triggerid": "33307",
                  "message": "Docker: Container /mini-qr: Container has been stopped with error code",
                  "priority": "Average",
                  "time": "30.12.2025 18:11:15"
                }
              }
            }
          }
        }
        

        Zeigt eure Lovelace-Visualisierung klick
        (Auch ideal um sich Anregungen zu holen)

        Meine Tabellen für eure Visualisierung klick

        David G.D 1 Antwort Letzte Antwort
        0
        • David G.D David G.

          @OliverIO

          Hab es jetzt "manuell" ausführbar gemacht. Kann ja eine Meldung ins log schreiben, falls keine Daten ankommen für eine Neuinstallation.

          Hab die json zumindest jetzt so wie ich es mag.
          Die Items die man sehen will, lassen sich easy anpassen.

          {
            "Zabbix server": {
              "Load average (1m avg)": {
                "value": "2.232422",
                "unit": "",
                "value_type": "number"
              },
              "Load average (5m avg)": {
                "value": "0.520996",
                "unit": "",
                "value_type": "number"
              },
              "Load average (15m avg)": {
                "value": "0.666992",
                "unit": "",
                "value_type": "number"
              },
              "warnings": {
                "online_status": "Available",
                "count": 0,
                "alerts": {}
              }
            },
            "Taiscale": {
              "Load average (1m avg)": {
                "value": "0.37207",
                "unit": "",
                "value_type": "number"
              },
              "Load average (5m avg)": {
                "value": "0.494141",
                "unit": "",
                "value_type": "number"
              },
              "Load average (15m avg)": {
                "value": "0.657227",
                "unit": "",
                "value_type": "number"
              },
              "warnings": {
                "online_status": "Available",
                "count": 1,
                "alerts": {
                  "32546": {
                    "uid": "36660",
                    "triggerid": "32546",
                    "message": "Tailscale Service down",
                    "priority": "High",
                    "time": "30.12.2025 17:58:44"
                  }
                }
              }
            },
            "MariaDB": {
              "Load average (1m avg)": {
                "value": "2.078125",
                "unit": "",
                "value_type": "number"
              },
              "Load average (5m avg)": {
                "value": "0.520996",
                "unit": "",
                "value_type": "number"
              },
              "Load average (15m avg)": {
                "value": "0.670898",
                "unit": "",
                "value_type": "number"
              },
              "warnings": {
                "online_status": "Available",
                "count": 0,
                "alerts": {}
              }
            },
            "Proxmox_Home": {
              "Load average (1m avg)": {
                "value": "0.540527",
                "unit": "",
                "value_type": "number"
              },
              "Load average (5m avg)": {
                "value": "0.89209",
                "unit": "",
                "value_type": "number"
              },
              "Load average (15m avg)": {
                "value": "0.77832",
                "unit": "",
                "value_type": "number"
              },
              "warnings": {
                "online_status": "Available",
                "count": 1,
                "alerts": {
                  "32961": {
                    "uid": "37689",
                    "triggerid": "32961",
                    "message": "Proxmox VE: VM [pve/Docker (qemu/113)]: Not running",          "priority": "Average",
                    "time": "30.12.2025 20:17:27"
                  }
                }
              }
            },
            "PBS": {
              "Load average (1m avg)": {
                "value": "0.076172",
                "unit": "",
                "value_type": "number"
              },
              "Load average (5m avg)": {
                "value": "0.089844",
                "unit": "",
                "value_type": "number"
              },
              "Load average (15m avg)": {
                "value": "0.086426",
                "unit": "",
                "value_type": "number"
              },
              "warnings": {
                "online_status": "Available",
                "count": 0,
                "alerts": {}
              }
            },
            "Docker": {
              "Load average (1m avg)": {
                "value": "0.750977",
                "unit": "",
                "value_type": "number"
              },
              "Load average (5m avg)": {
                "value": "0.586914",
                "unit": "",
                "value_type": "number"
              },
              "Load average (15m avg)": {
                "value": "0.487793",
                "unit": "",
                "value_type": "number"
              },
              "warnings": {
                "online_status": "Not available",
                "count": 3,
                "alerts": {
                  "33250": {
                    "uid": "37079",
                    "triggerid": "33250",
                    "message": "Docker: Failed to fetch info data",
                    "priority": "Warning",
                    "time": "30.12.2025 18:47:10"
                  },
                  "33262": {
                    "uid": "36877",
                    "triggerid": "33262",
                    "message": "Linux: Zabbix agent is not available",
                    "priority": "Average",
                    "time": "30.12.2025 18:21:39"
                  },
                  "33307": {
                    "uid": "36761",
                    "triggerid": "33307",
                    "message": "Docker: Container /mini-qr: Container has been stopped with error code",
                    "priority": "Average",
                    "time": "30.12.2025 18:11:15"
                  }
                }
              }
            }
          }
          
          David G.D Online
          David G.D Online
          David G.
          schrieb am zuletzt editiert von David G.
          #4

          Hab jetzt 2-3h mit ChatGPT und Gemini rumprobiert ein Script zu bauen, was die json mit Datenpunkten und Ordnern Nachbaut.
          Mal sind ein paar Sachen gekommen mal nicht.

          Mein Versuch war ein universelles Script, was quasi jede json abbildet/nachbaut .....
          Die "unit" und "value_type" aus meinen Daten hab ich erstmal außen vor gelassen.

          Hast du @paul53 da eine Idee?

          Der Hammer wäre natürlich, wenn das Script auch die DPs löscht die nicht mehr im json sind.
          Als Variable hab ich immer einen DP mit der json und einen BasePath angegeben.

          Bei meiner json sollte sowas in der Art raus kommen. 1000058422.jpg

          Zeigt eure Lovelace-Visualisierung klick
          (Auch ideal um sich Anregungen zu holen)

          Meine Tabellen für eure Visualisierung klick

          OliverIOO 1 Antwort Letzte Antwort
          0
          • David G.D David G.

            Hab jetzt 2-3h mit ChatGPT und Gemini rumprobiert ein Script zu bauen, was die json mit Datenpunkten und Ordnern Nachbaut.
            Mal sind ein paar Sachen gekommen mal nicht.

            Mein Versuch war ein universelles Script, was quasi jede json abbildet/nachbaut .....
            Die "unit" und "value_type" aus meinen Daten hab ich erstmal außen vor gelassen.

            Hast du @paul53 da eine Idee?

            Der Hammer wäre natürlich, wenn das Script auch die DPs löscht die nicht mehr im json sind.
            Als Variable hab ich immer einen DP mit der json und einen BasePath angegeben.

            Bei meiner json sollte sowas in der Art raus kommen. 1000058422.jpg

            OliverIOO Offline
            OliverIOO Offline
            OliverIO
            schrieb am zuletzt editiert von
            #5

            @David-G.

            Irgendwie geht es jetzt nicht mehr um den Inhalt des ersten Posts, sondern um etwas anderes

            Meine Adapter und Widgets
            TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
            Links im Profil

            David G.D 1 Antwort Letzte Antwort
            0
            • OliverIOO OliverIO

              @David-G.

              Irgendwie geht es jetzt nicht mehr um den Inhalt des ersten Posts, sondern um etwas anderes

              David G.D Online
              David G.D Online
              David G.
              schrieb am zuletzt editiert von David G.
              #6

              @OliverIO

              Da es sich in eine andere Richtung entwickelt hat, hatte ich das Topic bereits umbenannt.

              Kann es aber auch rückgängig machen und eröffne ein neues Topic.

              Zeigt eure Lovelace-Visualisierung klick
              (Auch ideal um sich Anregungen zu holen)

              Meine Tabellen für eure Visualisierung klick

              1 Antwort Letzte Antwort
              0
              • David G.D Online
                David G.D Online
                David G.
                schrieb am zuletzt editiert von David G.
                #7

                Die DPs werden jetzt sauber angelegt.
                Muss nur noch schauen, wie ich verweiste Meldungen lösche.

                Verweiste DPs bekomme ich hin. Muss nur noch leere Ordner löschen können (ggf mit leeren Unterordnern)

                // --- KONFIGURATION ---
                const sourceDP = '0_userdata.0.Zabbix.json';    // Korrigierter Pfad (Großes Z)
                const basePath = '0_userdata.0.Zabbix.Hosts';    // Basis-Pfad für die Host-Struktur
                // ---------------------
                
                async function updateZabbixStates() {
                    if (!existsState(sourceDP)) {
                        log(`Quelldatenpunkt ${sourceDP} existiert nicht!`, 'warn');
                        return;
                    }
                
                    const state = getState(sourceDP);
                    if (!state || !state.val || state.val === "" || state.val === "{}") return;
                
                    try {
                        const data = JSON.parse(state.val);
                
                        for (const hostName in data) {
                            const host = data[hostName];
                            const hostPath = `${basePath}.${hostName.replace(/\s/g, '_')}`;
                
                            // --- Universelles Auslesen aller Keys (außer warnings) ---
                            for (const key in host) {
                                if (key === 'warnings') continue;
                
                                const item = host[key];
                                if (item && typeof item === 'object' && item.hasOwnProperty('value')) {
                                    const stateName = key.replace(/[()]/g, '').replace(/\s/g, '_');
                                    const val = item.value_type === 'number' ? parseFloat(item.value) : item.value;
                                    const type = item.value_type === 'number' ? 'number' : 'string';
                                    
                                    await createAndSetState(`${hostPath}.${stateName}`, val, type, 'value', item.unit || '');
                                }
                            }
                
                            // --- Warnings Block (Status, Count & Alerts) ---
                            if (host.warnings) {
                                const wPath = `${hostPath}.warnings`;
                                
                                await createAndSetState(`${wPath}.online_status`, host.warnings.online_status, 'string', 'info.status');
                                await createAndSetState(`${wPath}.count`, host.warnings.count, 'number', 'value.alarm');
                
                                if (host.warnings.alerts) {
                                    for (const tid in host.warnings.alerts) {
                                        const alert = host.warnings.alerts[tid];
                                        const aPath = `${wPath}.alerts.${tid}`;
                                        
                                        for (const aField in alert) {
                                            await createAndSetState(`${aPath}.${aField}`, alert[aField], 'string', 'text');
                                        }
                                    }
                                }
                            }
                        }
                    } catch (e) {
                        log('Fehler beim Parsen des Zabbix JSON: ' + e, 'error');
                    }
                }
                
                /**
                 * Hilfsfunktion: Erstellt State falls nicht vorhanden und setzt Wert
                 */
                async function createAndSetState(id, value, type, role, unit = '') {
                    if (!existsState(id)) {
                        await createStateAsync(id, {
                            name: id.split('.').pop(),
                            type: type,
                            role: role,
                            unit: unit,
                            read: true,
                            write: false,
                            def: value
                        });
                    }
                    setState(id, value, true);
                }
                
                // Trigger
                on({id: sourceDP, change: "any"}, updateZabbixStates);
                
                // Start
                updateZabbixStates();
                
                

                Zeigt eure Lovelace-Visualisierung klick
                (Auch ideal um sich Anregungen zu holen)

                Meine Tabellen für eure Visualisierung klick

                1 Antwort Letzte Antwort
                0
                • David G.D Online
                  David G.D Online
                  David G.
                  schrieb am zuletzt editiert von
                  #8

                  Hier der aktuelle Stand wie es in der Visualisierung kommt

                  1000058737.gif

                  Zeigt eure Lovelace-Visualisierung klick
                  (Auch ideal um sich Anregungen zu holen)

                  Meine Tabellen für eure Visualisierung klick

                  1 Antwort Letzte Antwort
                  0
                  Antworten
                  • In einem neuen Thema antworten
                  Anmelden zum Antworten
                  • Älteste zuerst
                  • Neuste zuerst
                  • Meiste Stimmen


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  736

                  Online

                  32.6k

                  Benutzer

                  82.1k

                  Themen

                  1.3m

                  Beiträge
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                  ioBroker Community 2014-2025
                  logo
                  • Anmelden

                  • Du hast noch kein Konto? Registrieren

                  • Anmelden oder registrieren, um zu suchen
                  • Erster Beitrag
                    Letzter Beitrag
                  0
                  • Home
                  • Aktuell
                  • Tags
                  • Ungelesen 0
                  • Kategorien
                  • Unreplied
                  • Beliebt
                  • GitHub
                  • Docu
                  • Hilfe