Ad Widget

Collapse

Мониторинг параметров smart

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • aib
    Senior Member
    • Jan 2014
    • 1615

    #46
    Согласно описания на сайте Microsoft, в командных файлах необходимо удваивать символ процента

    Вполне возможно, что ваша строка UserParameter должна выглядеть как
    Code:
    UserParameter=uHDD[*],for /F "tokens=10" %%a in ('"C:\Program Files (x86)\smartmontools\bin\smartctl.exe" -a $1 ^| findstr $2') do @echo %%a
    Чтобы проверить, что выдаются правильные результаты, используйте на клиентском компьютере
    Code:
    [root@zabbix_client ~]# zabbix_agentd -t uHDD["/dev/csmi2,0",Reallocated_Sector_Ct]
    uHDD["/dev/csmi2,0",Reallocated_Sector_Ct]       [t|9999]
    и на сервере

    Code:
    [root@zabbix ~]# zabbix_get -s ip_of_client -k uHDD["/dev/csmi2,0",Reallocated_Sector_Ct]
    9999
    Sincerely yours,
    Aleksey

    Comment

    • rostik
      Junior Member
      • Mar 2014
      • 3

      #47
      на клиенте написал:

      UserParameter=uHDD[*],for /F "tokens=10" %%a in ('C:\"Program Files (x86)"\smartmontools\bin\smartctl.exe -a $1 ^|findstr $2') do @echo %%a

      пробую на сервере:

      # zabbix_get -s 192.168.2.203 -k uHDD["/dev/csmi2,0",Reallocated_Sector]
      %%a was unexpected at this time.

      пробовал разные варианты, ну никак.
      И так куча работы на столе, а тут вроде бы и не проблема, а побороть пока не получается.

      Во всяком случае спасибо за совет.

      Comment

      • aib
        Senior Member
        • Jan 2014
        • 1615

        #48
        Вот как у меня получилось.
        Сначала проверил, что выводит команда smartctl
        Code:
        C:\Program Files (x86)\smartmontools\bin> smartctl -a /dev/sda
        ...............
        SMART Attributes Data Structure revision number: 10
        Vendor Specific SMART Attributes with Thresholds:
        ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_
        FAILED RAW_VALUE
          1 Raw_Read_Error_Rate     0x000f   117   091   006    Pre-fail  Always       -
               134261816
          3 Spin_Up_Time            0x0003   096   095   000    Pre-fail  Always       -
               0
          4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -
               210
        .......................
        Потом попробовал команду вывода одного параметра (обратите внимание, где стоят одиночные кавычки, а где двойные).
        Кстати - изначально вы были правы, используя одиночный символ %.
        Code:
        C:\Program Files (x86)\smartmontools\bin>for /F "tokens=10" %a in ('"c:\Program
        Files (x86)\smartmontools\bin\smartctl.exe" -a /dev/sda ^| findstr Start_Stop_Co
        unt') do @echo %a
        [B]210[/B]
        Добавил строчку в zabbix_agent.conf
        Code:
        UserParameter=uHDD[*],for /F "tokens=10" %a in ('"C:\Program Files (x86)\smartmontools\bin\smartctl.exe" -a $1 ^|findstr $2') do @echo %a
        Перезапустил агента и проверил со стороны сервера
        Code:
        [root@zabbix ~]# zabbix_get -s 10.1.10.137 -k uHDD["/dev/sda",Start_Stop_Count]
        [B]210[/B]
        К сожалению, не нашел компьютеров, на которых имя диска содержало бы запятую. Попробуйте замаскировать ее при вызове - например, обратным слэшем.
        Code:
        # zabbix_get -s 192.168.2.203 -k uHDD["/dev/[B]csmi2\,0[/B]",Reallocated_Sector]
        Sincerely yours,
        Aleksey

        Comment

        • grommir
          Senior Member
          • Mar 2013
          • 134

          #49
          немного не потеме наверное. это больше по grep вопрос.
          есть следующая проблема

          Code:
          root@zabbix:/usr/lib/zabbix/externalscripts# zabbix_get -s buh2 -k "smarttest[-i,"/dev/sda"]" | grep "Serial Number" | awk '{print $NF}'
          WD-WCAV9R67****
          root@zabbix:/usr/lib/zabbix/externalscripts# zabbix_get -s buh1 -k "smarttest[-i,"/dev/sda"]" | grep "Serial Number" | awk '{print $NF}'
          zabbix_get [51571]: Get value error: cannot connect to [[buh1]:10050]: [113] No route to host
          соответственно в первом случае комп buh2 в онлайне, а во втором комп buh1 выключен. Вопрос - почему во втором случае grep не режет неправильный вывод?

          Comment

          • gescheit
            Senior Member
            • Jul 2007
            • 156

            #50
            Потому что в греп попадает только stdout, а stderr прямо в консоль.
            zabbix_get -s buh1 -k "smarttest[-i,"/dev/sda"]" 2>&1 | grep "Serial Number" | awk '{print $NF}'

            Comment

            • aib
              Senior Member
              • Jan 2014
              • 1615

              #51
              Rostik?
              Are you OK?

              Прошла неделя после последнего сообщения - всё работает или всё в гневе удалено и забыто?
              Sincerely yours,
              Aleksey

              Comment

              • rostik
                Junior Member
                • Mar 2014
                • 3

                #52
                )))
                всё в гневе удалено и забыто - это вот точное выражение, но пока просто нету времени чтоб разобраться плюс к тому же другой виндовс сервер также с рейд масивом...
                да и руководство тут насыпало целую кучу других "более важных" дел.

                Comment

                • grommir
                  Senior Member
                  • Mar 2013
                  • 134

                  #53
                  как на счет организовать что-то типа готового решения?
                  что например есть у меня:

                  клиент

                  Code:
                  UserParameter=smart.discovery,"%ProgramFiles%\Zabbix Agent\smartctl.exe" --scan
                  UserParameter=smarttest[*],"%ProgramFiles%\Zabbix Agent\smartctl.exe" $1 $2
                  smartctl.exe - находится в папке с агентом(распроспространяется по сети через GPO).


                  сервер

                  Code:
                  root@zabbix:/usr/lib/zabbix/externalscripts# ls
                  ddisk.sh  md_smart.sh  SMART.sh  sn_smart.sh
                  ddisk.sh - дискавери дисков
                  Code:
                  #!/bin/bash
                  
                  SRV=$1
                  n=0
                  
                  # LLD Список HDD
                  
                  
                  for i in `zabbix_get -s $SRV -k 'smart.discovery' | awk '{print $1}'`
                  do
                    if [ `zabbix_get -s $SRV -k "smarttest[-A,\"$i\"]" |  sed 1,7d | wc -l` -gt 0 ]
                     then
                      n=$[$n+1]
                       h[$n]=$i
                     fi
                  done
                  
                  if [ -z ${h[1]} ]
                      then
                      echo "smart not supported"
                      else
                  i=1
                  j=$[$n-1]
                  echo "{ \"data\":
                  ["
                      while [ $i -le $j ]
                      do
                      echo "{ \"{#HDD}\":\"${h[$i]}\" } ,"
                      i=$[$i+1]
                      done
                  echo "{ \"{#HDD}\":\"${h[$i]}\" } "
                  echo " ] } "
                  fi
                  md_smart.sh - модель диска
                  Code:
                  #!/bin/bash
                  
                  s=$1
                  h=$2
                  
                  
                  zabbix_get -s $s -k "smarttest[-i,\"$h\"]" 2>&1 | grep "Device Model" | awk '{print $NF}'
                  sn_smart.sh - серийный номер диска
                  Code:
                  #!/bin/bash
                  
                  s=$1
                  h=$2
                  
                  
                  zabbix_get -s $s -k "smarttest[-i,\"$h\"]" 2>&1 | grep "Serial Number" | awk '{print $NF}'
                  SMART.sh - слегка подправленный скрипт от Гончарова для нормальной работы с хостами ушедшими в оффлайн
                  Code:
                  RESULT=`zabbix_get -s $SERVER -k smarttest[-H,\"$HDD\"] 2>&1 | grep -i health

                  Ну и соответственно сам шаблон для монитринга в аттаче. Мониторит здоровье винта, серийный номер, модель, температуру, рост переназначенных секторов.

                  Неплохо было бы все это причесать и оптимизировать, но как-то не до того.
                  Attached Files

                  Comment

                  • undisSss
                    Junior Member
                    • Apr 2014
                    • 26

                    #54
                    Сейчас как раз заниямаюсь настройкой мониторинга smart на виндовых машинах посредством smartctl. Реализовал обнаружение и сборку самих параметров (агент выполняет js скрипт, более универсальный способ по моему, отдельный сткрипт для дискавери и для остальных параметров). Шаблон за основу брал тот который предоставил gospodin.horoshiy в начале ветки.

                    Сечас завис с настройкой триггеров.
                    Определить состояние параметра можно сравнив значения VALUE & THRESH, для любого параметра. (http://www.opennet.ru/base/sys/smart_hdd_mon.txt.html)
                    Т.е если VALUE меньше или равно THRESH, то считает что жд выходит из строя, или если параметр не критичный, то может продолжать работу, но ресурс его считается исчерпан.

                    Моя идея по поводу самого триггера: настраиваю чтобы заббикс собирал не само значение (VALUE которое по сути без THRESH бесполезно, или RAW_VALUE) а отношение VALUE/THRESH (кстати может кто ни будь скажет что лучше собирать отношение WORST/THRESH). И у же если это значение < 1 то "критическая" важность.

                    Опыта тонокого анализа вывода smart у меня нету, а в приведенной выше статье, автор в одном из примеров делает оценку ЖД, ни один из параметров которого не достиг критической отметки, но всеже выдает неудовлетворительную оценку жесткому диску:

                    (с)
                    ================================================== =============
                    ================================================== =============

                    Смотрим атрибуты:

                    smartctl -A /dev/hdd

                    === START OF READ SMART DATA SECTION ===
                    SMART Attributes Data Structure revision number: 10
                    Vendor Specific SMART Attributes with Thresholds:
                    ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
                    1 Raw_Read_Error_Rate 0x000f 056 049 006 Pre-fail Always - 144758668
                    3 Spin_Up_Time 0x0003 097 096 000 Pre-fail Always - 0
                    4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 11
                    5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0
                    7 Seek_Error_Rate 0x000f 081 060 030 Pre-fail Always - 140845722
                    9 Power_On_Hours 0x0032 073 073 000 Old_age Always - 24186
                    10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
                    12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 136
                    194 Temperature_Celsius 0x0022 044 063 000 Old_age Always - 44
                    195 Hardware_ECC_Recovered 0x001a 056 049 000 Old_age Always - 144758668
                    197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0
                    198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0
                    199 UDMA_CRC_Error_Count 0x003e 200 182 000 Old_age Always - 42
                    200 Multi_Zone_Error_Rate 0x0000 100 253 000 Old_age Offline - 0
                    202 TA_Increase_Count 0x0032 100 253 000 Old_age Always - 0


                    А этот диск уже ресурс подвыработал...

                    Raw_Read_Error_Rate (частота ошибок при чтении данных с диска,
                    происхождение которых обусловлено аппаратной частью диска) - 049

                    Seek_Error_Rate (частота ошибок при позиционировании блока головок.) -
                    060 И температура не радует совсем, хотя проверка overall-health - PASSED
                    ================================================== =============
                    ================================================== =============

                    Может тут есть такие же эксперты, которые смогут мне помочь настроить триггеры, чтобы можно было выставить триггеры хотябы 2х - 3х важностей


                    Скрипты и шаблоны пока не выкладываю, т.к не имеют законченного вида.

                    Comment

                    • AlexSt
                      Member
                      • Aug 2012
                      • 43

                      #55
                      Есть значения тригеров важности а так же зависимости тригиров, smart чтука тонкая, и правильно сдалать тригеры под смарт, ето уже ваша логическая цепочка, забикс отображает только туинформацию которую вы ему передаете, и оценивает её так как вы представляете. имею ввиду тригеры. тут считаю нужно понимать саму технологию смарт, так как вы мониторите её, а то что снял агент вам нужно проанализировать

                      Comment

                      • AlexSt
                        Member
                        • Aug 2012
                        • 43

                        #56
                        Вы представили лимстинг ошибок, но не ошибок заббикса, а ошибки смартцтл, вот их и нужно анализировать, возможно как лог добавить, логи довольно легко парсятся агентом

                        Comment

                        • gescheit
                          Senior Member
                          • Jul 2007
                          • 156

                          #57
                          Не знаю как в винде, но в юниксах можно просто проанализировать exit статус. Вот выдержка из документации:
                          RETURN VALUES
                          Bit 4: We found prefail Attributes <= threshold.

                          Comment

                          • undisSss
                            Junior Member
                            • Apr 2014
                            • 26

                            #58
                            Originally posted by gescheit
                            Не знаю как в винде, но в юниксах можно просто проанализировать exit статус. Вот выдержка из документации:
                            Return values
                            bit 4: We found prefail attributes <= threshold.
                            Получается он возвращает значения отношение value/thresh уже равно 1 или меньше, а меня интересует на каком коэффициенте можно выдавать предупреждение, на каком уже бить тревогу. При значении бликом или меньшем 1, я так понимаю бить тревогу уже может оказаться поздно

                            Comment

                            • AlexSt
                              Member
                              • Aug 2012
                              • 43

                              #59
                              Говорю же , правильно продумайте логику смарт ошибок, потом все в заббикс на тригеры + зависимости тригеров повешайте.
                              Например: у меня мониторится файловый архив, 6 массивов раид 10 , по агент выдает поврежденные винты и разрушенные массивы. что у вас там на винде в душе не чаю
                              Last edited by AlexSt; 11-07-2014, 10:44.

                              Comment

                              • AlexSt
                                Member
                                • Aug 2012
                                • 43

                                #60
                                Статус массива Disc6 не Optimal Файловый сервер 11 Июл 2014 14:16:54 3ч 29м 5с
                                Статус массива Disc0 не Optimal Файловый сервер 11 Июл 2014 01:59:49 15ч 46м 10с
                                Диск Device12 не Online Файловый сервер
                                пример

                                Comment

                                Working...