Ad Widget

Collapse

Zabbix agent переменные

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • dimka779
    Junior Member
    • Mar 2014
    • 22

    #1

    Zabbix agent переменные

    Подскажите пожалуйста, есть несколько сетевых устройств, у каждого 2 сетевых интерфейса и 1 айпи адреса на каждом интерфейсе.
    Например:

    устройство1 - адреса 192.168.5.1 и 192.168.5.2
    устройство2 - адреса 192.168.6.1 и 192.168.6.2
    устройство3 - адреса 192.168.7.1 и 192.168.7.2

    Итого - 6 хостов в заббиксе (freebsd). Настроен шаблон и триггер для пинга. Если пинг пропадает, то триггер срабатывает, с этим все хорошо.

    Но эти устройства могут стать недоступны не только по пингу, но и по доступности через OSPF (multicast traffic).
    Т.е. например все устройства пингуются, но мультикаст трафик от них не ходит и мне нужно это выявить.

    IP адреса устройств, которые доступны по мультикасту я парсю в текстовый файле на сервере (с помощью ospf neighbors). Если устройство недоступно по мультикасту - то его айпи адреса в файле не будет.

    Т.е. когда все хорошо я получаю вывод в файле:
    192.168.5.1 192.168.5.2 192.168.6.1 192.168.6.2 192.168.7.1 192.168.7.2
    А если на устройстве2 и устройстве3 не будет ходить мультикаст через одну и сетевых карт, то в текстовом файле я получу вывод:
    192.168.5.1 192.168.5.2 192.168.6.1 192.168.7.1

    Теперь мне нужно добавить новый элемент данных либо внешнюю проверку, которые будут парсить текстовый файл на предмет наличия айпи адреса. Если адреса конкретного хоста там не будет, то нужно запускать триггер о недоступности ( в данном случае для хостов 192.168.6.2 и 192.168.7.2

    Может ли мне в этом помочь команда
    vfs.file.regmatch[/usr/local/my_scripts/ip_list.txt,{HOST.CONN}] ?
    спасибо!
    Last edited by dimka779; 29-10-2014, 12:54.
  • yukra
    Senior Member
    • Apr 2013
    • 1359

    #2
    Originally posted by dimka779
    Может ли мне в этом помочь команда
    vfs.file.regmatch[/usr/local/my_scripts/ip_list.txt,{host.conn}] ?
    спасибо!
    Не команда а айтем, а к ней триггер на "не равно 1". И судя по описанию должно работать.

    Кстати православней не {host.conn}, а {HOST.IP}
    Last edited by yukra; 29-10-2014, 19:31.

    Comment

    • dimka779
      Junior Member
      • Mar 2014
      • 22

      #3
      Originally posted by yukra
      Не команда а айтем, а к ней триггер на "не равно 1". И судя по описанию должно работать.

      Кстати православней не {host.conn}, а {HOST.IP}
      А этот айтем же нужно к устройствам привязывать?

      Просто если я привязываю к роутерам, то выдает ошибку :
      Не удалось найти интерфейс у узла сети "Mikrotik_192.168.5.1" для ключа элемента данных "vfs.file.regmatch[/usr/local/my_scripts/ip_list.txt,{HOST.CONN}]".

      А если я привяжу к агенту на сервере, то как тогда будут мониториться роутеры?

      Comment

      • yukra
        Senior Member
        • Apr 2013
        • 1359

        #4
        Originally posted by dimka779
        А этот айтем же нужно к устройствам привязывать?

        Просто если я привязываю к роутерам, то выдает ошибку :
        Не удалось найти интерфейс у узла сети "Mikrotik_192.168.5.1" для ключа элемента данных "vfs.file.regmatch[/usr/local/my_scripts/ip_list.txt,{HOST.CONN}]".

        А если я привяжу к агенту на сервере, то как тогда будут мониториться роутеры?
        Так, давайте еще раз и с начала. Файл /usr/local/my_scripts/ip_list.txt у вас где лежит? на сервере? Значит айтем нужно создавать на сервере. Триггер у вас так же "на сервере". Если вы хотите что бы принципиально было "айтем и триггер на роутере" то, нужно использовать не vfs.file.regmatch (что есть функция заббикс-агента, который на роутер не поставишь),а внешнюю проверку и ей парсить ваш файл.

        Comment

        • dimka779
          Junior Member
          • Mar 2014
          • 22

          #5
          Originally posted by yukra
          Так, давайте еще раз и с начала. Файл /usr/local/my_scripts/ip_list.txt у вас где лежит? на сервере? Значит айтем нужно создавать на сервере. Триггер у вас так же "на сервере". Если вы хотите что бы принципиально было "айтем и триггер на роутере" то, нужно использовать не vfs.file.regmatch (что есть функция заббикс-агента, который на роутер не поставишь),а внешнюю проверку и ей парсить ваш файл.
          Мне не принциально конечно же.
          Я просто не совсем понял как привязать айпи адрес роутера к скрипту, если скрипт будет выполняться на сервере" ?
          сервер выполняет - "vfs.file.regmatch[/usr/local/my_scripts/ip_list.txt,{HOST.CONN}]"

          Т.е. агент на сервере выпонялет эту проверку, вместо HOST_CONN он подставляет свой айпи адрес - которого в списке нет, выдает значение 0.
          И все. Получается он проверяет сам себя.

          Т.е. остается только вариант с внешней проверкой на микротиках?
          Last edited by dimka779; 31-10-2014, 07:35.

          Comment

          • yukra
            Senior Member
            • Apr 2013
            • 1359

            #6
            Originally posted by dimka779
            Т.е. агент на сервере выпонялет эту проверку, вместо HOST_CONN он подставляет свой айпи адрес - которого в списке нет, выдает значение 0.
            И все. Получается он проверяет сам себя.
            Точно, тут вы правы, а я проглядел этот момент (я сначала
            думал что у вас не миктрокити, а сервера с парой интерфейсов, а потом упустил что макрос то не то будет показывать). На сервере конечно же нужно создавать айтемы типа "vfs.file.regmatch[/usr/local/my_scripts/ip_list.txt,192.168.5.1]", "vfs.file.regmatch[/usr/local/my_scripts/ip_list.txt,192.168.6.1]" и тп.
            Либо "vfs.file.regmatch[/usr/local/my_scripts/ip_list.txt,{My_ip_1}]" и для хоста прописывать макрос {My_ip_1} = 192.168.5.1.

            Если через внешнюю проверку, то делаете внешний скрипт my_check_ip типа такого
            Code:
            #!/usr/bin/env bash
            grep $1 /usr/local/my_scripts/ip_list.txt && echo 1 || echo 0
            Кладете его /usr/lib/zabbix/externalscripts (или что у вас в конфиге сервера прописано), говорите ему chmod +x, и потом создаете айтем на миктротике, тип "Внешняя проверка", ключ: "my_check_ip[{HOST.CONN}]"
            Причем обратите внимание что внешняя проверка для старых версий заббикса и для новых запускается с разными аргументами. В 1.8 "Первый параметр командной строки это IP адрес или DNS имя", А в 2.2 уже ничего автоматически не подставляется.

            Comment

            • dimka779
              Junior Member
              • Mar 2014
              • 22

              #7
              Originally posted by yukra
              Если через внешнюю проверку, то делаете внешний скрипт my_check_ip типа такого
              Code:
              #!/usr/bin/env bash
              grep $1 /usr/local/my_scripts/ip_list.txt && echo 1 || echo 0
              Кладете его /usr/lib/zabbix/externalscripts (или что у вас в конфиге сервера прописано), говорите ему chmod +x, и потом создаете айтем на миктротике, тип "Внешняя проверка", ключ: "my_check_ip[{HOST.CONN}]"
              Причем обратите внимание что внешняя проверка для старых версий заббикса и для новых запускается с разными аргументами. В 1.8 "Первый параметр командной строки это IP адрес или DNS имя", А в 2.2 уже ничего автоматически не подставляется.
              Спасибо большое, сделал по второму варианту, работает!
              Единственная проблема, что при отработке скрипта
              Code:
              #!/usr/bin/env bash
              grep $1 /usr/local/my_scripts/ip_list.txt && echo 1 || echo 0
              Если адрес есть в списке, то выдается значение "192.168.5.1 1" - заббиксу оно не нравится. Как то можно сделать, чтобы выдавалось просто "1" ?
              Если адреса в списке нет, то выдается "0" как и нужно.
              Last edited by dimka779; 31-10-2014, 10:19.

              Comment

              • yukra
                Senior Member
                • Apr 2013
                • 1359

                #8
                "grep -q" .. потерял параметр по дороге от терминала до окна ответа.

                Comment

                Working...