Ad Widget

Collapse

Мониторинг температуры (2)

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • mda.kem
    Junior Member
    • Mar 2014
    • 17

    #1

    Мониторинг температуры (2)

    Добрый день.

    Есть проблема по получению температуры от агента с которой не могу справится.
    Описание:

    Машина с агентом:
    $ cat /etc/issue
    Ubuntu 12.04.3 LTS \n \l
    $ uname -a
    Linux node1 3.2.28-mcc-generic-pae #14 SMP PREEMPT Tue Feb 19 12:21:33 NOVT 2013 i686 i686 i386 GNU/Linux
    $ zabbix_agent -V
    Zabbix Agent v1.8.11 (revision 26205) (20 March 2012)
    Compilation time: Apr 11 2012 05:11:54

    Машина с сервером:
    $ cat /etc/issue
    Ubuntu 12.04.3 LTS \n \l
    $ uname -a
    Linux zabbix 3.8.0-29-generic #42~precise1-Ubuntu SMP Wed Aug 14 16:19:23 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
    $ zabbix_server -V
    Zabbix server v2.0.9 (revision 39085) (08 October 2013)
    Compilation time: Nov 7 2013 16:00:04

    Скрипт на агенте выполняемый по запросу с сервера:
    (cpu_t - имя скрипта, current|higt - входящие параметры для скрипта.)

    #!/bin/bash
    sensors | awk -v k=$1 '/Core|CPU Temperature/ {
    if (k == "current")
    { split($3,a,".")
    split(a[1],b,"+")
    }
    else
    {
    if (k == "high")
    { split($6,a,".")
    split(a[1],b,"+")
    }
    }
    if (maxt<b[2]) {maxt=b[2]}
    }
    END {print maxt}'

    Часть лога с машины агента, по работе скрипта с входящем параметром - current
    ------------------------------------------------------------
    1311:20140301:201952.824 Processing request.
    1311:20140301:201952.833 Requested [system.run[/etc/zabbix/script/cpu_t current,wait]]
    1311:20140301:201952.833 Executing command '/etc/zabbix/script/cpu_t current'
    1311:20140301:201952.834 In zbx_popen() command:'/etc/zabbix/script/cpu_t current'
    1311:20140301:201952.834 End of zbx_popen():6
    24791:20140301:201952.834 zbx_popen(): executing script
    1311:20140301:201952.844 In zbx_waitpid()
    1311:20140301:201952.844 zbx_waitpid() exited, status:0
    1311:20140301:201952.844 End of zbx_waitpid():24791
    1311:20140301:201952.844 Run remote command [/etc/zabbix/script/cpu_t current] Result [2] [44]...
    1311:20140301:201952.845 Sending back [44]

    Часть лога с машины агента, по работе скрипта с входящем параметром - high
    ------------------------------------------------------------
    1310:20140301:202045.384 Processing request.
    1310:20140301:202045.391 Requested [system.run[/etc/zabbix/script/cpu_t high,wait]]
    1310:20140301:202045.391 Executing command '/etc/zabbix/script/cpu_t high'
    1310:20140301:202045.391 In zbx_popen() command:'/etc/zabbix/script/cpu_t high'
    1310:20140301:202045.391 End of zbx_popen():6
    24914:20140301:202045.391 zbx_popen(): executing script
    1310:20140301:202045.402 In zbx_waitpid()
    1310:20140301:202045.402 zbx_waitpid() exited, status:0
    1310:20140301:202045.402 End of zbx_waitpid():24914
    1310:20140301:202045.403 Run remote command [/etc/zabbix/script/cpu_t high] Result [0] []...
    1310:20140301:202045.403 Sending back [ZBX_NOTSUPPORTED]
    1309:20140301:202045.449 In update_cpustats()
    1309:20140301:202045.450 End of update_cpustats()

    Скрипт 100% рабочий...
    $ zabbix_get -s 192.168.0.1 -k "system.run[/etc/zabbix/script/cpu_t current,wait]"
    34
    $ zabbix_get -s 192.168.0.1 -k "system.run[/etc/zabbix/script/cpu_t high,wait]"
    85
    $
    но... по прошествии некоторого времени мы видим следующее:
    $ zabbix_get -s 192.168.0.1 -k "system.run[/etc/zabbix/script/cpu_t current,wait]"
    34
    $ zabbix_get -s 192.168.0.1 -k "system.run[/etc/zabbix/script/cpu_t high,wait]"
    ZBX_NOTSUPPORTED
    $
    так вот с получением текущей температуры (скрипт с параметром -current) проблем нет, а вот получение high-температуры обрывается по истечение некоторого времени.
    Как только пере стартуешь zabbix_agent, начинает работать и high-температура.
    Из логов(если я правильно разобрался) видно, что агент получает сигнал о выполнении скрипта без ошибок, однако результат выполнения он не получает и соответственно мы видим ошибку.
    Кто подскажет в чем беда.

    P.S. извиняюсь за не знание мат части.
    P.S.S. английский язык практически не знаю.
    Last edited by mda.kem; 03-03-2014, 14:30.
  • ugh
    Senior Member
    • Jun 2009
    • 296

    #2
    Попробуйте сырые данные по high поснимать и посмотреть.
    Может оно у вас периодически как-то экзотически вывод делает?

    Comment

    • aib
      Senior Member
      • Jan 2014
      • 1615

      #3
      ZBX_NOT_SUPPORTED может появляться, если вывод скрипта не цифровой
      Например, выводится " 25" (пробел в начале, или в конце)
      Тогда агент огорчается, что не может предоставить верную информацию в нужном формате и отвечает "ZBX_NOT_SUPPORTED"

      Как вариант отладки - попробуйте поставить тип данных TEXT Для параметра high и посмотреть "сырые" данные за длительный период, чтобы гарантированно прошло "некоторое время" (как вы упоминаете в сообщении)
      Sincerely yours,
      Aleksey

      Comment

      • mda.kem
        Junior Member
        • Mar 2014
        • 17

        #4
        Дело в то, что я недавно начал разбираться с забиксом и мне не совсем понятен термин "сырые", что под этим понимается. И где вы предлагаете поставить тип данных ТЕКСТ, в самом скрипте на машине с агентом или в настройках "элемента данных не" сервере.

        Comment

        • ugh
          Senior Member
          • Jun 2009
          • 296

          #5
          Originally posted by mda.kem
          Дело в то, что я недавно начал разбираться с забиксом и мне не совсем понятен термин "сырые", что под этим понимается. И где вы предлагаете поставить тип данных ТЕКСТ, в самом скрипте на машине с агентом или в настройках "элемента данных не" сервере.
          в настройках

          Comment

          • aib
            Senior Member
            • Jan 2014
            • 1615

            #6
            Originally posted by mda.kem
            Дело в то, что я недавно начал разбираться с забиксом и мне не совсем понятен термин "сырые", что под этим понимается. И где вы предлагаете поставить тип данных ТЕКСТ, в самом скрипте на машине с агентом или в настройках "элемента данных не" сервере.
            "Сырые" (RAW) данные - то, что приходит от внешних источников перед конвертацией и сохранением в базе данных. Т.е. то, что посылает Zabbix agent, или внешний скрипт, или получает SNMP запрос.

            После получения данные могут быть обработаны с участием "custom multiplier". По истечении периода хранения сырых данных они округляются и в базе хранятся уже обработанные данные - Trends. Это уменьшает объем БД.

            Где поменять - настройки Элемента данных (Item).
            Type of information - сменить Numeric(unsigned) -> Text

            Далее - Monitoring -> Latest Data -> select your Host -> select Item -> click GRAPH -> then in top right corner switch from GRAPH to 500 latest values.

            Oops. Прошу прощения - а у вас Zabbix по-каковски разговаривает? По-английски или по-русски?
            Sincerely yours,
            Aleksey

            Comment

            • mda.kem
              Junior Member
              • Mar 2014
              • 17

              #7
              Originally posted by aib
              "Сырые" (RAW) данные - то, что приходит от внешних источников перед конвертацией и сохранением в базе данных. Т.е. то, что посылает Zabbix agent, или внешний скрипт, или получает SNMP запрос.

              После получения данные могут быть обработаны с участием "custom multiplier". По истечении периода хранения сырых данных они округляются и в базе хранятся уже обработанные данные - Trends. Это уменьшает объем БД.

              Где поменять - настройки Элемента данных (Item).
              Type of information - сменить Numeric(unsigned) -> Text

              Далее - Monitoring -> Latest Data -> select your Host -> select Item -> click GRAPH -> then in top right corner switch from GRAPH to 500 latest values.

              Oops. Прошу прощения - а у вас Zabbix по-каковски разговаривает? По-английски или по-русски?
              Благодарю за ликбез.
              Zabbix у меня на русском.
              То что вы порекомендовали я сделал. Где и что смотреть разобрался.
              Так что как выстрелит на 3-5 машинах обязательно отпишусь.

              Comment

              • mda.kem
                Junior Member
                • Mar 2014
                • 17

                #8
                День добрый.
                Ситуация такова.

                лог:
                ################################################## #
                19298:20140306:173739.701 Processing request.
                19298:20140306:173739.701 Requested [system.run[/etc/zabbix/script/cpu_t high,wait]]
                19298:20140306:173739.701 Executing command '/etc/zabbix/script/cpu_t high'
                19298:20140306:173739.701 In zbx_popen() command:'/etc/zabbix/script/cpu_t high'
                19298:20140306:173739.701 End of zbx_popen():6
                6184:20140306:173739.701 zbx_popen(): executing script
                19298:20140306:173739.707 In zbx_waitpid()
                19298:20140306:173739.707 zbx_waitpid() exited, status:0
                19298:20140306:173739.707 End of zbx_waitpid():6184
                19298:20140306:173739.707 Run remote command [/etc/zabbix/script/cpu_t high] Result [2] [80]...
                19298:20140306:173739.707 Sending back [80]
                19295:20140306:173739.963 In update_cpustats()
                19295:20140306:173739.963 End of update_cpustats()
                .............
                1318:20140306:174740.049 Processing request.
                1318:20140306:174740.049 Requested [system.run[/etc/zabbix/script/cpu_t high,wait]]
                1318:20140306:174740.049 Executing command '/etc/zabbix/script/cpu_t high'
                1318:20140306:174740.049 In zbx_popen() command:'/etc/zabbix/script/cpu_t high'
                1318:20140306:174740.049 End of zbx_popen():6
                2312:20140306:174740.049 zbx_popen(): executing script
                1318:20140306:174740.060 In zbx_waitpid()
                1318:20140306:174740.060 zbx_waitpid() exited, status:0
                1318:20140306:174740.060 End of zbx_waitpid():2312
                1318:20140306:174740.060 Run remote command [/etc/zabbix/script/cpu_t high] Result [0] []...
                1318:20140306:174740.060 Sending back [ZBX_NOTSUPPORTED]
                1315:20140306:174740.408 In update_cpustats()
                1315:20140306:174740.408 End of update_cpustats()
                ################################################## #

                На серваке данные отображаются до того же времени что и в логах, после этого не показывается ни чего. т.е. они обрываются на этом времени - 06.Мар.17:38:40
                Есть еще какие предложения?
                Last edited by mda.kem; 18-03-2014, 10:28.

                Comment

                • ugh
                  Senior Member
                  • Jun 2009
                  • 296

                  #9
                  Ну конечно, так непонятно ничего. Сделайте параллельный вывод в файл например.
                  И еще, полный путь к sensors в скрипте лучше указать.

                  Comment

                  • aib
                    Senior Member
                    • Jan 2014
                    • 1615

                    #10
                    возможно (гадание на кофейной гуще) ваш скрипт был модифицирован от другого пользователя (от рута, например) и теперь сам скрипт или его части не могут быть выполнены корректно от Zabbix пользователя

                    поэтому скрипт возвращает 0 вместо номинальной температуры

                    а вот то, что у вас уже 12 дней этот скрипт не выполняется - удивительно.
                    вы его пробовали после того момента проверить "вручную" ?
                    Sincerely yours,
                    Aleksey

                    Comment

                    • mda.kem
                      Junior Member
                      • Mar 2014
                      • 17

                      #11
                      По поводу "гадания на кофейной гущи" абсолютно с вами согласен. Дело в том, что логи агента на уровне 4 очень скудны и из них ясно только то, что агент видит безошибочное исполнение скрипта(1318:20140306:174740.060 zbx_waitpid() exited, status:0; если я правильно понял эти логи) а вот почему он перестает воспринимать результат выполнения или что он получает в качестве результата, остается загадкой. Опция AllowRoot=1 позволяет запускать агента от рута, соответственно скрипт должен запускаться тоже от рута поэтому владелец в данном случае не имеет значение(но.... на данный момент: -rwxrwxrwx 1 root root 241 марта 1 18:37 /etc/zabbix/script/cpu_t) . Что же касается работоспособности скрипта, я в нем уверен на 100% во первых потому , что текущая температура идет без разрывов, во вторых стоит только пере стартовать агента( sudo service zabbix-agent restart ), тут же все начинает опрашиваться, из чего становиться понятным что проблема в агенте.
                      Возможно конечно, что при определенных обстоятельствах в место результата, агент, "ловит" какую нибудь "ересь", или результатом исполнения становиться какая нибудь "ересь" и это становится причиной того, что агент в принципе не хочет смотреть на результат до пере запуска агента. Но как отловить эту "ересь" пока не знаю.
                      На одной из машин я не много модифицировал скриптик:
                      ##################################################
                      #!/bin/bash

                      v=$(sensors | awk -v k=$1 '/Core|CPU Temperature/ {
                      if (k == "current")
                      { split($3,a,".")
                      split(a[1],b,"+")
                      }
                      else
                      {
                      if (k == "high")
                      { split($6,a,".")
                      split(a[1],b,"+")
                      }
                      }
                      if (maxt<b[2]) {maxt=b[2]}
                      }
                      END {print maxt}')

                      echo "\"$v\""
                      ##################################################

                      лог этой машины:
                      ...............
                      23561:20140309:171819.686 Processing request.
                      23561:20140309:171819.687 Requested [system.run[/etc/zabbix/script/cpu_t high,wait]]
                      23561:20140309:171819.687 Executing command '/etc/zabbix/script/cpu_t high'
                      23561:20140309:171819.687 In zbx_popen() command:'/etc/zabbix/script/cpu_t high'
                      23561:20140309:171819.687 End of zbx_popen():6
                      18178:20140309:171819.687 zbx_popen(): executing script
                      23561:20140309:171819.704 In zbx_waitpid()
                      23561:20140309:171819.704 zbx_waitpid() exited, status:0
                      23561:20140309:171819.704 End of zbx_waitpid():18178
                      23561:20140309:171819.704 Run remote command [/etc/zabbix/script/cpu_t high] Result [4] ["76"]...
                      23561:20140309:171819.704 Sending back ["76"]
                      23558:20140309:171819.817 In update_cpustats()
                      23558:20140309:171819.818 End of update_cpustats()
                      ...............
                      1345:20140309:172812.756 Processing request.
                      1345:20140309:172812.766 Requested [system.run[/etc/zabbix/script/cpu_t high,wait]]
                      1345:20140309:172812.766 Executing command '/etc/zabbix/script/cpu_t high'
                      1345:20140309:172812.766 In zbx_popen() command:'/etc/zabbix/script/cpu_t high'
                      1345:20140309:172812.766 End of zbx_popen():6
                      2003:20140309:172812.767 zbx_popen(): executing script
                      1345:20140309:172812.783 In zbx_waitpid()
                      1345:20140309:172812.783 zbx_waitpid() exited, status:0
                      1345:20140309:172812.783 End of zbx_waitpid():2003
                      1345:20140309:172812.783 Run remote command [/etc/zabbix/script/cpu_t high] Result [2] [""]...
                      1345:20140309:172812.783 Sending back [""]
                      1344:20140309:172812.960 In update_cpustats()
                      1344:20140309:172812.960 End of update_cpustats()
                      ...............
                      на стороне сервера отображается следующие:
                      09.Мар.2014 17:19:05 "76"
                      09.Мар.2014 17:29:05 ""
                      09.Мар.2014 17:39:05 ""
                      ...............
                      Может, что из этого наведет на мысль?

                      Comment

                      • ugh
                        Senior Member
                        • Jun 2009
                        • 296

                        #12
                        полный путь к sensors в скрипте попробуйте указать

                        Comment

                        • aib
                          Senior Member
                          • Jan 2014
                          • 1615

                          #13
                          (удалено)
                          Решил полностью повторить весь процесс, чтобы убедиться в правильности своих советов.

                          Например, на моем сервере вывод команды sensors выглядит так:
                          Code:
                          [root@zabbix ~]# sensors
                          w83627hf-isa-0290
                          Adapter: ISA adapter
                          in0:         +1.44 V  (min =  +1.25 V, max =  +1.86 V)
                          in1:         +3.33 V  (min =  +2.80 V, max =  +3.79 V)
                          in2:         +3.31 V  (min =  +2.80 V, max =  +3.79 V)
                          in3:         +2.96 V  (min =  +2.53 V, max =  +3.42 V)
                          in4:         +3.14 V  (min =  +2.67 V, max =  +3.62 V)
                          in5:         +0.66 V  (min =  +0.30 V, max =  +0.99 V)
                          in6:         +1.79 V  (min =  +1.52 V, max =  +2.06 V)
                          in7:         +3.25 V  (min =  +0.51 V, max =  +2.21 V)   ALARM
                          in8:         +1.25 V  (min =  +0.05 V, max =  +2.53 V)
                          fan1:       5273 RPM  (min = 1424 RPM, div = 4)
                          fan2:       5192 RPM  (min = 1424 RPM, div = 4)
                          fan3:          0 RPM  (min = 1424 RPM, div = 4)  ALARM
                          temp1:       +29.0°C  (high = +65.0°C, hyst = +60.0°C)  sensor = thermistor
                          temp2:       +35.5°C  (high = +75.0°C, hyst = +70.0°C)  sensor = thermistor
                          temp3:       +38.0°C  (high = +75.0°C, hyst = +70.0°C)  sensor = thermistor
                          cpu0_vid:   +1.500 V
                          beep_enable:enabled
                          Скрипт, модифицированный под мой вывод, выглядит так:
                          Code:
                          [root@zabbix ~]# cat ./cpu_t
                          #!/bin/bash
                          
                          v=$(/usr/bin/sensors | awk -v k=$1 ' /'temp'/ {
                          if (k == "current")
                          { split($2,a,".")
                          split(a[1],b,"+")
                          }
                          else
                          {
                          if (k == "high")
                          { split($5,a,".")
                          split(a[1],b,"+")
                          }
                          }
                          }
                          END {print b[2]}')
                          echo $(date '+%Y%m%d:%H%m%S') $0 $1 =\> $v >> /var/log/zabbix/cpu_t.log
                          echo $v
                          вывод команды с разными параметрами выглядит так:
                          Code:
                          [root@zabbix ~]# /usr/lib/zabbix/externalscripts/cpu_t high
                          75
                          [root@zabbix ~]# /usr/lib/zabbix/externalscripts/cpu_t current
                          36
                          .LOG файл для этих команд содержит строки:
                          Code:
                          [root@zabbix ~]# tail -2 /var/log/zabbix/cpu_t.log
                          20140319:100358 /usr/lib/zabbix/externalscripts/cpu_t high => 75
                          20140319:100301 /usr/lib/zabbix/externalscripts/cpu_t current => 36
                          UserParameter в конфигурации Zabbix Agent выглядит так:
                          Code:
                          [root@zabbix ~]# grep cpu_t /etc/zabbix/zabbix_agentd.conf
                          UserParameter=cpu.temp[*],/usr/lib/zabbix/externalscripts/cpu_t $1
                          тестовый запрос к Zabbix agent:
                          Code:
                          [root@zabbix ~]# zabbix_get -s localhost -k cpu.temp[current]
                          38
                          [root@zabbix ~]# zabbix_get -s localhost -k cpu.temp[high]
                          75
                          .LOG файл для этих команд содержит строки:
                          Code:
                          [root@zabbix ~]# tail -2 /var/log/zabbix/cpu_t.log
                          20140319:110229 /usr/lib/zabbix/externalscripts/cpu_t high => 75
                          20140319:110231 /usr/lib/zabbix/externalscripts/cpu_t current => 39
                          [root@zabbix ~]# date
                          Wed Mar 19 11:02:40 EDT 2014
                          Описание Элемента на Zabbix Server - см.приложенную картинку 1
                          Свежие данные - см. приложенную картинку 2
                          График температуры - см. приложенную картинку 3

                          Статистику по сбору и потере информации смогу показать позже.
                          Attached Files
                          Sincerely yours,
                          Aleksey

                          Comment

                          • mda.kem
                            Junior Member
                            • Mar 2014
                            • 17

                            #14
                            Originally posted by ugh
                            полный путь к sensors в скрипте попробуйте указать
                            Попробовал на двух машинах, хватило на пару дней.

                            Comment

                            • mda.kem
                              Junior Member
                              • Mar 2014
                              • 17

                              #15
                              У себя в скрипте сделал так же как у вас:
                              echo $(date '+%Y%m%d:%H%m%S') $0 $1 =\> $v >> /var/log/zabbix/cpu_t.log
                              echo $v
                              вот что получилось, /var/log/zabbix/cpu_t.log:
                              20140324:090302 /etc/zabbix/script/cpu_t current => 33
                              20140324:090325 /etc/zabbix/script/cpu_t high => 85
                              ................
                              20140325:020302 /etc/zabbix/script/cpu_t current => 39
                              20140325:020324 /etc/zabbix/script/cpu_t high =>
                              ................
                              20140325:070326 ./cpu_t high => 85 (запуск скрипта руками)
                              20140325:070328 ./cpu_t high => 85 (запуск скрипта руками)
                              20140325:070329 ./cpu_t high => 85 (запуск скрипта руками)
                              20140325:080303 /etc/zabbix/script/cpu_t current => 29
                              20140325:080325 /etc/zabbix/script/cpu_t high =>

                              P.S. ну надо же, когда писал этот текст ошибочку нашел, у вас и соответственно у меня.
                              $(date '+%Y%m%d:%H%m%S') -- > $(date '+%Y%m%d:%H%M%S') в место минут месяц вставлялся.
                              Last edited by mda.kem; 25-03-2014, 03:14.

                              Comment

                              Working...