Допустим нужно создать триггер, который будет срабатывать на слово «Warning» в некоем логе. Прежде чем создать триггер нужно создать элемент данных, тут казалось бы всё просто, в zabbix есть встроенный ключ log, но он требует включения функции активных проверок в агенте, а это не получится сделать, так как активные проверки не работают из-за того, что версии zabbix-agent и zabbix-сервера сильно отличаются. Вопрос, можно ли создать подобный элемент данных используя не zabbix-агент, а snmp-агент или ssh-агент и как это сделать?
Ad Widget
Collapse
Мониторить лог, но не с помощью zabbix-агента
Collapse
X
-
Можете попробовать что-то сконструировать из
vfs.file.regexp или vfs.file.regmatch
Еще можно эмулировать работу активного агента - запускать по расписанию скрипт проверяющий лог и если нашлось что то нужное слать на заббикс zabbix_sender ом. Или слать через расширение snmp, или писать в файл некий флаг и забирать этот файл в забикс.Last edited by Hamardaban; 28-01-2024, 16:34. -
Не очень понял, как связана способность агента работать в активном режиме с его версией и версией сервера. По-моему, никак. Более старые агенты работают с более новым сервером в любом режиме. Если агент, наоборот, новее сервера, то иногда это работоспособно, иногда нет - зависит от версий. Кстати, агент 4.0, несовместимый с сервером ниже 4.0, может с ним работать в активном режиме.Comment
-
Hamardaban, при использовании vfs.file.* будет всё время перечитываться одно и то же место файла (либо весь файл заново, либо заданные строки), что не подходит для мониторинга логов.
При опросе элементов данных в активном и пассивном режимах принципиальная разница, помимо того, с чьей стороны инициируется соединение, заключается ещё и в том, что используются различные протоколы общения Сервер <-> Агент. При этом для пассивного режима этот протокол очень простой, по сути: в запросе пересылается только ключ опрашиваемой метрики, а в ответе - только значение (либо признак ошибки). Для активного же режима протокол значительно сложнее; помимо того, что в одном запросе можно переслать сразу множество значений различных метрик, так для них пересылаются ещё и некоторые метаданные. В частности, для метрик log*[...] и eventlog[...] в обе стороны пересылается значение счётчика прочитанных байт, т.е. местоположение внутри лог-файла, до которого данные уже были проанализированы.
Если не использовать активный режим работы агента, то тогда надо использовать какие-то самописанные скрипты (например, запускаемые через UserParameter или просто по расписанию - cron либо scheduler) и сохранять значение подобного счётчика где-то локально, откуда скрипт сможет прочитать его при следующем вызове.Comment
-
Ну потому что в zabbix_agentd.log у меня сыплется:Не очень понял, как связана способность агента работать в активном режиме с его версией и версией сервера. По-моему, никак. Более старые агенты работают с более новым сервером в любом режиме. Если агент, наоборот, новее сервера, то иногда это работоспособно, иногда нет - зависит от версий. Кстати, агент 4.0, несовместимый с сервером ниже 4.0, может с ним работать в активном режиме.
Если попробовать чекнуть агент из консоли:Code:Message from 172.31.0.196 is missing header. Message ignored.
Где-то (уже не найду ссылку) вычитал, что это из-за несовместимости версий. Сервер - 3.2.6, агент - 4.0.4Code:$ zabbix_get -s 172.31.23.18 -k system.uptime zabbix_get [50687]: Check access restrictions in Zabbix agent configuration
Comment
-
Это сообщение относится к работе пассивных проверок, Semiadmin как раз писал про то, что продолжают работать активные.
А это вообще относится не к версии агента, а к параметру "Server=".
Впрочем, допускаю, что и в случае проверок более старой утилитой zabbix_get более нового агента будет аналогичный эффект, поскольку данная утилита, по сути, моделирует запрос от сервера к агенту, который выполняется во время пассивных проверок. Можно убедиться в этом, сопоставив время появления ругани в логе агента (про missing header) со временем опроса этой утилитой.Comment
-
Для проверки лог файлов на сервере, как отмечено выше, версия агента и сервера не имеет значение.
Выбирается тип "активные проверки" и ЭД - log или logrt. Агент цепляется "параллельно" дескриптору файла логов (типа в линухе tail) и на лету проверяет заданные регекспы.
Можно также использовать сторонние аналогичные "цеплялки", типа мультилог и т.д.
Ну и, кажется, лог файл должен быть текстовым и длина строки не более (не помню) символов.Comment
-
Ещё раз, активные проверки могут работать при неработающих пасивных? Хорошо, переведу вопрос не в как мониторить лог, а как сделать так, чтобы проверки работали? Примеры сообщений я привёл. Пробовал уже всё.Это сообщение относится к работе пассивных проверок, Semiadmin как раз писал про то, что продолжают работать активные.
Comment
-
Comment
-
Есть сервер на Debian 10, на нём стоял пакет snmpd версии 5.7.3 и мониторился он SNMPv2-агентами и ssh-агентами и с ними в отличие от zabbix-агента проблем не было. Установил zabbix-agent версии 4.0.4, запустил, в Zabbix значок ZBX на странице настройки узла загорелся красным. В течение нескольких дней игрался с опциями в файле zabbix_agentd.conf но так и не смог добиться, чтобы значок стал зелёным. В какой-то момент заметил, что элемент данных с ключём log["/var/log/mylog", "Error",UTF-8"] даже получает данные, по всей видимости это как раз случай когда активные проверки работают при неработающих пассивных, в какой момент они заработали я даже не уловил.
Хочу сделать, чтобы значок всё-таки был зелёным и хочу сделать уведомление, чтобы оно содержало фрагмент строки, который попадает в элемент данных.
В лог /var/log/mylog время от времени падают строки содержащие "Error", что может быть критично, хотелось бы получать оперативно уведомления о них. При этом в начале строк стоит время, его можно обрезать как лишнее, так как и так есть время сообщения.Last edited by Iskatel; 01-02-2024, 16:51.Comment
-
Т.е. сейчас у вас сформулировано два вопроса:
По поводу значка. Вы писали, что версия сервера Zabbix у вас - 3.2.х. Я правильно понимаю, что речь идёт вот об этой странице настроек и колонке "Доступность"?Хочу сделать, чтобы значок всё-таки был зелёным и хочу сделать уведомление
Если так, то что видно во всплывающем окне при наведении указателя мыши на красный значок?
По поводу уведомления. Если данные от агента идут, то осталось сделать две вещи: 1) настроить триггер, который бы срабатывал при получении новых данных; 2) настроить действие (Action), отсылающее оповещение нужным пользователям при срабатывании этого триггера.
В документации обе темы достаточно нормально описаны, пересказывать не буду. Обычно вопросы возникают лишь с первым, поскольку условие триггера должно предусматривать не только то, когда он должен срабатывать, но и то, когда он должен закрываться (и последнее при мониторинге логов может вызывать проблемы).
Одним из стандартных вариантов является закрывание триггера просто по таймеру (когда нет новых данных в течение какого-то времени), для этого можно использовать триггерную функцию nodata(). Т.е. в простейшем случае можно сформулировать, например, так:
Такой триггер сработает при получении свежих данных от агента (что приведёт к отсылке уведомления, если настроено соответствующее действие), после чего через полминуты закроется.Code:{ВашХост:log["/var/log/mylog", "Error",UTF-8"].nodata(30)}=0Comment
-
Comment
Comment