3 Zabbix агент (UNIX)
Значения по умолчанию являются умолчаниями демона, но не значениями которые указаны в поставляемых файлах конфигурации.
Поддерживаемые параметры в файле конфигурации Zabbix агента (zabbix_agentd.conf):
Параметр | Обязательный | Диапазон | Умолчание | Описание |
---|---|---|---|---|
Alias | нет | Задает алиас ключу элемента данных. Его можно использовать для замены длинных и сложных ключей элементов данных на более простые и короткие. Можно добавлять несколько параметров Alias. Разрешено указывать несколько параметров с одинаковым ключем Alias. Несколько ключей Alias могут ссылаться на один и тот же ключ. Алиасы можно использовать в HostMetadataItem, но нельзя в HostnameItem параметрах. |
1. Получение ID пользователя ‘zabbix’.
Alias=zabbix.userid:vfs.file.regexp[/etc/passwd,»^zabbix. (5+)». \1]
Теперь можно использовать сокращенный ключ zabbix.userid, чтобы получать данные.
2. Получение утилизации CPU с параметрами по умолчанию и с пользовательскими параметрами.
Alias=cpu.util:system.cpu.util
Alias=cpu.util[*]:system.cpu.util[*]
Такая запись позволяет использовать cpu.util ключ для получения утилизации CPU в процентах с параметрами по умолчанию, а также использовать cpu.util[all, idle, avg15] для получения конкретных данных об утилизации CPU.
В Zabbix агенте версии 2.0.0 параметры конфигурации связанные с активными и пассивными проверками изменены.
Смотрите раздел «Смотрите также» внизу этой страницы для получения более подробных сведений об эти изменениях.
Zabbix поддерживает файлы конфигурации только в кодировке UTF-8 без BOM.
Комментарии, начинающиеся с «#», поддерживаются только в начале строки.
Смотрите также
Parameters
Parameter | Mandatory | Range | Default | Description |
---|---|---|---|---|
Alias | no | Sets an alias for an item key. It can be used to substitute long and complex item key with a smaller and simpler one. Multiple Alias parameters may be present. Multiple parameters with the same Alias key are allowed. Different Alias keys may reference the same item key. Aliases can be used in HostMetadataItem but not in HostnameItem parameters. |
1. Retrieving the ID of user ‘zabbix’.
Alias=zabbix.userid:vfs.file.regexp[/etc/passwd,»^zabbix. (4+)». \1]
Now shorthand key zabbix.userid may be used to retrieve data.
2. Getting CPU utilization with default and custom parameters.
Alias=cpu.util:system.cpu.util
Alias=cpu.util[*]:system.cpu.util[*]
This allows use cpu.util key to get CPU utilization percentage with default parameters as well as use cpu.util[all, idle, avg15] to get specific data about CPU utilization.
See also
Учим zabbix-agent «есть» на ходу и не давиться пользовательскими параметрами (UserParameter)
Все те кто пользуются системой мониторинга Zabbix, с большой вероятностью, уже использовали UserParameter. Это, безусловно, очень полезный инструмент позволяющий значительно расширить базовые возможности Zabbix и поставить на мониторинг что-то такое эдакое. Но, к сожалению, у данного подхода есть свои минусы:
- Необходимость распространение файлов конфигураций UserParameter
- Необходимость перезапуска zabbix-agent после добавления UserParameter
- Не нулевой шанс, что zabbix-agent не запустится после добавления некорректного файла конфигурации UserParameter
Проблему под пунктом 1 затрагивать не будем и перейдем к оставшимся двум, т.к. решив проблему 2 и 3 пунктов, та что под №1 станет чуть менее проблемной потому-что мы не будем бояться сломать запуск zabbix-agent при распространении файлов UserParameter.
Не так давно Zabbix в своем Release Notes for Zabbix 6.0.0 сообщил о том, что внедрил runtime команду для перечитки пользовательских параметров, без необходимости перезагрузки zabbix-agent. Но, по моему скромному мнению, что перезагрузка агента, что выполнение runtime команды (zabbix_agentd -R userparameter_reload) — являются дополнительным шагом при распространении UserParameter. А так как проблема с возможной поломкой запуска zabbix-agent не решена, то по прежнему распространение UserParameter остается не совсем безопасным этапом.
Запуск zabbix-agent достаточно просто сломать, не аккуратно работая с файлами пользовательских параметров. Добавьте агенту zabbix некорректный файл пользовательских параметров (дублирующие ключи, опечатки, лишние непечатаемые символы) и выполнив его перезагрузку, он пожалуется на конфиг и не запуститься. В случае если «плохой» UserParameter уже распространили на несколько тысяч или десятков тысяч серверов, то это очень неприятно исправлять. При большом парке серверов, большого разнообразия продуктов, нескольких десятков инженеров, разрабатывающих мониторинг, и нескольких сотен различных UserParameter, данная ситуация нет-нет, да и случится. Конечно же надо тестировать UserParameter перед распространением, но человеческий фактор никто не отменял.
Именно возможность сломать zabbix-agent, я считаю, основой опасностью UserParameter, и, поэтому, в первую очередь надо решать именно эту проблему.
Как же не стать параноиком и при этом не сломать zabbix-agent?
Не хочется мириться с потенциальным риском сломать zabbix-agent на большом количестве серверов практически одномоментно, но при этом хочется продолжать пользоваться пользовательскими параметрами, расширяя возможности мониторинга Zabbix.
Решение, которое можно предложить — это использовать один стандартный UserParameter (в связке со скриптом), который нам добавит возможность использования безопасно и динамически(как бонус) загружаемых пользовательских параметров.
Взаимодействие zabbix-agent с динамическими пользовательскими параметрами будет выглядеть следующим образом
Основные тезисы данного подхода:
- Мы используем классические файлы UserParameter, т.е. переписывать ничего не придется.
- Если UserParameter параметр не корректный, то сломается сбор данных только для данного UserParameter и только для ключа/ключей, где закралась ошибка
- Если UserParameter попадает в директорию динамически загружаемых, то сбор метрик по нему начнется моментально.
Пример настройки на Linux
1. Создадим в /etc/zabbix/zabbix_agentd.d/ директорию dyn_up для динамических UserParameter:
2. Создадим в директории /etc/zabbix/zabbix_agentd.d/ скрипт dyn_up.sh со следующим содержимым:
#!/bin/bash #Укажем расположение директории динамических UserParameter dyn_up_dir="/etc/zabbix/zabbix_agentd.d/dyn_up" #Получим ключ команды и имя UserParameter read -r up_key up_name ; i++)) do up_cmd=$(echo "$up_cmd" | perl -pe 's/(?'$(( i - 1 ))'/'"$"'/g') done #$$ меняем на $ up_cmd=$(echo "$up_cmd" | perl -pe 's/\$\$/\$/g') #Выполняем команду /bin/bash -c "$up_cmd"
3. Создадим в директории /etc/zabbix/zabbix_agentd.d/ наш единственный обычный UserParameter userparameter_dyn_up.conf со следующим содержимым:
UserParameter=dyn.up[*], ./dyn_up.sh «$1» «$2» «$3» «$4» «$5» «$6» «$7» «$8» «$9»
4. Запуск проверки будет выглядеть следующим образом:
P.S. Вашему вниманию представлен концепт, который опробован только на zabbix-агентах под Linux.
Скрипт для Windows может выглядеть следующим образом
$dir_path = 'D:\zabbix\zabbix_agentd.d\dyn_up' $up_key, $up_name = $args[0].split('@') $up_name = Join-Path -Path $dir_path -ChildPath $up_name $up_cmd = (Select-String -Path $up_name -Pattern "^UserParameter\s?=\s?$up_key(\[\*\])?,").Line.Split(',') | Select-Object -Skip 1 for($i=1; $i -lt $args.Count; $i++)< $str = '(?'+$i $up_cmd = $up_cmd -replace $str, $args[$i] > $up_cmd = $up_cmd -replace '\$', '$' Invoke-Expression "$up_cmd"
1 Extending Zabbix agents
This tutorial provides step-by-step instructions on how to extend the functionality of Zabbix agent with the use of a user parameter.
Step 1
Write a script or command line to retrieve required parameter.
For example, we may write the following command in order to get total number of queries executed by a MySQL server:
mysqladmin -uroot status | cut -f4 -d":" | cut -f1 -d"S"
When executed, the command returns total number of SQL queries.
Step 2
Add the command to zabbix_agentd.conf:
UserParameter=mysql.questions,mysqladmin -uroot status | cut -f4 -d":" | cut -f1 -d"S"
mysql.questions is a unique identifier. It can be any valid key identifier, for example, queries.
Test this parameter by using Zabbix agent with «-t» flag (if running under root, however, note that the agent may have different permissions when launched as a daemon):
zabbix_agentd -t mysql.questions
Step 3
Reload user parameters from the configuration file by running:
zabbix_agentd -R userparameter_reload
You may also restart the agent instead of the runtime control command.
Test the parameter by using zabbix_get utility.
Step 4
Add new item with Key=mysql.questions to the monitored host. Type of the item must be either Zabbix Agent or Zabbix Agent (active).
Be aware that type of returned values must be set correctly on Zabbix server. Otherwise Zabbix won’t accept them.