Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

  1. Установить программу iostat:
    Command

    sudo apt install sysstat

  2. Создать каталог /etc/zabbix/scripts/:
    Command

    sudo mkdir -p /etc/zabbix/scripts/

  3. В каталоге /etc/zabbix/scripts/ создать сценарий iostat.sh, который будет использоваться Zabbix-агентом для сбора данных о работе накопителей.
    Раскрыть
    titleСодержимое файла /etc/zabbix/scripts/ iostat.sh...
    Блок кода
    languagebash
    #!/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. Задать права для сценария:
    Command

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

  5. Настроить 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-сервером как ссылка на команду /etc/zabbix/scripts/iostat.sh.

  6. Перезапустить Zabbix-агента для вступления настроек в силу:
    Command

    sudo systemctl restart zabbix-agent

...