Доброго времени суток, уважаемые Форумчане.
Прошу не судить строго, найденное решение задачи наверняяка далеко от совершенства, более красиво пока решить не получается.
Итак, не так давно погрузился в тему Zabbix на следующей задаче: есть система, в процессе своей работы пишет лог, из которого интересны 2 строки вида:
1)начальное событие, идентифицируется наличием в строке последовательности символов "|1|15|". Строка должна появиться строго в период 08:30 до 09:00. Если после 09:00 строка в это время не появилась, должен загораться триггер "Отсутствует начальное событие" и горит до тех пор пока не начнется период ожидания конечного события.
2)конечное событие, идентифицируется наличием в строке последовательности символов "|1|16|. Должна появится в период с 17:30 о 18:00, если после 18:00 строки в логе нет - зажигаем триггер "Отсутствует конечное событие" и горит до тех пор пока на начнется период ожидания начального события следующего дня.
Пока применил такое вот решение: разбил периоды горения триггеров на начальное и конечное события (если ожидаемые строки в логе не появятся) на несколько интервалов и в зависимости от этого смотрел через функцию nodata() какое время нет событий, собранных соответствующим итемом.
1)начальные события "StarEvent":
шаблон:SystemMY
итем: log[{$system_syslog_evt},\|1\|15\|,windows-1251]
триггер
{RabisNP:log[{$system_syslog_evt},\|1\|15\|,windows-1251].nodata(210m)}=1&{SystemMY:log[{$system_syslog_evt},\|1\|15\|,windows-1251].time(0)}>090000&{SystemMY:log:log[{$system_syslog_evt},\|1\|15\|,windows-1251].time(0)}<120000)|({SystemMY:log:log[{$system_syslog_evt},\|1\|15\|,windows-1251].nodata(390m)}=1&{SystemMY:log:log[{$system_syslog_evt},\|1\|15\|,windows-1251].time(0)}>120000&{SystemMY:log:log[{$system_syslog_evt},\|1\|16\|,windows-1251].time(0)}<150000)|({SystemMY:log:log[{$system_syslog_evt},\|1\|15\|,windows-1251].nodata(540m)}=1&{SystemMY:log:log[{$system_syslog_evt},\|1\|15\|,windows-1251].time(0)}>150000&{SystemMY:log:log[{$system_syslog_evt},\|1\|15\|,windows-1251].time(0)}<173000)
2)конечные события
шаблон:SystemMY
итем: log[{$system_syslog_evt},\|1\|16\|,windows-1251]
триггер
{SystemMY:log[{$system_syslog_evt},\|1\|16\|,windows-1251].nodata(150m)}=1&{SystemMY:log[{$system_syslog_evt},\|1\|16\|,windows-1251].time(0)}>180000&{SystemMY:log[{$system_syslog_evt},\|1\|16\|,windows-1251].time(0)}<200000)|({SystemMY:log[{$system_syslog_evt},\|1\|16\|,windows-1251].nodata(270m)}=1&{SystemMY:log[{$system_syslog_evt},\|1\|16\|,windows-1251].time(0)}>200000&{SystemMY:log[{$system_syslog_evt},\|1\|16\|,windows-1251].time(0)}<220000)|({SystemMY:log[{$system_syslog_evt},\|1\|16\|,windows-1251].nodata(390m)}=1&{SystemMY:log[{$system_syslog_evt},\|1\|16\|,windows-1251].time(0)}>220000&{SystemMY:log[{$system_syslog_evt},\|1\|16\|,windows-1251].time(0)}<240000)|({SystemMY:log[{$system_syslog_evt},\|1\|16\|,windows-1251].nodata(900m)}=1&{SystemMY:log[{$system_syslog_evt},\|1\|16\|,windows-1251].time(0)}>000000&{SystemMY:log[{$system_syslog_evt},\|1\|16\|,windows-1251].time(0)}<083000)
Пытался решить проблему созданием вычисляемого итема для начала на примере начального события созданием итема: str("log[{$system_syslog_evt},\|1\|15\|,windows-1251]","\|1\|15\|",30)
Далее хотел создать на него два триггера, один - что открывающее событие не появилось вовремя, а второй: когда конкретно оно появилось (чтобы далее умжножать время на 1 и брать максимум за период, если 0 события нет, если не 0 есть). Но итем не собирал события, система пишет ошибку вычисления.
Прошу помочь в решении вопросов:
1)по первому способу без вычисляемых итемов можно ли задачу решить используя штатный функционал Zabbix?
2)можно ли вычисляемый тип итема применять к логам?
Прошу не судить строго, найденное решение задачи наверняяка далеко от совершенства, более красиво пока решить не получается.
Итак, не так давно погрузился в тему Zabbix на следующей задаче: есть система, в процессе своей работы пишет лог, из которого интересны 2 строки вида:
1)начальное событие, идентифицируется наличием в строке последовательности символов "|1|15|". Строка должна появиться строго в период 08:30 до 09:00. Если после 09:00 строка в это время не появилась, должен загораться триггер "Отсутствует начальное событие" и горит до тех пор пока не начнется период ожидания конечного события.
2)конечное событие, идентифицируется наличием в строке последовательности символов "|1|16|. Должна появится в период с 17:30 о 18:00, если после 18:00 строки в логе нет - зажигаем триггер "Отсутствует конечное событие" и горит до тех пор пока на начнется период ожидания начального события следующего дня.
Пока применил такое вот решение: разбил периоды горения триггеров на начальное и конечное события (если ожидаемые строки в логе не появятся) на несколько интервалов и в зависимости от этого смотрел через функцию nodata() какое время нет событий, собранных соответствующим итемом.
1)начальные события "StarEvent":
шаблон:SystemMY
итем: log[{$system_syslog_evt},\|1\|15\|,windows-1251]
триггер
{RabisNP:log[{$system_syslog_evt},\|1\|15\|,windows-1251].nodata(210m)}=1&{SystemMY:log[{$system_syslog_evt},\|1\|15\|,windows-1251].time(0)}>090000&{SystemMY:log:log[{$system_syslog_evt},\|1\|15\|,windows-1251].time(0)}<120000)|({SystemMY:log:log[{$system_syslog_evt},\|1\|15\|,windows-1251].nodata(390m)}=1&{SystemMY:log:log[{$system_syslog_evt},\|1\|15\|,windows-1251].time(0)}>120000&{SystemMY:log:log[{$system_syslog_evt},\|1\|16\|,windows-1251].time(0)}<150000)|({SystemMY:log:log[{$system_syslog_evt},\|1\|15\|,windows-1251].nodata(540m)}=1&{SystemMY:log:log[{$system_syslog_evt},\|1\|15\|,windows-1251].time(0)}>150000&{SystemMY:log:log[{$system_syslog_evt},\|1\|15\|,windows-1251].time(0)}<173000)2)конечные события
шаблон:SystemMY
итем: log[{$system_syslog_evt},\|1\|16\|,windows-1251]
триггер
{SystemMY:log[{$system_syslog_evt},\|1\|16\|,windows-1251].nodata(150m)}=1&{SystemMY:log[{$system_syslog_evt},\|1\|16\|,windows-1251].time(0)}>180000&{SystemMY:log[{$system_syslog_evt},\|1\|16\|,windows-1251].time(0)}<200000)|({SystemMY:log[{$system_syslog_evt},\|1\|16\|,windows-1251].nodata(270m)}=1&{SystemMY:log[{$system_syslog_evt},\|1\|16\|,windows-1251].time(0)}>200000&{SystemMY:log[{$system_syslog_evt},\|1\|16\|,windows-1251].time(0)}<220000)|({SystemMY:log[{$system_syslog_evt},\|1\|16\|,windows-1251].nodata(390m)}=1&{SystemMY:log[{$system_syslog_evt},\|1\|16\|,windows-1251].time(0)}>220000&{SystemMY:log[{$system_syslog_evt},\|1\|16\|,windows-1251].time(0)}<240000)|({SystemMY:log[{$system_syslog_evt},\|1\|16\|,windows-1251].nodata(900m)}=1&{SystemMY:log[{$system_syslog_evt},\|1\|16\|,windows-1251].time(0)}>000000&{SystemMY:log[{$system_syslog_evt},\|1\|16\|,windows-1251].time(0)}<083000)Пытался решить проблему созданием вычисляемого итема для начала на примере начального события созданием итема: str("log[{$system_syslog_evt},\|1\|15\|,windows-1251]","\|1\|15\|",30)
Далее хотел создать на него два триггера, один - что открывающее событие не появилось вовремя, а второй: когда конкретно оно появилось (чтобы далее умжножать время на 1 и брать максимум за период, если 0 события нет, если не 0 есть). Но итем не собирал события, система пишет ошибку вычисления.
Прошу помочь в решении вопросов:
1)по первому способу без вычисляемых итемов можно ли задачу решить используя штатный функционал Zabbix?
2)можно ли вычисляемый тип итема применять к логам?