Мониторинг и конфиг в MQTT (/config/serial и т. п.)

правило в cron:
*/5 * * * * mosquitto_pub -t '/config/serial' -f /etc/wb-mqtt-serial.conf -r

Получение данных:
Key: mqtt.get["{$MQTT_BROKER}","/config/serial"]

Discovery rule “Serial devices” - Dependent item, в Preprocessing добавить JavaScript:

var obj = JSON.parse(value);
var devices = []
for (var p in obj.ports) {
    var port = obj.ports[p]
    for (var d in port.devices) {
        var dev = port.devices[d]
        var en = (port.hasOwnProperty('enabled') ? port.enabled : true) && (dev.hasOwnProperty('enabled') ? dev.enabled : true);
        if (!en)
            continue;
        var topic = ('' + dev.device_type).toLowerCase();
        topic = topic.replace("wb-msw v.", "wb-msw-v"); // hack
        topic = topic.replace("wb-mwwww", "wb-mrgbw"); // hack
        topic = topic.replace(/[^a-z0-9-].*/, "");
        topic += '_' + dev.slave_id;
        var item = {
            "port": port.path.replace('/dev/tty', ''),
            "type": dev.device_type,
            "id": dev.slave_id,
            "topic": topic,
        }
        devices.push(item);
    }
}
// console.log(JSON.stringify(devices, null, 2));
return JSON.stringify(devices, null, 2);

LLD macros:

Ну и какой-нибудь item prototype чтобы все заработало, у меня настроено чтение Uptime регистра (по умолчанию выключено, enable: false, надо править шаблоны или через web gui):

Детали - в прикрепленном темплейте, напрямую подходит к Zabbix 5.4 + Agent2 (именно 2), но можно прикрутить получение данных внешней командой если версия агента ниже 5.4.

Template WB-Serial MQTT.yaml (5.3 КБ)

1 лайк