Ad Widget

Collapse

Как заставить zabbix получать данные от скриптов, которые выполняются с задержкой?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • pstbin
    Junior Member
    • Dec 2019
    • 20

    #1

    Как заставить zabbix получать данные от скриптов, которые выполняются с задержкой?

    Добрый день!
    Есть у меня скрипт, который выполняется от 5 до 8 секунд, ну такая механика сбора, нельзя выполнить это по другому.
    Так вот, заббикс не хочет принимать данные от этого скрипта. Запускать, запускает, но данные не получает, говорит: "Timeout while executing a shell script".
    Как заставить заббикс принимать эти данные?
  • DSV12
    Senior Member
    Zabbix Certified Specialist
    • Nov 2018
    • 156

    #2
    Originally posted by pstbin
    Добрый день!
    Есть у меня скрипт, который выполняется от 5 до 8 секунд, ну такая механика сбора, нельзя выполнить это по другому.
    Так вот, заббикс не хочет принимать данные от этого скрипта. Запускать, запускает, но данные не получает, говорит: "Timeout while executing a shell script".
    Как заставить заббикс принимать эти данные?
    1. Прочитать документацию.
    2. В соотв. с п.1 изменить умолчательное значение (3 сек) для zabbix-агента в /etc/zabbix/zabbix_agentd.conf до максимальных 30 сек:
    Code:
    ### Option: Timeout
    #       Spend no more than Timeout seconds on processing
    #
    # Mandatory: no
    # Range: 1-30
    # Default:
    # Timeout=3
    Timeout=30

    Comment

    • pstbin
      Junior Member
      • Dec 2019
      • 20

      #3
      Спасибо большое.

      Comment

      • wins
        Senior Member
        • Sep 2014
        • 307

        #4
        Если чуть-чуть руки приложить - писать результат выполнения скрипта в файл или бд или отправлять в заббикс. В первых двух случаях обращаться заббиксом в файл или бд, в последнем - и так ясно.

        Comment

        • pstbin
          Junior Member
          • Dec 2019
          • 20

          #5
          Originally posted by wins
          Если чуть-чуть руки приложить - писать результат выполнения скрипта в файл
          Ну так и делаю, но это, как бы, не очень элегантное решение.

          Originally posted by DSV12
          2. В соотв. с п.1 изменить умолчательное значение (3 сек) для zabbix-агента в /etc/zabbix/zabbix_agentd.conf до максимальных 30 сек:
          Рано я вас поблагодарил - это не работает. единственное чем мне это помогло - zabbix больше не пишет сообщения о таймауте и скрипт выполняется с частотой раз в 19 секунд (я это я вижу в логе), вместо раз в 1 минуту, как задано в установках шаблона, но данные всё равно не приходят на дашборд.

          Comment

          • DSV12
            Senior Member
            Zabbix Certified Specialist
            • Nov 2018
            • 156

            #6
            Originally posted by pstbin
            Рано я вас поблагодарил - это не работает. единственное чем мне это помогло - zabbix больше не пишет сообщения о таймауте и скрипт выполняется с частотой раз в 19 секунд (я это я вижу в логе), вместо раз в 1 минуту, как задано в установках шаблона, но данные всё равно не приходят на дашборд.
            "В огороде бузина, вна Киеве..."

            Проверяли получение данных в "ручном" режиме, с помощью zabbix_get?

            Comment

            • pstbin
              Junior Member
              • Dec 2019
              • 20

              #7
              Originally posted by DSV12
              Проверяли получение данных в "ручном" режиме, с помощью zabbix_get?
              Я сделал даже лучше. Вот вам целая презентация, как это работает:
              Картинка №1. На ней сам скрипт; под скриптом дашборд, на котором отображается выполнение скрипта; правее дашборда - история из пункта "Последние данные"; правее скрипта, лог выполнения скрипта, с хронологией.



              Картинка №2. На ней сам скрипт, в котором была добавлена всего одна команда "sleep 10"; под скриптом лог выполнения скрипта, с хронологией; правее лога - история из пункта "Последние данные"; над последними данными дашборд, на котором отображается выполнение скрипта; над дашбордом время когда был изменён скрипт.

              Click image for larger version  Name:	Check(sleep).png Views:	0 Size:	67.7 KB ID:	396065

              Картинка №3. На ней сам скрипт, в котором команда "sleep 10" была отключена; под скриптом лог выполнения скрипта, с хронологией; правее лога - история из пункта "Последние данные"; над последними данными дашборд, на котором отображается выполнение скрипта; над дашбордом время когда был изменён скрипт.

              Click image for larger version  Name:	Check(#sleep).png Views:	0 Size:	95.1 KB ID:	396066

              Как видите из презентации, как только у скрипта появляется какая-то задержка ответа, данные перестают поступать на заббикс, но запускать он (заббикс) не перестают этот скрипт, причём запускает он его, как я понимаю, сразу после выполнения.
              Ну и как только задержку убираешь, всё снова прекрасно передаётся.
              Вот такая ерунда. Как побороть?

              Comment

              • DSV12
                Senior Member
                Zabbix Certified Specialist
                • Nov 2018
                • 156

                #8
                Originally posted by pstbin

                Я сделал даже лучше. Вот вам целая презентация, как это работает:
                ...
                Как видите из презентации, как только у скрипта появляется какая-то задержка ответа, данные перестают поступать на заббикс, но запускать он (заббикс) не перестают этот скрипт, причём запускает он его, как я понимаю, сразу после выполнения.
                Ну и как только задержку убираешь, всё снова прекрасно передаётся.
                Вот такая ерунда. Как побороть?
                Вы не сделали лучше, вы сделали что-то не то. Ещё раз: проведите простую прямую проверку - запустите на консоли zabbix-сервера утилиту zabbix_get, с запросом тех самых данных (ключей), которые вам должен вернуть скрипт, с включённой/выключенной задержкой в скрипте. В соответствие с примером из документации: https://www.zabbix.com/documentation...l/concepts/get

                Кстати, а данные вы случайно не из мониторинга лога получаете? А вы в курсе, что тип проверки при этом должен быть Zabbix агент (активный)? Активный и только активный, в соотв. с документацией: https://www.zabbix.com/documentation...ypes/log_items

                Comment

                • Kos
                  Senior Member
                  Zabbix Certified SpecialistZabbix Certified Professional
                  • Aug 2015
                  • 3404

                  #9
                  Вероятнее всего, используется тип "Zabbix agent" (т.е. проверки в пассивном режиме). При этом тайм-аут на стороне агента, по совету DSV12 , был увеличен, а на стороне сервера - нет.
                  Если так, то попробуйте увеличить тайм-аут и на стороне сервера тоже (в конфиг-файле сервера Zabbix).

                  Однако, для "долгоиграющих" скриптов более правильным решением будет запускать их независимо от Zabbix-агента встроенными средствами операционки (cron в UNIX/Linux-системах, Scheduler в Windows), а результат отсылать в Zabbix с помощью утилиты zabbix_sender. Тип элемента данных для этого должен быть "Zabbix trapper".

                  Comment

                  Working...