• Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8).

Введение

В статье описана установка расширения Zabbix для получения статистики работы дисковых накопителей на клиентском компьютере через команду iostat -dxk.

Предварительная настройка

Настроить Zabbix-сервер и Zabbix-агента в соответствии со статьёй "Установка системы мониторинга Zabbix на Astra Linux Special Edition".

Настройка Zabbix-агента

На компьютере, на котором работает Zabbix-агент:

  1. Установить программу для получения статистики работы дисковых накопителей:

    apt update
    sudo  apt install sysstat

  2. Создать каталог для хранения скрипта, собирающего статистику:

    sudo mkdir -p /etc/zabbix/scripts/

  3. Создать скрипт /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}'
    
  4. Настроить права скрипта:

    chmod 750 /etc/zabbix/scripts/iostat.sh
    chown root:zabbix /etc/zabbix/scripts/iostat.sh

  5. Настроить Zabbix-агента на использование скрипта.
    Для этого в файле /etc/zabbix/zabbix_agentd.conf задать параметры:
    UserParameter=iostat[*],/etc/zabbix/scripts/iostat.sh "none" "$1" "$2"
    
    UnsafeUserParameters=1
  6. Перезапустить Zabbix-агента для вступления в силу настроек:

    sudo systemctl restart zabbix-agent

Настройка Zabbix-сервера

В веб-интерфейсе Zabbix-сервера:

  1. Создать на локальном компьютере файл 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>
    
  2. Загрузить шаблон отчёта.
    Для этого в главном меню выбрать пункт "Сбор данных → Шаблоны". Справа вверху страницы нажать на кнопку "Импорт".
    В открывшемся окне в поле "Импортировать файл" выбрать файл с шаблоном и нажать на кнопку "Импорт":

    Откроется окно с шаблоном.

    Нажать на кнопку "Импорт".
    При успешном импорте вверху страницы отобразится сообщение "Импортировано успешно".


добавить агента

посмотреть статистику