Netpulse_SasS/server/migrations/0026_fix_icmp_conditions.sql
byrsapty 4d1fd40e91
Some checks are pending
CI / web (push) Waiting to run
CI / server (push) Waiting to run
CI / agent (push) Waiting to run
Режим NOC TV: дашборд на екрані в диспетчерській без входу
Телевізор нікуди не залогиниш — зранку на стіні висітиме форма входу
замість карти мережі. Тому /tv/<токен> розгалужується до перевірки
сесії, а доступ дає токен у посиланні.

Публічний зріз навмисно вузький: розкладка, алерти, хости й метрики
ЛИШЕ тих хостів, які показані на цьому дашборді. Ширший доступ був би
простішим у коді й перетворив би забутий лінк на ключ до кабінету.

Плитки ті самі, що в кабінеті: джерело даних підмінюється контекстом.

Дорогою знайдено дві помилки. Вбудовані icmp-тригери мали умову у
формі, якої движок не розуміє, і мовчали, засипаючи журнал помилками —
виправлено міграцією 0026 і в редакторі. База стенда виявилась у
SQL_ASCII: тепер міграція відмовляється накочуватись на не-UTF8, а
compose задає кодування явно.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 15:41:22 +03:00

45 lines
2.4 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- =====================================================================
-- NetPulse :: 0026_fix_icmp_conditions.sql
-- Умова icmp-тригера має форму {"metric":"loss_pct","op":">","value":20}.
--
-- У 0024 вбудовані тригери отримали {"op":"loss_pct >","value":99} —
-- форму зі старого прикладу в коментарі до 0007, якої движок сповіщень
-- ніколи не розумів. Він читає `metric`, `op` і `value` окремими полями,
-- тож кожен тік писав у журнал «невідома метрика "" для джерела icmp», а
-- правило мовчало.
--
-- Найгірша з можливих поломок для моніторингу: система виглядає
-- налаштованою, тригери на місці, а про недоступність хоста не скаже
-- ніхто. Помітно це стає під час першої ж аварії.
--
-- Саму 0024 не чіпаємо, хоча спокуса є: застосована міграція незмінна,
-- і рант її контрольної суми не дарма зупиняє запуск. Свіжа інсталяція
-- просто отримає обидві поспіль — 0024 покладе стару форму, 0026 одразу
-- виправить.
-- =====================================================================
-- Розбираємо злиплий рядок "поле оператор" назад на два поля. Беремо
-- лише ті записи, де поля `metric` немає: чужі й уже виправлені умови
-- не чіпаємо.
UPDATE tpl.triggers
SET condition = jsonb_build_object(
'metric', split_part(condition->>'op', ' ', 1),
'op', NULLIF(split_part(condition->>'op', ' ', 2), ''),
'value', condition->'value'
)
WHERE source = 'icmp'
AND condition ? 'op'
AND NOT (condition ? 'metric')
AND position(' ' IN (condition->>'op')) > 0;
UPDATE alr.rules
SET condition = jsonb_build_object(
'metric', split_part(condition->>'op', ' ', 1),
'op', NULLIF(split_part(condition->>'op', ' ', 2), ''),
'value', condition->'value'
),
updated_at = now()
WHERE source = 'icmp'
AND condition ? 'op'
AND NOT (condition ? 'metric')
AND position(' ' IN (condition->>'op')) > 0;