Ad Widget

Collapse

Поддержка таймзоны для узлов

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • dvg_lab
    Junior Member
    • Oct 2017
    • 6

    #1

    Поддержка таймзоны для узлов

    Задача есть розничные магазины, нужно мониторить роутеры по сути - snmp узлы и генерить письма по недоступности, но они раскиданы по всей стране во всех 11 часовых поясах, и у всех есть определенное время работы, скажем 10:00-22:00, в Item насколько я понял можно указать время работы, но таймзона заббиксом пока не поддерживается. Ладно Бог с ним, я пересчитаю все в московское время.

    Вопрос каким образом можно прикрутить время работы в шаблон если роутеров 230шт и они детектятся в автодискавери и мне нужно только оповещение по недоступности? Есть текстовый файлик в котором есть соответствие времени работы и названия узла.

    Заббикс взял в руки пару дней назад, сильно не пинайте. За наводки буду благодарен.
  • Semiadmin
    Senior Member
    • Oct 2014
    • 1625

    #2
    Вариантов решения задачи много, но для начала было бы хорошо на этапе дискаверинга определить, к какой тайм-зоне относится роутер (например, по результату SNMP-запроса типа цисковского csyStandardTmZnGMTOffset или по характерному диапазону ip-адресов) и либо присоединить к этому хосту шаблон для данной тайм-зоны, либо включить хост в соответствующую группу.
    А уж дальше можно настраивать по расписанию интервалы опроса айтемов или включать временные условия в триггеры (при использовании отдельных шаблонов для тайм-зон), или делать периоды обслуживания (при использовании отдельных групп), или делать отдельные действия для каждой тайм-зоны с указанием времени применимости действия и шаблона или группы.

    Comment

    • dvg_lab
      Junior Member
      • Oct 2017
      • 6

      #3
      Задача усложняется тем, что по факту время работы у всех разное, диапазоны сетей тоже не подходят (все в разброс) .. то есть нельзя все роутеры скажем разбить на 11 групп (по зонам) и цеплять их к шаблонам в таком виде. По факту в одной временной зоне может быть 50 роутеров и время работы разное. То есть если разбивать всё на группы, то получится порядка 80 групп.. перебор. И еще есть роутеры которые не выключаются, есть которые выключаются, но алерты должны срабатывать только в рабочее время, и плюс в роутерах таймзона может быть прописана криво.

      По факту есть файлик, в котором точное время работы, можно ли его распарсить в макросы с контекстом? Чтобы получилось что-то типа {$wtime:185}=1-7,10:00-22:00 и прописать его в шаблоне итема или триггера?

      Comment

      • Semiadmin
        Senior Member
        • Oct 2014
        • 1625

        #4
        Макросы сделать можно, только, видимо, не контекстные. Контекстные макросы используют данные, полученные в результате LLD, а здесь я не вижу, как можно LLD прикрутить без особых извращений.
        Скорее так - на каждом хосте завести макросы для времени и дня недели (по паре - для начала и конца периода) и использовать их в триггерах в качестве порогов для функций time и dayofweek. Ну, и в сам шаблон эти макросы добавить, как дефолтные.
        А автоматизировать этот процесс, мне кажется, лучше всего через API. Написать скрипт, который распарсит файл и методом host.update добавит макросы в хосты, переведя время и день недели в формат, понятный триггерным функциям.

        Comment

        • dvg_lab
          Junior Member
          • Oct 2017
          • 6

          #5
          Нашелся роутер который работает вообще по очень хитрой схеме
          сначала 1-4, 10:00-22:00, потом 5-6, 10:00-23:59, а потом и 7, 10:00-23:00, и вообще время работы может меняться..
          это чуть не на каждый день нужно свой макрос для time определять, с понедельника по воскресенье..

          А получится это все в базу запихать? и по внешнему скрипту выдавать в триггер значение если время рабочее, то true и false если нет? А манагеры пусть заполняют базу правильными значениями, через своё приложение..
          Рабочая идея?

          Comment

          • Semiadmin
            Senior Member
            • Oct 2014
            • 1625

            #6
            Тогда уж, наверное, как-то так: добавить в шаблон айтем, который будет периодически делать запрос в базу, и получать 0 или 1 в зависимости от того, должен ли данный хост сейчас работать. В запросе использовать макрос {HOST.HOST} или {HOST.IP}. Или внешним скриптом кидать в этот айтем 0 или 1 через zabbix sender.
            Проверку последнего значения этого айтема добавить в триггер через AND.

            Comment

            • dvg_lab
              Junior Member
              • Oct 2017
              • 6

              #7
              Спасибо, вот это кажется самый рабочий вариант. В итоге вырисовывается такая схема, в item внешний скрипт запускается с параметром {HOST.HOST}, в скрипте (он кстати на perl, как оно будет по скорости?) делается JSON запрос в специальный сервис, сервис уже отвечает 1 или 0... и мне кажется что здесь даже скрипт можно выкинуть и каким-то образом натравить сам заббикс забирать JSON...

              ЗЫ: те скрипты которые в Administration/Scripts они только для Actions? Поначалу скрипт там прописал и пытался юзать в item, ан нет..

              Comment

              • Semiadmin
                Senior Member
                • Oct 2014
                • 1625

                #8
                Скрипты д.б. в папке, указанной в конфиге заббикс-сервера, напр.
                ExternalScripts=/usr/lib/zabbix/externalscripts

                Comment

                • dvg_lab
                  Junior Member
                  • Oct 2017
                  • 6

                  #9
                  Сделал item, который отображает промежутки рабочего и нерабочего времени, триггеры взводятся только когда время рабочее и хост не отвечает, здесь все нормально, но хотелось бы еще чтобы "Отчет о доступности" так же учитывал рабочее и не рабочее время, ато сейчас получается что % доступности ухудшается в нерабочее время, а хотелось бы чтобы не ухудшался, по сути это самый важный параметр ради которого я взял в руки заббикс, нужен отчет о доступности роутеров в _рабочее_ время.


                  ЗЫ: Походу глаз замылился, все работает как надо, отчет строится на основе триггера, а не функции пинга как мне сначала показалось... Все супер!
                  Last edited by dvg_lab; 19-10-2017, 16:18.

                  Comment

                  Working...