Умеет ли zabbix-агент запускать произвольные скрипты и передавать результаты их работы в виде строк и цифр в zabbix? Как это сделать? Допустим нужно мониторить данные об использовании памяти неким процессом, данные брать из /proc, PID процесса брать из файла.
Ad Widget
Collapse
Мониторить произвольные данные в linux
Collapse
X
-
Может. Смотрите в сторону UserParameter (ссылка).
Использование памяти процессом с данным именем или командной строкой можно брать агентом безо всяких скриптов (см. параметр proc.mem[...]). Для чего пихать в Zabbix PID процесса - не могу себе представить; но если хочется - то через скрипты можно (про UserParameter я уже сказал). -
А если агент настолько старый, что некоторые параметры не поддерживает? Вобщем про UserParameter я не до конца понял, в zabbix_agentd.conf, как теперь выловить собираемые данные в zabbix. И не улавливаю разницу между агентом и активным агентом, некоторые параметры будут работать только в активном агенте?Comment
-
Вы прикалываетесь, что ли? Какого ответа Вы ожидаете?
Тем не менее, отвечу.
Во-первых - таки да, если агент старый, то какие-то из возможностей, появившихся в более новых версиях, могут в нём отсутствовать.
Во-вторых - у Zabbix-а хорошая документация; в числе прочих достоинств - сгруппированная по версиям, и достаточно легко найти, в какой версии та или иная "фича" есть, а в какой - нет.
В-третьих - а что мешает обновить агента, хотя бы до той же версии, что и сервер?
Наконец, в четвёртых - если обновить агента по какой-то причине нельзя, то всё равно остаётся вариант прикрутить к нему внешний скрипт (через тот же UserParameter).
Опять же: какого ответа Вы ожидаете? Пересказа документации?
Опишите свою задачу, что вы делаете, какого результата ожидаете и что именно не получается - тогда, возможно, сможем помочь.
Ну, это я могу объяснить.
Основное отличие - то, что при работе агента в пассивном режиме за расписанием проверок следит Zabbix-сервер (либо Zabbix-прокси при работе через прокси): на каждую такую проверку он посылает запрос агенту, агент собирает нужные данные и отсылает их в качестве ответа. Каждый такой запрос-ответ - это своя TCP-сессия.
При работе агента в активном режиме сам агент устанавливает соединение с сервером и для начала запрашивает у него список проверок, которые надо выполнять в активном режиме. Получив такой список, за расписанием этих проверок следит сам агент, по мере получения данных отсылая их на сервер. Причём, за одну TCP-сессию он может отослать не одно значение (для одного параметра), а целый список значений для множества параметров, если их надо было опросить примерно в одно время. Это явно эффективнее и с точки зрения использования сети, и с точки зрения нагрузки на сервер Zabbix. Ну, плюс ещё время от времени агент будет заново опрашивать сервер на предмет того, не изменилось ли что-нибудь в списке активных проверок (например, расписание).
В общем случае, агент способен работать в обоих режимах одновременно, собирая какие-то метрики в активном режиме, а какие-то - в пассивном, но есть нюансы.
Большинство параметров может собираться в любом из режимов, хотя есть и исключения: например, мониторинг логов (и Windows Event Log-ов) может работать только в активном режиме.
Это связано с тем, что для опроса таких параметров недостаточно только имени параметра, но требуется передать ещё некоторые служебные данные (например, до какого места этот файл был просмотрен в последний раз), и эти служебные данные передаются только вместе со списком проверок в активном режиме, в то время как при опросе в пассивном режиме агенту пересылается лишь имя параметра (т.е. item key).
Для работы агента в пассивном режиме нужно, чтобы сервер (Zabbix-сервер либо Zabbix-прокси) мог к нему обратиться, для этого в конфигурации сервера должны быть указаны "контакты" агента (его IP-адрес либо DNS-имя). Соответственно, для активного режима требуется обратное: в конфигурации агента нужно указать ссылку на сервер (IP-адрес либо DNS-имя), плюс правильно (с учётом регистра букв) указать имя агента (оно должно совпадать с именем агента, указанном через веб-интерфейс на сервере Zabbix).
Важным также может оказаться конфигурация сети - например, наличие фаерволов между сервером и агентом (тогда надо знать, какие порты и куда пропускать), а также наличие NAT-маршрутизаторов.Last edited by Kos; 23-09-2022, 16:38.Comment
-
Ну давайте тогда никто не будет заходить на этот форум, и закроем его, ведь есть же документация, достаточно её просто читать, обсуждать же не надо?
Да, zabbix и zabbix_agent обновлять нельзя, это такое условие задачи, по факту на сервере стоит Debian 5.0, версия агента там - 1.4.6, версия заббикса - 3.4.15. Заббикс и агент друг друга увидели, значения таких параметров как system.hostname, system.uptime в "последние данные" приходят. Теперь как разобраться с UserParameter, для 3.4 документацию на сайте я не вижу, недавно была для 4.0, но видимо уже убрали, ладно, будем считать, что общий принцип не поменялся. Допустим, в zabbix_agentd.conf добалена строка
UserParameter=uifaces,/etc/zabbix/uifaces.sh
как этот параметр выловить в zabbix? Насколько я понял нужно создать элемент данных с ключём uifaces (это просто - тестовый пример, неважно какую именно строку выдаст парамерт uifaces, если он выдасть то, что надо, то начну писать скрипты с реальными рабочими задачами). Я всё это сделал, но у меня в последних данных парамерт uifaces не появился. Как отлаживать проблему, чтобы понять, где происходит затык?Comment
-
И снова здравствуйте!
А я вот я не понимаю, чего ожидают люди, задавая вопрос: "Прочитал, но ничего не понял" (без какой-либо конкретики).
Ну напишите подробнее - что поняли, чего не поняли; сформулируйте вопрос таким образом, чтобы на него вообще можно было ответить...
Самая старая из поддерживаемых на данный момент версий - 4.0. Документация на неё вполне доступна, как и документация на ещё целый ряд очень старых версий - вплоть до 1.8 (см. скриншот).Да, zabbix и zabbix_agent обновлять нельзя, это такое условие задачи, по факту на сервере стоит Debian 5.0, версия агента там - 1.4.6, версия заббикса - 3.4.15. Заббикс и агент друг друга увидели, значения таких параметров как system.hostname, system.uptime в "последние данные" приходят. Теперь как разобраться с UserParameter, для 3.4 документацию на сайте я не вижу, недавно была для 4.0, но видимо уже убрали [...]
Уже в версии 1.8 UserParameter присутствовал, насчёт 1.4 - не уверен, но весьма вероятно.
Скорее всего, что тоже есть - если бы не было, то наверняка при старте агента он бы ругался на неизвестную опцию в конфиге.
Да, всё верно: общий принцип не поменялся.будем считать, что общий принцип не поменялся. Допустим, в zabbix_agentd.conf добалена строка
UserParameter=uifaces,/etc/zabbix/uifaces.sh
как этот параметр выловить в zabbix? Насколько я понял нужно создать элемент данных с ключём uifaces (это просто - тестовый пример, неважно какую именно строку выдаст парамерт uifaces, если он выдасть то, что надо, то начну писать скрипты с реальными рабочими задачами). Я всё это сделал, но у меня в последних данных парамерт uifaces не появился. Как отлаживать проблему, чтобы понять, где происходит затык?
Добавляете эту строку в конфиг агента, перезапускаете агента (чтобы он перечитал обновлённый конфиг), смотрите его лог (чтобы убедиться, что там нет ругани, да вообще что он запустился успешно).
Агент должен вернуть то, что ваш скрипт выводит в stdout. Самый простой пример - написать в скрипте:
и ожидать, что вернётся строка с единицей.Code:echo 1
Элемент данных, пока отлаживаетесь, создаёте не только с указанным ключом, но и с типом данных "Text" - чтобы видеть, что возвращает ваш скрипт в случае, если он вернёт не число (или не только число), но какую-нибудь ругань. Тип самого элемента данных - "Zabbix agent" или "Zabbix agent (active)", смотря какой режим у вас настроен и используется.
Ещё есть полезная утилита zabbix_get - с её помощью можно сделать запрос к агенту (аналогичный тому, какой делает и сервер Zabbix), а затем посмотреть, что агент на это отвечает.
Я обычно её для тестирования запускаю с той же машины, где работает сервер Zabbix:
Code:zabbix_get -s IP-адрес-агента -k uifaces
Last edited by Kos; 03-10-2022, 09:50.Comment
-
работает
А вот... а... всё, нашёл ошибку, я в настройках указал активный агент вместо просто агент. Спасибо, помогли.Code:$ zabbix_get -s 10.75.1.61 -k uifaces eth0 10.68.156.53/22 br0 192.168.68.254/24 ppp0 10.75.1.61
Comment
Comment