| Секция | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Введение
В статье описана настройка Zabbix-сервера и Zabbix-агента для контролирования работы дисковых накопителей.
Zabbix-агент получает данные о работе накопителей с помощью команды "iostat -dxk" и передаёт их Zabbix-серверу.
Предварительная настройка
Настроить Zabbix-сервер и Zabbix-агента в соответствии со статьёй "Установка системы мониторинга Zabbix на Astra Linux Special Edition".
Якорь Configure_Zabbix_agent Configure_Zabbix_agent
Настройка Zabbix-агента
| Информация |
|---|
Вместо ручной настройки Zabbix-агента можно использовать сценарий автоматической настройки, описанный в разделе "Приложение. Сценарий автоматической настройки Zabbix-агента". |
На узле, на котором работает Zabbix-агент:
- Установить программу iostat:
Command sudo apt install sysstat
- Создать каталог
/etc/zabbix/scripts/:Command sudo mkdir -p /etc/zabbix/scripts/
- В каталоге
/etc/zabbix/scripts/создать сценарийiostat.sh, который будет использоваться Zabbix-агентом для сбора данных о работе накопителей.Раскрыть title Содержимое файла /etc/zabbix/scripts/ iostat.sh... Блок кода language bash #!/bin/bash export LC_ALL="" export LANG="C" # Проверка на передачу параметров if [[ -z "$1" || -z "$2" || -z "$3" ]]; then ##### DISCOVERY ##### DEVICES=`iostat -d | awk '{print $1}' | sed -e '/^\([hsv]d[a-z]\)$/!d'` if [[ -n ${DEVICES} ]]; then JSON="{ \"data\":[" SEP="" for DEV in ${DEVICES}; do JSON=${JSON}"$SEP{\"{#HDNAME}\":\"${DEV}\"}" SEP=", " done JSON=${JSON}"]}" echo ${JSON} fi exit 0 fi ##### PARAMETERS ##### RESERVED="$1" METRIC="$2" DISK="$3" EXEC_TIMEOUT="2" NOW_TIME=`date '+%s'` ##### RUN ##### # Чтение статистики по метрике для конкретного диска declare -A METRICS=( ["r/s"]=2 ["rkB/s"]=3 ["rrqm/s"]=4 ["%rrqm"]=5 ["r_await"]=6 ["rareq-sz"]=7 ["w/s"]=8 ["wkB/s"]=9 ["wrqm/s"]=10 ["%wrqm"]=11 ["w_await"]=12 ["wareq-sz"]=13 ["d/s"]=14 ["dkB/s"]=15 ["drqm/s"]=16 ["%drqm"]=17 ["d_await"]=18 ["dareq-sz"]=19 ["f/s"]=20 ["f_await"]=21 ["aqu-sz"]=22 ["%util"]=23 ) COLUMN=${METRICS[$METRIC]} if [[ -z "$COLUMN" ]]; then echo "Неизвестная метрика, проверьте в 'iostat -dxk': $METRIC" exit 1 fi iostat -dxk | awk -v disk="$DISK" -v col="$COLUMN" '$1 == disk {print $col}' - Задать права для сценария:
Command chmod 750 /etc/zabbix/scripts/iostat.sh
chown root:zabbix /etc/zabbix/scripts/iostat.sh - Настроить Zabbix-агента на использование сценария.
Для этого в файле /etc/zabbix/zabbix_agentd.conf задать параметрUserParameter:
Значение параметраБлок кода ### Option: UserParameter # User-defined parameter to monitor. There can be several user-defined parameters. # Format: UserParameter=<key>,<shell command> # See 'zabbix_agentd' directory for examples. # # Mandatory: no # Default: # UserParameter= UserParameter=iostat[*],/etc/zabbix/scripts/iostat.sh "none" "$1" "$2"
UserParameterсостоит из частей:
-/etc/zabbix/scripts/iostat.sh "none" "$1" "$2"– команда с параметрами, запускаемая аргументами. Запускается Zabbix-агентом для получения данных;
-[*]– означает, что команда будет запускаться с параметрами, полученными от Zabbix-серверасервер передаёт аргументы для запускаемой программы;
- iostat – название ключа, с помощью которого связываются элементы Zabbix-сервера с командой получения данных на стороне Zabbix-агента. . Используется Zabbix-сервером как ссылка на команду/etc/zabbix/scripts/iostat.sh. - Перезапустить Zabbix-агента для вступления настроек в силу:
Command sudo systemctl restart zabbix-agent
Настройка Zabbix-сервера
На локальном компьютере создать файл iostat_template.xml.
...
- Загрузить шаблон отчёта.
Для этого в главном меню выбрать пункт "Сбор данных → Шаблоны".
Откроется страница:
На странице справа вверху нажать на кнопку "Импорт".
Откроется окно:
В окне нажать на кнопку "Выберите файл" и выбрать на локальном компьютере файл с шаблономiostat_template.xml.
Нажать на кнопку "Импорт".
Откроется окно с шаблоном:
Нажать на кнопку "Импорт".
Окно закроется.
Вверху страницы отобразится сообщение "Импортировано успешно". - Добавить узел, на котором установлен Zabbix-агент для сбора данных о работе дисковых накопителей.
Для этого в главном меню выбрать пункт "Мониторинг → Узлы сети".
Откроется страница:
На странице справа вверху нажать на кнопку "Создать узел сети".
Откроется окно:
В окне заполнить поля:
- "Имя узла сети" – ввести имя узла, на котором установлен Zabbix-агент;
- "Шаблоны" – выбрать шаблон "Performance Metrics" из группы шаблонов "MyTemplates";
- "Группы узлов сети" – выбрать "Linux servers";
- "Интерфейсы" – справа внизу от поля нажать на "Добавить"; выбрать из раскрывшегося меню пункт "Агент";
в появившейся строке "Агент" в поле "IP адрес" ввести адрес узла, на котором установлен Zabbix-агент.
В правом нижнем углу окна нажать на кнопку "Добавить".
Окно закроется.
Вверху страницы отобразится сообщение "Узел сети добавлен".
Просмотр данных о работе дисковых накопителей в веб-интерфейсе Zabbix-сервера
В веб-интерфейсе Zabbix-сервера в главном меню выбрать пункт "Мониторинг → Узлы сети".
Откроется страница:
В таблице в строке с узлом, на котором настроен сбор данных Zabbix-агентом, нажать на "Последние данные".
Откроется страница с данными о о работе дисковых накопителей узла:
Возможная проблема и способ её решения
В Веб-интерфейсе в выводимых данных о работе накопителей может появиться проблема с отображением символов. Возможно, эту проблему устранит настройка Zabbix-агента, разрешающая использование небезопасных символов в аргументах команды.
Для этого в файле настроек Zabbix-агента /etc/zabbix/zabbix_agentd.conf необходимо параметру UnsafeUserParameters присвоить значение 1:
| Блок кода |
|---|
### Option: UnsafeUserParameters
# Allow all characters to be passed in arguments to user-defined parameters.
# The following characters are not allowed:
# \ ' " ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @
# Additionally, newline characters are not allowed.
# 0 - do not allow
# 1 - allow
#
# Mandatory: no
# Range: 0-1
# Default:
# UnsafeUserParameters=0
UnsafeUserParameters=1 |
| Якорь | ||||
|---|---|---|---|---|
|
Приложение. Сценарий автоматической настройки Zabbix-агента
Вместо ручной настройки Zabbix-агента, описанной в разделе "Настройка Zabbix-агента", можно использовать сценарий автоматической настройки.
Для этого на узле, на котором работает Zabbix-агент:
- Разместить в одном и том же каталоге сценарий сбора данных
iostat.shи сценарий автоматической настройки агентаiostat-agent-plugin-install.sh.
Содержимое файла iostat.sh приведено в разделе "Настройка Zabbix-агента".Раскрыть title Содержимое файла iostat-agent-plugin-install.sh... Блок кода language bash #!/bin/bash ZABBIX_CONF="/etc/zabbix/zabbix_agentd.conf" #Проверка, выполняется ли скрипт с правами sudo if [ "$(id -u)" -ne 0 ]; then echo -e "Этот скрипт должен быть запущен с правами sudo.\nЗапустите меня так: sudo ./iostat-agent-plugin-install.sh\nВыхожу." exit 1 fi # Обновление репозиториев apt update >/dev/null 2>&1 || echo "Кажется что то с репозиториями, проверьте их!" && exit 1 # Установка пакетов apt install sysstat zabbix-agent -y >/dev/null 2>&1 || echo "Похоже что-то не так с установкой, поставьте вручную: sudo apt install zabbix-agent sysstat -y" && exit 1 # Копирование скрипта echo "Кладу скрипт агента в /etc/zabbix/scripts/iostat.sh" mkdir /etc/zabbix/scripts/ mv ./iostat.sh /etc/zabbix/scripts/iostat.sh # Установка прав на скрипт echo "Поправлю права на скрипт, должно быть '-rwxr-x---(750) root zabbix'" chmod 750 /etc/zabbix/scripts/iostat.sh chown root:zabbix /etc/zabbix/scripts/iostat.sh chmod +x /etc/zabbix/scripts/iostat.sh # Проверка прав ls -ld /etc/zabbix/scripts/iostat.sh echo "UserParameter=iostat[*],/etc/zabbix/scripts/iostat.sh "none" "$1" "$2"" | tee /etc/zabbix/zabbix_agentd.conf # Проверяем наличие строки UnsafeUserParameters и её значение if grep -Eq '^#?\s*UnsafeUserParameters\s*=\s*(0|[^1])' "$ZABBIX_CONF"; then # Если строка закомментирована или значение не 1, то приводим её к UnsafeUserParameters=1 echo "Настрою параметр UnsafeUserParameters на 1 в $ZABBIX_CONF" # Используем sed для замены или добавления строки sed -i 's/^#*\s*UnsafeUserParameters\s*=.*/UnsafeUserParameters=1/' "$ZABBIX_CONF" # Перезапуск Zabbix агент systemctl restart zabbix-agent echo "Zabbix агент перезапущен с изменениями." else echo "Параметр UnsafeUserParameters не найден, добавляю в конец файла." echo "UnsafeUserParameters=1" | tee -a "$ZABBIX_CONF" systemctl restart zabbix-agent fi - Запустить сценарий автоматической настройки агента:
Command chmod +x
iostat-agent-plugin-install.shsudo ./
iostat-agent-plugin-install.sh






