(Это для Zabbix 2.2.2.)
у меня есть правило открытия который может возвращать более 100 элементов, за которыми я бы хотел следить. Данные по каждому элементу могут быть собраны UserParameter вызов отдельного исполняемого файла.
Реализация их как пассивных проверок съедает zabbix агент живым, порождая внешний процесс для каждого элемента.
Данные по всем Предметы можно легко собрать сразу все и отправить на Zabbix сервер оптом (через zabbix_sender). Я не знаю, как это правильно реализовать. Документация не отвечает на мои (потенциально глупые) вопросы.
Как я могу заставить Zabbix агент выполнить один внешний вызов моего настраиваемого сценария сбора данных и отправить обратно все данные сразу для более 100 обнаруженных элементов, а также не вызывать действия на стороне клиента для каждый пункт? Чего я хочу избежать, так это того, чтобы агент Zabbix пытался собирать каждый элемент отдельно.
Правило обнаружения должно создавать элементы. Насколько я понимаю, каждый элемент приведет к тому, что агент zabbix попытается что-то сделать для сбора его данных. Есть ли способ предотвратить это или связать группу элементов с одной активной проверкой на стороне клиента?
Отчасти я не понимаю, как активные проверки предполагается реализовать. Если одна активная проверка может отправить обратно пакет данных товаров, как бы элемент был определен для этого хоста (чтобы агент не пытался собрать данные элемента по отдельности) и какой элемент будет определен для вызова активной проверки (или какой-либо другой тип элемента), который будет осуществлять сбор фактических данных (но не сохранять сами данные)? Это настоящий вопрос, на который мне не отвечает документация. Как Zabbix намеревается для меня реализовать активные проверки или использовать zabbix_sender для отправки массовых обновлений для элементов (которые агент попытается собрать самостоятельно).
Базовая концепция Zabbix - один элемент (чек) = одно значение. Сервер Zabbix не предоставляет функции парсера для анализа нескольких значений, поэтому всегда должно быть только одно значение.
Если вы хотите вернуть большее значение, чем нужно использовать обходные пути, см. zabbix UserParameter возвращает 2 или более значений
Пример отправителя Zabbix:
разрешить выполнение команды в zabbix-agent и создать элемент (активный или пассивный) для запуска вашего скрипта:
system.run["myscript.sh > output_for_zabbix_sender.txt; zabbix_sender -s <host_name> -z <zabbix_server> -i output_for_zabbix_sender",nowait]
Он выполнит команду в режиме nowait. myscript.sh производит вывод в формате:
hostname key1 value1
hostname key2 value2
...
И этот вывод обрабатывается (отправляется) на сервер zabbix с помощью zabbix_sender. В этом случае тип элемента должен быть Zabbix trapper (zabbix_sender). В конце концов, вам не понадобится элемент system.run, вы можете выполнить скрипт с zabbix_sender как задание cron.
Если вам нужно идеальное решение для мониторинга, не забывайте обрабатывать ошибки, минимизировать IOP, ...
Вы также можете использовать zabbix_sender для поиска - просто следуйте документации о необходимом формате, например:
hostname discovery_key {"data":[{"{#ID}": "/"},{"{#ID}":"/usr"},{"{#ID}":"/var"}]}