...
- Установить программу 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... Блок кода #!/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=iostat[*],/etc/zabbix/scripts/iostat.sh "none" "$1" "$2" UnsafeUserParameters=1
- Перезапустить Zabbix-агента для вступления настроек в силу:
Command sudo systemctl restart zabbix-agent
Настройка Zabbix-сервера на получение статистики
На локальном компьютере:
- Создать файл
iostat_template.xml, содержащий шаблон отчёта.
В Zabbix-сервере шаблон будет называться "Performance Metrics" и состоять в группе "MyTemplates".Раскрыть title Содержимое файла iostat_template.xml... Блок кода <?xml version="1.0" encoding="UTF-8"?> <zabbix_export> <version>6.0</version> <date>2025-03-18T13:22:13Z</date> <groups> <group> <uuid>23b4cb78db6e4cd194f3600a0006af6c</uuid> <name>MyTemplates</name> </group> </groups> <templates> <template> <uuid>753644a41edb4dcaa1d110cd93e90242</uuid> <template>Performance Metrics</template> <name>Performance Metrics</name> <groups> <group> <name>MyTemplates</name> </group> </groups> <discovery_rules> <discovery_rule> <uuid>daaeac93f1244836b063034061377c00</uuid> <name>IOSTAT: Hard disk drive discovery</name> <key>iostat[]</key> <delay>60s</delay> <lifetime>1d</lifetime> <item_prototypes> <item_prototype> <uuid>0bb6bf63770a4630a0389c3122739325</uuid> <name>Доля объединенных запросов на чтение (от всех запросов на чтение)</name> <key>iostat[%rrqm,{#HDNAME}]</key> <delay>30s</delay> <value_type>FLOAT</value_type> <units>Процент</units> </item_prototype> <item_prototype> <uuid>c9ad769abab54a08b95d2ce74c1fec8e</uuid> <name>Процент времени, в течение которого диск был занят выполнением запросов</name> <key>iostat[%util,{#HDNAME}]</key> <delay>30s</delay> <value_type>FLOAT</value_type> <units>Процент</units> </item_prototype> <item_prototype> <uuid>348df69b695b4a3cb1ff02311c9d050e</uuid> <name>Доля объединенных запросов на запись (от всех запросов на запись).</name> <key>iostat[%wrqm,{#HDNAME}]</key> <delay>30s</delay> <value_type>FLOAT</value_type> <units>Процент</units> </item_prototype> <item_prototype> <uuid>9d546f3a7a5b4ea7b31153690bd71b3f</uuid> <name>Среднее количество активных (ожидающих выполнения) операций.</name> <key>iostat[aqu-sz,{#HDNAME}]</key> <delay>30s</delay> <value_type>FLOAT</value_type> <units>number</units> </item_prototype> <item_prototype> <uuid>17edea89307740ce83f8f0366db87cb1</uuid> <name>Количество операций удаления (discard) в секунду (актуально для SSD).</name> <key>iostat[d/s,{#HDNAME}]</key> <delay>30s</delay> <value_type>FLOAT</value_type> <units>ops/s</units> </item_prototype> <item_prototype> <uuid>b7bbda24b9e74a2597070790214e4388</uuid> <name>Средний размер запроса на удаление.</name> <key>iostat[dareq-sz,{#HDNAME}]</key> <delay>30s</delay> <value_type>FLOAT</value_type> <units>kBytes</units> </item_prototype> <item_prototype> <uuid>792ea57a779e4298befa1f205191d12f</uuid> <name>Количество данных, удаляемых в секунду</name> <key>iostat[dkB/s,{#HDNAME}]</key> <delay>30s</delay> <value_type>FLOAT</value_type> <units>kBytes</units> </item_prototype> <item_prototype> <uuid>1f79c62da23c4ac6b766242e379aae42</uuid> <name>Количество объединенных (merged) запросов на удаление в секунду</name> <key>iostat[drqm/s,{#HDNAME}]</key> <delay>30s</delay> <value_type>FLOAT</value_type> <units>ops/s</units> </item_prototype> <item_prototype> <uuid>b9ae57862ad341df9066fae0455bc457</uuid> <name>Среднее время ожидания операции удаления</name> <key>iostat[d_await,{#HDNAME}]</key> <delay>30s</delay> <value_type>FLOAT</value_type> <units>ms</units> </item_prototype> <item_prototype> <uuid>31d99d98afec4f808071708d9ad309c4</uuid> <name>Количество операций принудительного сброса кеша (flush) в секунду</name> <key>iostat[f/s,{#HDNAME}]</key> <delay>30s</delay> <value_type>FLOAT</value_type> <units>ops/s</units> </item_prototype> <item_prototype> <uuid>f39804e082d34f67b1bc1d8a41ec1cad</uuid> <name>Среднее время ожидания операции flush.</name> <key>iostat[f_await,{#HDNAME}]</key> <delay>30s</delay> <value_type>FLOAT</value_type> <units>ms</units> </item_prototype> <item_prototype> <uuid>b1e754be49d4453185d3bfae0b2c20e0</uuid> <name>Количество операций чтения в секунду</name> <key>iostat[r/s,{#HDNAME}]</key> <delay>30s</delay> <value_type>FLOAT</value_type> <units>ops/s</units> <description>Скорость чтения килобайт в секунду</description> </item_prototype> <item_prototype> <uuid>88db077435e441c6936fcfac82da91b0</uuid> <name>Средний размер запроса на чтение.</name> <key>iostat[rareq-sz,{#HDNAME}]</key> <delay>30s</delay> <value_type>FLOAT</value_type> <units>kBytes</units> </item_prototype> <item_prototype> <uuid>089779fb67e34c63bdbd8b256983c24d</uuid> <name>Объем данных, читаемых с диска</name> <key>iostat[rkB/s,{#HDNAME}]</key> <delay>30s</delay> <value_type>FLOAT</value_type> <units>kBytes/s</units> </item_prototype> <item_prototype> <uuid>0f1149f20cc14d4bb6d39e7d8749b8be</uuid> <name>Количество объединенных (merged) запросов</name> <key>iostat[rrqm/s,{#HDNAME}]</key> <delay>30s</delay> <value_type>FLOAT</value_type> <units>ops/s</units> </item_prototype> <item_prototype> <uuid>6a62aa51da90454aa78d2f783a8e231f</uuid> <name>Среднее время ожидания операции чтения</name> <key>iostat[r_await,{#HDNAME}]</key> <delay>30s</delay> <value_type>FLOAT</value_type> <units>ms</units> <description>Время задержки на чтение</description> </item_prototype> <item_prototype> <uuid>dec7a67b116448d298b88d9618e929cb</uuid> <name>Количество операций записи в секунду</name> <key>iostat[w/s,{#HDNAME}]</key> <delay>30s</delay> <value_type>FLOAT</value_type> <units>ops/s</units> </item_prototype> <item_prototype> <uuid>b4ca236fad94413e947c2fe8f58f4305</uuid> <name>Средний размер запроса на запись</name> <key>iostat[wareq-sz,{#HDNAME}]</key> <delay>30s</delay> <value_type>FLOAT</value_type> <units>kBytes</units> </item_prototype> <item_prototype> <uuid>5016437f0c804a80bf261681dc5135cc</uuid> <name>Объем данных, записываемых на диск.</name> <key>iostat[wkB/s,{#HDNAME}]</key> <delay>30s</delay> <value_type>FLOAT</value_type> </item_prototype> <item_prototype> <uuid>fd59e2645c36415ca3a435f180a07e89</uuid> <name>Количество объединенных (merged) запросов на запись</name> <key>iostat[wrqm/s,{#HDNAME}]</key> <delay>30s</delay> <value_type>FLOAT</value_type> <units>ops</units> </item_prototype> <item_prototype> <uuid>b790d46d0c564a57b1b666d75285865e</uuid> <name>Среднее время ожидания операции записи</name> <key>iostat[w_await,{#HDNAME}]</key> <delay>30s</delay> <value_type>FLOAT</value_type> <units>ms</units> <description>Время ожидания на запись</description> </item_prototype> </item_prototypes> <graph_prototypes> <graph_prototype> <uuid>0391be4240e04a8f97e7bc50a25300b7</uuid> <name>Average Ask Size</name> <graph_items> <graph_item> <color>1A7C11</color> <calc_fnc>ALL</calc_fnc> <item> <host>Performance Metrics</host> <key>iostat[wareq-sz,{#HDNAME}]</key> </item> </graph_item> <graph_item> <sortorder>1</sortorder> <color>274482</color> <calc_fnc>ALL</calc_fnc> <item> <host>Performance Metrics</host> <key>iostat[dareq-sz,{#HDNAME}]</key> </item> </graph_item> <graph_item> <sortorder>2</sortorder> <color>F63100</color> <calc_fnc>ALL</calc_fnc> <item> <host>Performance Metrics</host> <key>iostat[rareq-sz,{#HDNAME}]</key> </item> </graph_item> </graph_items> </graph_prototype> <graph_prototype> <uuid>47d0189c82d24e69995b4e30e53e1f48</uuid> <name>Data volume Read/Write</name> <graph_items> <graph_item> <color>1A7C11</color> <calc_fnc>ALL</calc_fnc> <item> <host>Performance Metrics</host> <key>iostat[wkB/s,{#HDNAME}]</key> </item> </graph_item> <graph_item> <sortorder>1</sortorder> <color>274482</color> <calc_fnc>ALL</calc_fnc> <item> <host>Performance Metrics</host> <key>iostat[rkB/s,{#HDNAME}]</key> </item> </graph_item> </graph_items> </graph_prototype> <graph_prototype> <uuid>6d0413c48295437fb494b7d7a2916237</uuid> <name>Disk Latency</name> <graph_items> <graph_item> <color>1A7C11</color> <calc_fnc>ALL</calc_fnc> <item> <host>Performance Metrics</host> <key>iostat[w_await,{#HDNAME}]</key> </item> </graph_item> <graph_item> <sortorder>1</sortorder> <color>274482</color> <calc_fnc>ALL</calc_fnc> <item> <host>Performance Metrics</host> <key>iostat[d_await,{#HDNAME}]</key> </item> </graph_item> <graph_item> <sortorder>2</sortorder> <color>F63100</color> <calc_fnc>ALL</calc_fnc> <item> <host>Performance Metrics</host> <key>iostat[r_await,{#HDNAME}]</key> </item> </graph_item> </graph_items> </graph_prototype> <graph_prototype> <uuid>2dee0215de194ae7ba017b68d044dd64</uuid> <name>Read/Write speed</name> <graph_items> <graph_item> <color>1A7C11</color> <calc_fnc>ALL</calc_fnc> <item> <host>Performance Metrics</host> <key>iostat[dkB/s,{#HDNAME}]</key> </item> </graph_item> <graph_item> <sortorder>1</sortorder> <color>274482</color> <calc_fnc>ALL</calc_fnc> <item> <host>Performance Metrics</host> <key>iostat[w/s,{#HDNAME}]</key> </item> </graph_item> <graph_item> <sortorder>2</sortorder> <color>F63100</color> <calc_fnc>ALL</calc_fnc> <item> <host>Performance Metrics</host> <key>iostat[r/s,{#HDNAME}]</key> </item> </graph_item> </graph_items> </graph_prototype> </graph_prototypes> </discovery_rule> </discovery_rules> </template> </templates> </zabbix_export>
...