Ad Widget

Collapse

zabbix-agentd - Потери метрик

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • aleksandr.lesovoy
    Junior Member
    • Aug 2018
    • 2

    #1

    zabbix-agentd - Потери метрик

    Привет, коллеги. Столкнулся со следующей проблемой:
    При мониторинге хоста, на котором находится userparameter который тормозит и периодически отваливается по таймауту (например выполнение lsof), начинают страдать и остальные айтемы: например на графиках свободного дискового места появляются провалы. При отключении проблемного айтема, работа остальных нормализуется. Пробовал менять количество StartAgents, но это ничего не дает. Отсюда вопрос, есть ли решение этой проблемы? Версия агента 3.4.15, но и на других версиях проблема сохраняется.
  • sadman
    Senior Member
    • Dec 2010
    • 1611

    #2
    Типы проверок (айтемов) какие?

    Comment

    • max.ch.88
      Senior Member
      • Oct 2018
      • 206

      #3
      Типы здесь не имеют значения. Так же как и версии Zabbix.
      Лечится двумя шагами, применимыми к любой версии Zabbix:
      1.чтобы получать результат через ожидаемое время, а не уходить в бесконечность, запускайте всё через команду timeout с последующей обработкой.
      2.в конфиге zabbix-сервера устанавливайте значение параметра timeout больше, чем в конфигах zabbix-агентов. я ставлю 30 и 25 соответственно.
      Большое пожелание к разработчикам включить второй пункт в документацию. Думаю многие ломали голову почему из-за одного сбойного item'ма появляются дыры в данных по живым item'ам того же хоста.

      Comment

      • aleksandr.lesovoy
        Junior Member
        • Aug 2018
        • 2

        #4
        Спасибо за ответ, буду работать в этом направлении

        Comment

        • sadman
          Senior Member
          • Dec 2010
          • 1611

          #5
          Originally posted by max.ch.88
          Типы здесь не имеют значения. Так же как и версии Zabbix.
          Т.е. вы хотите сказать, что ваши способы позволяют обойти проблему пропуска запусков активных проверок при одной тормозной?

          Comment

          • max.ch.88
            Senior Member
            • Oct 2018
            • 206

            #6
            Да,позволяют.

            Comment

            • sadman
              Senior Member
              • Dec 2010
              • 1611

              #7
              А не дадите ссылку на "команду timeout"?

              Comment

              • max.ch.88
                Senior Member
                • Oct 2018
                • 206

                #8
                man timeout
                NAME
                timeout - run a command with a time limit

                SYNOPSIS
                timeout [OPTION] DURATION COMMAND [ARG]...
                timeout [OPTION]

                DESCRIPTION
                Start COMMAND, and kill it if still running after DURATION.

                Mandatory arguments to long options are mandatory for short options too.

                Comment

                • sadman
                  Senior Member
                  • Dec 2010
                  • 1611

                  #9
                  Так это способ с забросом информации самим скриптом, так? Тогда можно system.run[команда,nowait] использовать. Или вообще по крону работать.

                  Comment

                  • max.ch.88
                    Senior Member
                    • Oct 2018
                    • 206

                    #10
                    Никаких забросов и кронов. Абсолютно штатный функционал агента. Например, так я проверяю состояние смонтированных по сети разделов: nfs.check[<точка монтирования>]
                    UserParameter=nfs.check[*], res=$(timeout -s 9 10 stat -f -c %T $1); if [[ $res = 'nfs' ]] || [[ $res = 'cifs' ]]; then echo 1; else echo 0; fi
                    Last edited by max.ch.88; 23-03-2019, 12:29.

                    Comment

                    • sadman
                      Senior Member
                      • Dec 2010
                      • 1611

                      #11
                      Что-то я, наверное, перестал понимать Zabbix

                      Code:
                      keeper:~$ time `timeout 9 sleep 10`
                      
                      real    0m9.002s
                      user    0m0.000s
                      sys     0m0.000s
                      Т.е. никакой разницы между блокирующим вызовом через timeout и блокирующим вызовом без timeout я пока не наблюдаю. Ладно бы всё это дело отфоркивалось в отдельный тред, но тут я совершенного этого не наблюдаю. Стало быть, будучи активным айтемом, данный вызов имеет все шансы прибить все последующие активные проверки, которые по расписанию должны будут запуститься в течении 10 сек после вызова timeout.

                      Comment

                      • max.ch.88
                        Senior Member
                        • Oct 2018
                        • 206

                        #12
                        "userparameter который тормозит и периодически отваливается по таймауту (например выполнение lsof), начинают страдать и остальные айтемы: например на графиках свободного дискового места появляются провалы" вот какую проблему решает вызов системных команд через timeout. Когда zabbix-сервер не дожидается от хоста нового значения любого из item'ов хоста за указанный в своём конфиге timeout, сервер пишет в лог событие network error и откладывает хост в сторону минимум на минуту.
                        ​​​​​https://www.zabbix.com/documentation...unreachability
                        Чтобы хост не отваливался по таймауту, следует ограничить время на item(userparameter). Я сделал это с помощью вызова timeout.
                        Конечно, если нужно получить данные от тупенького api, который в принципе за 30 секунд не успевает, то это через crontab и zabbix_sender.

                        Comment

                        • sadman
                          Senior Member
                          • Dec 2010
                          • 1611

                          #13
                          Ну, вобщем, что-то мы спорим не о том.

                          Активные проверки выполняются в один поток. Если одна из них выполняется достаточно долго, то запуски всех остальных, должные произойти в то же время, будут пропущены. До тех пор, пока Вы запускаете активную проверку каким угодно, но блокирующим способом, проблема принципиально не будет решаться, но может быть замаскирована. Единственный логично выглядящий выход - произвести запуск максимально быстро, снизив вероятность перекрытия временем выполнения текущей проверки момента запуска следующей. Т.е. отфоркнуть процесс с расчётом на то, что он сам вернёт результат в Zabbix server.

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

                          Comment


                          • aleksandr.lesovoy
                            aleksandr.lesovoy commented
                            Editing a comment
                            Дело в том, что данная проблема наблюдается у пассивных проверок.
                        • max.ch.88
                          Senior Member
                          • Oct 2018
                          • 206

                          #14
                          Есть описание от разработчика о таком поведении агента в активном режиме?

                          Comment

                          • sadman
                            Senior Member
                            • Dec 2010
                            • 1611

                            #15
                            Ну, вот, к примеру.



                            glebs ivanovskis из команды Zabbix, как я помню.

                            Так же, подтверждение или опровержение можно получить из исходных текстов Zabbix agent.

                            Comment

                            Working...