Ad Widget

Collapse

Статус агента

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • operator
    Junior Member
    • Oct 2010
    • 11

    #1

    Статус агента

    Добрый день,

    возникла следующая проблема:
    не могу создать триггер, который будет срабатывать, если агент недоступен, либо от него поступают неверные данные, либо статус агента неизвесен. Использую версию 1.6

    Проблема:
    небыло получено уведомление, о недоступности машины, жившей наполовину: memoryleak. Сервер открывал соединение по проверяемым портам, но не предоставлял служб:
    ====================
    bash-3.00$ telnet 127.0.0.1 25
    Trying 192.168.ХХ.ХХ...
    Connected to 192.168.ХХ.ХХ.
    bash-3.00$
    ====================
    Сервер: Linux CentOS 5.4 zabbix-server-1.6.8
    Клиент: Linux CentOS 5.4 zabbix-agent-1.6.6

    Пробовал:
    использовать фунцию Status - безуспешно: слишком много ложных срабатываний.
    использовать фунцию last - безуспешно: не реагирует когда порт открыт, а данные получить не может.
    использовать доступность порта (tcp,10050) - безуспешно: не реагирует когда порт открыт, а данные получить не может.

    Подскажите пожалуйста, куда смотреть.
    Как народ вообще решает эту проблему?
    Заранее благодарен.
  • dima_dm
    Senior Member
    • Dec 2009
    • 2697

    #2
    Если речь про Zabbix Agentd, то используйте функцию nodata
    {Host:agent.ping.max(#5)}#1 | {Host:agent.ping.nodata(150)}=1
    Т.е. 150 секунд нет новых данных.
    Первая часть условия сейчас не работает, т.к. когда Zabbix Agentd недоступен, то просто нет данных. Но вдруг исправят.

    Comment

    • operator
      Junior Member
      • Oct 2010
      • 11

      #3
      Спасибо за ответ!

      пробовал такое:
      {vi-ftp:system.cpu.load[all,avg1].nodata(180)}=1
      при этом system.cpu.load[all,avg1] были опробованы как ZABBIX agent и ZABBIX trapper. В качестве теста на порту 10050 был вместо ZABBIX запущен sqiud - точно не правильные данные, и точно порт доступен.
      Триггер не работает.
      В Вашем примере берется ITEM ping - это вероятно работать не будет, т.к. машина может пинговаться, а агент может упасть...

      Или я что-то не понимаю?

      Comment

      • dima_dm
        Senior Member
        • Dec 2009
        • 2697

        #4
        Вы не поняли, есть специальный ключ
        agent.ping типа Zabbix агент.
        Он проверяет доступность агента по порту TCP 10050
        http://www.zabbix.com/documentation/...l/config/items
        Last edited by dima_dm; 15-10-2010, 14:34.

        Comment

        • operator
          Junior Member
          • Oct 2010
          • 11

          #5
          ок. это действительно другое.
          Сделал как Вы предлагали:
          {test:agent.ping.nodata(130)}=1
          Условия испытаний прежние: агент выключаем, на его порт включаем squid.
          Результат отрицательный - триггер не срабатывает.
          Проверяя состояние триггера, увидел следующий статус:
          ============================
          Error:
          Тype of received value [HTTP/1.0 400 Bad RequestServer: squid/2.7.STABLE8Date: Fri, 15 Oct 2010 13:13:40 GMTContent-Type: text/h
          ============================

          Comment

          • dima_dm
            Senior Member
            • Dec 2009
            • 2697

            #6
            А зачем на порт squid вешать?
            Если уж вы так хотите, то можно сделать так
            {test:agent.version.nodata(130)}=1 | {test:agent.version.last(0)}#"1.8.3"
            Т.е. проверка, что Zabbix Agentd отвечает на запрос, и версия агента 1.8.3, в противном случае срабатывает триггер.
            Item agent.version опрашивать каждые 30 секунд.
            Last edited by dima_dm; 15-10-2010, 15:55.

            Comment

            • operator
              Junior Member
              • Oct 2010
              • 11

              #7
              Со сквидом пробую, потому что считаю, что доступность порта для сервера играет роль. Есть такое подозрение, что если на порту ничего не доступно, то триггер срабатывает правильно и сразу.
              Соорудил вот такое:
              {vi-ftp:agent.ping.nodata(130)}=1 | {vi-ftp:system.cpu.load[all,avg1].count(600,-1,"gt")}<5
              с номером версии проблемы (возмножно версия сервера старая), да и триггер получается более универсальный.
              В моей версии я проверяю, доставлены ли данные по загрузке процессора.
              Триггер не реагирует...

              Comment

              • dima_dm
                Senior Member
                • Dec 2009
                • 2697

                #8
                Я кажется понял, почему не срабатывает триггер. Все дело в типе Item (когда вместо числа, которое ждет Zabbix, при подмене демона на squid приходит строка, вставить эти данные в базу Zabbix не может, а функция count работает с данными только из базы и только когда Item в активном состоянии), сделайте все тоже самое, только выберите в условии другой Item Типа строка. Проверить это решение, я к сожаленью, не могу, т.к. такой древней версии Zabbix у меня давно уже нет.

                Comment

                • operator
                  Junior Member
                  • Oct 2010
                  • 11

                  #9
                  ок. тогда версия клиента подходит супер, но опять не получается вдимо из-за древнего софта: при попытке ввести {host:agent.version.last(0)}#"1.6.6"
                  пишет Incorrect trigger expression. [ ... #"1.6.6"]
                  т.е. он типа не понимает "#"

                  Comment

                  • dima_dm
                    Senior Member
                    • Dec 2009
                    • 2697

                    #10
                    Originally posted by operator
                    ок. тогда версия клиента подходит супер, но опять не получается вдимо из-за древнего софта: при попытке ввести {host:agent.version.last(0)}#"1.6.6"
                    пишет Incorrect trigger expression. [ ... #"1.6.6"]
                    т.е. он типа не понимает "#"
                    Оператор # допустим только для числовых значений. У Вас же масса вариантов, использовать функции iregexp, count и т.д.
                    {test:agent.version.nodata(130)}=1 | {test:agent.version.count(130,"1.6.6","eq")}<2
                    Скорее всего, в вашем примере, будет работать
                    {vi-ftp:system.cpu.load[all,avg1].nodata(130)}=1 | {vi-ftp:system.cpu.load[all,avg1].count(600,-1,"gt")}<5
                    Last edited by dima_dm; 18-10-2010, 08:02.

                    Comment

                    • operator
                      Junior Member
                      • Oct 2010
                      • 11

                      #11
                      Добрый день, спасибо за ответ.
                      Предложенный вариант опробовал, к сожалению безуспешно.
                      Вариантов действительно не мало, только до сих пор никто так и не смог предложить реально работающий...

                      Comment

                      • dima_dm
                        Senior Member
                        • Dec 2009
                        • 2697

                        #12
                        Originally posted by operator
                        Вариантов действительно не мало, только до сих пор никто так и не смог предложить реально работающий...
                        Как Вы определили, что он не работает? В каком состоянии был Item и триггер в момент проверки (Active)?
                        Что отображалось на закладке Мониторинг->Триггеры?
                        Какие данные были на закладке Мониторинг-> Последние данные по данному Item?
                        Last edited by dima_dm; 18-10-2010, 16:55.

                        Comment

                        • operator
                          Junior Member
                          • Oct 2010
                          • 11

                          #13
                          Работает!
                          Проблема была в том, что я триггеры редактировал в темплейте. После этого применял темплейт к машине. Видно где-то в узлах путаница и машина после всего этого ... не имеет значения.
                          Короче получился вот такой триггер:
                          {host:system.cpu.load[all,avg1].nodata(180)}=1 | {host:system.cpu.load[all,avg1].count(600,0,"ge")}<5 | {host:tcp,10050.avg(300)}<0.5
                          Спасибо огромное за помощь и пояснения!
                          Last edited by operator; 19-10-2010, 08:56.

                          Comment

                          Working...