🛠️ API отвечает, а метрика в Zabbix исчезла
HTTP 200 есть.
Raw JSON приходит.
Но в Latest data нужного значения нет.
Проверьте preprocessing.
Цепочка выглядит так:
API → raw value → preprocessing → value type conversion → item value → history
Если используется dependent item:
master item → raw JSON → dependent item → JSONPath → value
Пример.
Было:
{ "service": { "latency_ms": 42 } }
JSONPath:
$.service.latency_ms
Стало:
{ "service": { "metrics": { "latency_ms": 42 } } }
HTTP всё ещё 200.
Но старый JSONPath больше не совпадает со структурой.
Что проверить:
— реальный raw response; — master item, если он есть; — preprocessing steps; — порядок steps; — Test / Test all steps; — первый failing step; — Custom on fail; — итоговый value; — type conversion после preprocessing.
Почему важен Custom on fail?
При preprocessing error можно настроить:
— Discard value; — Set custom value; — Set custom error.
Если выбран Discard value, endpoint может работать и raw response может приходить, но конкретное значение не попадёт в history.
А Set value to 0 — не универсальная страховка. Если 0 не имеет правильной семантики, ошибка preprocessing превращается в ложную метрику.
Для dependent item важно разделять:
master не получает raw JSON
и
master работает, а dependent item ломается на preprocessing
Во втором случае API/transport уже менее вероятная ветка.
Типичная ошибка — увидеть пустую Latest data и сразу диагностировать endpoint.
Хотя сначала нужно проверить путь:
raw response → preprocessing → JSONPath/regex/script → Custom on fail → final value → history
Сохраните, что проверять между сырым ответом API и значением, которое дошло до history.
🔹🔹🔹🔹