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

Ключ

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

Оглавление
stylenone

Столбец
Информация
titleДанная статья применима к:
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8);
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7).

Введение

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

Zabbix-агент получает данные о работе накопителей с помощью команды "iostat -dxk" и передаёт их Zabbix-серверуiostat -dxk.

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

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

Якорь
Configure_Zabbix_agent
Configure_Zabbix_agent

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

Информация

Вместо ручной настройки Zabbix-агента можно использовать сценарий автоматической настройки, описанный в разделе "Приложение. Сценарий автоматической настройки Zabbix-агента".

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

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

    sudo apt update
    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:
    Блок кода
    UserParameter=iostat[*],/etc/zabbix/scripts/iostat.sh "none" "$1" "$2"
    
    UnsafeUserParameters=1
  6. Перезапустить Zabbix-агента для вступления в силу настроек:
    Command

    sudo systemctl restart zabbix-agent

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

На локальном компьютере:

...

titleСодержимое файла iostat_template.xml...

...

  1. ### 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.

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

    sudo systemctl restart zabbix-agent

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

На локальном компьютере создать файл iostat_template.xml.

Раскрыть
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>

Файл содержит шаблон с описанием параметров дисковых накопителей. Zabbix-сервер использует шаблон для получения данных от Zabbix-агента.

Информация

На Zabbix-сервере шаблон будет называться "Performance Metrics" и состоять в группе шаблонов "MyTemplates".


В веб-интерфейсе Zabbix-сервера настроить получение данных от Zabbix-агента:

  1. Загрузить шаблон отчёта.

    Для этого в главном меню выбрать пункт "Сбор данных → Шаблоны".
    Откроется страница:
    Image Added 
    На странице справа вверху нажать на кнопку "Импорт".

    Откроется окно:
    Image Added
    В окне нажать на кнопку "Выберите файл" и выбрать на локальном компьютере файл с шаблоном iostat_template.xml.
    Нажать на кнопку "Импорт".

    Откроется окно с шаблоном:
    Image Added
    Нажать на кнопку "Импорт".

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

  2. Добавить узел, на котором установлен Zabbix-агент для сбора данных о работе дисковых накопителей.

    Для этого в главном меню выбрать пункт "Мониторинг → Узлы сети".
    Откроется страница:
    Image Added
    На странице справа вверху нажать на кнопку "Создать узел сети".

    Откроется окно:
    Image Added
    В окне заполнить поля:
      - "Имя узла сети" – ввести имя узла, на котором установлен Zabbix-агент;
      - "Шаблоны" – выбрать шаблон "Performance Metrics" из группы шаблонов "MyTemplates";
      - "Группы узлов сети" – выбрать "Linux servers";
      - "Интерфейсы" – справа внизу от поля нажать на "Добавить"; выбрать из раскрывшегося меню пункт "Агент";
            в появившейся строке "Агент" в поле "IP адрес" ввести адрес узла, на котором установлен Zabbix-агент.

    В правом нижнем углу окна нажать на кнопку "Добавить".

    Окно закроется.
    Вверху страницы отобразится сообщение "Узел сети добавлен".

Просмотр данных о работе дисковых накопителей в веб-интерфейсе Zabbix-сервера

В веб-интерфейсе Zabbix-сервера в главном меню выбрать пункт "Мониторинг → Узлы сети".

Откроется страница:
Image Added
В таблице в строке с узлом, на котором настроен сбор данных Zabbix-агентом, нажать на "Последние данные".

Откроется страница с данными о работе дисковых накопителей узла:
Image Added

Возможная проблема и способ её решения

В Веб-интерфейсе в выводимых данных о работе накопителей может появиться проблема с отображением символов. Возможно, эту проблему устранит настройка 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

Якорь
Appendix_Auto_configure_Zabbix_agent
Appendix_Auto_configure_Zabbix_agent

Приложение. Сценарий автоматической настройки Zabbix-агента

Вместо ручной настройки Zabbix-агента, описанной в разделе "Настройка Zabbix-агента", можно использовать сценарий автоматической настройки.

Для этого на узле, на котором работает Zabbix-агент:

  1. Разместить в одном и том же каталоге сценарий сбора данных iostat.sh и сценарий автоматической настройки агента iostat-agent-plugin-install.sh .
    Содержимое файла iostat.sh приведено в разделе  "Настройка Zabbix-агента".
    Раскрыть
    titleСодержимое файла iostat-agent-plugin-install.sh...
    Блок кода
    languagebash
    #!/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
    <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>
      echo "Параметр UnsafeUserParameters не найден, добавляю в    </discovery_rules>конец файла."
            </template>
        </templates>
    </zabbix_export>
    

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

  1. Загрузить шаблон отчёта.
    Для этого в главном меню выбрать пункт "Сбор данных → Шаблоны". Справа вверху страницы нажать на кнопку "Импорт".
    В открывшемся окне в поле "Импортировать файл" выбрать файл с шаблоном и нажать на кнопку "Импорт":
    Image Removed
    Откроется окно с шаблоном.
    Image Removed
    Нажать на кнопку "Импорт".
    При успешном импорте вверху страницы отобразится сообщение "Импортировано успешно".

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

...

  1.     echo "UnsafeUserParameters=1" | tee -a "$ZABBIX_CONF"
    	    systemctl restart zabbix-agent
    fi
  2. Запустить сценарий автоматической настройки агента:
    Command

    chmod +x iostat-agent-plugin-install.sh

    sudo ./iostat-agent-plugin-install.sh