NEWS
JS aus Funktion wird nicht ausgeführt
Blockly
2
Beiträge
1
Kommentatoren
40
Aufrufe
1
Watching
-
Hallo,
ich habe folgendes JS in einer Funktion in Blockly.
Wenn ich den Block zum ausführen der Funktion mitten in Blockly positioniere wird das JS ausgeführt.Wenn ich es in einen Trigger (Minütlich *****) schiebe nicht mehr.
Jemand eine Idee?
// Konfiguration const ZABBIX_URL = "http://192.168.99.199/zabbix/api_jsonrpc.php"; const TOKEN = "e4a93e9919ea686a4525b5d57287c766cdf835035b0d0839bed4b8fb9a714ae5"; const TARGET_DP = "0_userdata.0.Zabbix.json"; async function zabbixRequest(method, params) { return new Promise((resolve, reject) => { const payload = { jsonrpc: "2.0", method: method, params: params, id: 1 }; const options = { headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${TOKEN}` }, timeout: 10000 }; httpPost(ZABBIX_URL, JSON.stringify(payload), options, (error, response) => { if (error) reject(error); else { try { const data = JSON.parse(response.data); resolve(data.result); } catch (e) { reject(e); } } }); }); } async function updateZabbixData() { try { // 1. Hosts abrufen const hosts = await zabbixRequest("host.get", { output: ["hostid", "host"], selectInterfaces: ["available"], filter: { status: 0 } }); let hostInfoMap = {}; hosts.forEach(h => { const avail = h.interfaces[0]?.available; hostInfoMap[h.hostid] = { host: h.host, online_status: avail === "1" ? "Available" : (avail === "2" ? "Not available" : "Unknown") }; }); // 2. Items abrufen const items = await zabbixRequest("item.get", { output: ["hostid", "name", "key_", "lastvalue", "units", "value_type"], filter: { key_: [ "system.cpu.load[all,avg1]", "vm.memory.utilization", "vfs.fs.dependent.size[/,pused]", "apt.updates.count" ] } }); let cpuData = {}; items.forEach(item => { const hostName = hostInfoMap[item.hostid]?.host; if (!hostName) return; if (!cpuData[hostName]) cpuData[hostName] = {}; cpuData[hostName][item.name] = { value: item.lastvalue, unit: item.units, value_type: (item.value_type === "0" || item.value_type === "3") ? "number" : "string" }; }); // 3. Probleme abrufen (EXAKT wie im Bash-Skript gefiltert) const problems = await zabbixRequest("problem.get", { output: ["eventid", "objectid"], filter: { acknowledged: "0" }, severities: [0, 1, 2, 3, 4, 5], suppressed: false, recent: false // Dies sorgt für die Übereinstimmung mit deinem Bash-Filter }); let triggerData = {}; if (problems && problems.length > 0) { const triggerIds = problems.map(p => p.objectid); const mapping = Object.fromEntries(problems.map(p => [p.objectid, p.eventid])); const triggers = await zabbixRequest("trigger.get", { output: ["triggerid", "description", "priority", "lastchange"], triggerids: triggerIds, selectHosts: ["name"], skipDependent: true, monitored: true, only_true: true, expandDescription: true }); triggers.forEach(t => { const hostName = t.hosts[0]?.name; if (!hostName) return; if (!triggerData[hostName]) triggerData[hostName] = { warnings: { alerts: {} } }; const priorities = ["Not classified", "Information", "Warning", "Average", "High", "Disaster"]; triggerData[hostName].warnings.alerts[t.triggerid] = { uid: mapping[t.triggerid] || "unknown", triggerid: t.triggerid, // Wieder drin message: t.description, priority: priorities[parseInt(t.priority)] || "Unknown", time: new Date(parseInt(t.lastchange) * 1000).toLocaleString('de-DE') }; }); } // 4. Zusammenführen let finalJson = {}; for (const hostId in hostInfoMap) { const hostName = hostInfoMap[hostId].host; const alertsObj = triggerData[hostName]?.warnings?.alerts || {}; finalJson[hostName] = { ...(cpuData[hostName] || {}), warnings: { online_status: hostInfoMap[hostId].online_status, count: Object.keys(alertsObj).length, alerts: alertsObj } }; } // Speichern und Loggen setState(TARGET_DP, JSON.stringify(finalJson, null, 2), true); console.log(`Zabbix-Update: ${Object.keys(finalJson).length} Hosts verarbeitet.`); } catch (err) { console.error("Fehler: " + err); } } updateZabbixData();