Ad Widget

Collapse

Мониторинг интернет-канала

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • MetrS
    Member
    • Mar 2016
    • 38

    #1

    Мониторинг интернет-канала

    Добрый день!

    Использую Zabbix server 3.2.
    В качестве шлюза интернет использую Mikrotik.
    Написал скрипт, который пингует 8.8.8.8 и при 0 значении бросает запись в лог, который затем попадает в syslog на сервере и Zabbix видит поступление информации (активная проверка).

    Уведомления по отсутствию пинга приходят отлично, а вот как быть с восстановлением?

    В версии 3.2 появилась возможность восстанавливать триггер при определенных условиях (выражениях). Сделал еще один элемент данных на восстановление (в логах появляется запись о нормальном пинге и zabbix ее фиксирует), указал его в триггере в пункте восстановление по выражению. Но не работает восстановление. Ощущение такое, что в памяти остается старое значение проблемы - поэтому облом.

    Как сделать восстановление триггера по записи из лога?

    Пример триггера по отсутствию линка, но проблема там такая же
  • aib
    Senior Member
    • Jan 2014
    • 1615

    #2
    А почему в выражении восстановления не использовать такую-же функцию, как в Выражении проблемы?
    Вместо .str(up)}=1 использовать .strlen()}<>0
    Sincerely yours,
    Aleksey

    Comment

    • MetrS
      Member
      • Mar 2016
      • 38

      #3
      Originally posted by aib
      А почему в выражении восстановления не использовать такую-же функцию, как в Выражении проблемы?
      Вместо .str(up)}=1 использовать .strlen()}<>0
      не думаю что это особо играет роль, но потестил.
      Безрезультатно триггер так и висит.

      Comment

      • aib
        Senior Member
        • Jan 2014
        • 1615

        #4
        Возможно, что строка "link down" все еще в лог-файле, и она заставляет срабатывать Выражение проблемы, не доходя до Выражения восстановления.
        Почитайте логику этих выражений, может станет чуть понятнее, как "разрулить" ситуацию.
        У меня другая версия - 3.0.6, поэтому конкретных советов привести не могу.
        Sincerely yours,
        Aleksey

        Comment

        • MetrS
          Member
          • Mar 2016
          • 38

          #5
          Originally posted by aib
          Возможно, что строка "link down" все еще в лог-файле, и она заставляет срабатывать Выражение проблемы, не доходя до Выражения восстановления.
          Почитайте логику этих выражений, может станет чуть понятнее, как "разрулить" ситуацию.
          У меня другая версия - 3.0.6, поэтому конкретных советов привести не могу.
          https://www.zabbix.com/documentation...B7%D0%B8%D1%81
          Да, лог-файл не очищается и продолжает в нем находится данная строка. Мне нужно как-то очищать лог? Может использовать параметр skip?

          Comment

          • aib
            Senior Member
            • Jan 2014
            • 1615

            #6
            Если честно, я не могу понять, зачем такие сложности.
            Если у вас только 1 канал, то и контролируйте (пингами или чем другим) что-то "вне компании". Тот-же Гугль.

            Если у вас несколько каналов и важно контролировать их наличие - не проще ли мониторить оборудование, образующее каналы? Например, входной DSL пул интернет-провайдера, или его входной интерфейс роутера, использованный для вашего подключения?

            А в данном конкретном случае - можно попробовать(!) использовать функцию .last(), чтобы проверять последнюю строку из лог-файла. И на основе её включать/отключать триггеры.
            Sincerely yours,
            Aleksey

            Comment

            • MetrS
              Member
              • Mar 2016
              • 38

              #7
              Originally posted by aib
              Если честно, я не могу понять, зачем такие сложности.
              Если у вас только 1 канал, то и контролируйте (пингами или чем другим) что-то "вне компании". Тот-же Гугль.

              Если у вас несколько каналов и важно контролировать их наличие - не проще ли мониторить оборудование, образующее каналы? Например, входной DSL пул интернет-провайдера, или его входной интерфейс роутера, использованный для вашего подключения?

              А в данном конкретном случае - можно попробовать(!) использовать функцию .last(), чтобы проверять последнюю строку из лог-файла. И на основе её включать/отключать триггеры.
              2 радиоканала. Мучаемся с одним из них, на него еще и почта завязана.
              То ли антенна оледеневает, то ли оборудование глючит (инжектор, промежуточные узлы до антенны).

              Сегодня, например, пропал интернет - микротик переключился на резерв (настроен фэйловер), мы об этом узнали не сразу.
              Шлюз антенны пинговался отличненько извне. Подключаем ноутбук к каналу - интернета нет, так что входные пулы мониторить пока не имеет смысла. Нужно тупо с каждого интерфейса проверять инет.
              Если пропадает - создавать флаг-файл, или включать скриптом порт, а заббикс будет этот порт активными проверками мучать. Открыт порт - инета нет. Закрыт - есть, ну или наоборот. ТАкже, не хотелось бы срача в логах (ведь проверки будут каждую минуту).

              Сегодня еще потестил запуск скриптов через SNMPv2 - но скрипт не запускается и не отдает результат выполнения, а было бы круто.
              Микротик подключен к заббиксу через SNMP. Возможностей с этой темой много - было бы здорово узнать можно ли что делать в этой связке с мониторингом каналов.

              Comment

              • aib
                Senior Member
                • Jan 2014
                • 1615

                #8
                OK, пусть фантазия разгуляется.
                Стандартные шаблоны, входящие в поставку Zabbix, включают в себя "Template SNMP Device", в котором содержится "Template SNMP Interfaces"
                А вот в последнем щаблоне есть "Правило обнаружения", которое создает элементы данных для всех найденных интерфейсов и триггеры, которые привязаны к интерфейсам.
                Следовательно, триггер "Статус интерфейса изменен" будет автоматически создан для каждого интерфейса MicroTIK, если вы привяжете к нему этот шаблон.
                Теперь, если "радио-модем" сможет отдавать статус радиоканала как статус соединения, мы узнаем, что "Канал упал"
                А может, "радио-модем" (название условное, я не думаю, что MikroTIK подключен сразу к антенне) имеет SNMP-сервер на борту? Тогда мы сможем с него снимать некую информацию о качестве канала и контролировать его наличие и т.п. характеристики....
                Sincerely yours,
                Aleksey

                Comment

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

                  #9
                  Originally posted by MetrS
                  [...]
                  Написал скрипт, который пингует 8.8.8.8 и при 0 значении бросает запись в лог, который затем попадает в syslog на сервере и Zabbix видит поступление информации (активная проверка).

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

                  Но я присоединяюсь к недоумению aib по поводу "зачем такие сложности".
                  Во-первых, В Zabbix-е есть штатная возможность делать ping-проверки со стороны сервера, при которых не возникает проблем с тем, как сформулировать условие триггера.
                  Но, допустим, по какой-то причине штатная проверка не подходит (например, пинговать надо не со стороны сервера, и откуда-то с другой точки). Вы пишете, что пингованием занимается некий скрипт, который результат (причём, только отрицательный) пихает в лог. А что мешает из этого же скрипта вместо записи в лог отсылать этот результат (любой - и положительный, и отрицательный) на сервер Zabbix? Вызываете zabbix_sender, отсылаете нолик или единичку. Никаких проблем ни с настройкой условия триггера, ни со всей этой "ёлкой" с пробрасыванием записи в лог-файл через syslog на другой сервер.

                  Comment

                  • MetrS
                    Member
                    • Mar 2016
                    • 38

                    #10
                    Originally posted by aib
                    ok, пусть фантазия разгуляется.
                    Стандартные шаблоны, входящие в поставку zabbix, включают в себя "template snmp device", в котором содержится "template snmp interfaces"
                    А вот в последнем щаблоне есть "Правило обнаружения", которое создает элементы данных для всех найденных интерфейсов и триггеры, которые привязаны к интерфейсам.
                    Следовательно, триггер "Статус интерфейса изменен" будет автоматически создан для каждого интерфейса microtik, если вы привяжете к нему этот шаблон.
                    Теперь, если "радио-модем" сможет отдавать статус радиоканала как статус соединения, мы узнаем, что "Канал упал"
                    А может, "радио-модем" (название условное, я не думаю, что mikrotik подключен сразу к антенне) имеет snmp-сервер на борту? Тогда мы сможем с него снимать некую информацию о качестве канала и контролировать его наличие и т.п. характеристики....
                    Очень интересные мысли. Покурю в эту сторону. Спасибо!

                    Comment

                    • MetrS
                      Member
                      • Mar 2016
                      • 38

                      #11
                      Originally posted by Kos
                      Для начала - определиться с критериями того, на что нужно реагировать.
                      Если я правильно понял Вашу мысль, то при возникновении проблемы Ваш скрипт добавляет запись в некий лог, который мониторится агентом Zabbix; т.е критерием возникновения проблемы является появление в логе новой записи определённого вида. А что, на Ваш взгляд, должно являться признаком того, что проблема закончилась? Когда сможете сформулировать - тогда можно будет обсуждать, как это настроить.

                      Но я присоединяюсь к недоумению aib по поводу "зачем такие сложности".
                      Во-первых, В Zabbix-е есть штатная возможность делать ping-проверки со стороны сервера, при которых не возникает проблем с тем, как сформулировать условие триггера.
                      Но, допустим, по какой-то причине штатная проверка не подходит (например, пинговать надо не со стороны сервера, и откуда-то с другой точки). Вы пишете, что пингованием занимается некий скрипт, который результат (причём, только отрицательный) пихает в лог. А что мешает из этого же скрипта вместо записи в лог отсылать этот результат (любой - и положительный, и отрицательный) на сервер Zabbix? Вызываете zabbix_sender, отсылаете нолик или единичку. Никаких проблем ни с настройкой условия триггера, ни со всей этой "ёлкой" с пробрасыванием записи в лог-файл через syslog на другой сервер.
                      Реакция идет как на пропадание канала, так и на появление.

                      При использовании записи в лог будет много спама, да и это жуткий костыль. Как и использование флаг-файлов. Тут спама уже нет, но все равно не покидает ощущение что перебираю карбюратор через выхлопную трубу.

                      Про zabbix_sender не знал, буду читать, спасибо.

                      UPD: через SNMP обнаружение всплыло много чего интересного. Спасибо. Вопрос решен.
                      Last edited by MetrS; 23-12-2016, 12:08.

                      Comment

                      • aib
                        Senior Member
                        • Jan 2014
                        • 1615

                        #12
                        Удачи!
                        Snmp умеет много гитик...
                        Sincerely yours,
                        Aleksey

                        Comment

                        Working...