Ad Widget

Collapse

Вывод таблицы маршрутизации

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • dialod
    Junior Member
    • Apr 2020
    • 18

    #1

    Вывод таблицы маршрутизации

    Добрый день ! Была поставлена задача, чтобы таблица маршрутизации по каждому сетевому интерфейсу отображалась в Zabbix (используемая версия 4.4.6). Используемое ПО на серверах в основном от микрософта. Информации подходящий для моего случая в интернете очень мало или вообще нет. Находил только пару статей где человек хотел mac адреса мониторить, но и то под линухами. Еще бы не хотелось использовать стороннее ПО. Сразу хочу сказать что в забиксе не особо силен. Может найдутся у кого какие идеи, как это сделать. Может есть готовые решения или это не реальная задача.
  • Hamardaban
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • May 2019
    • 2713

    #2
    Ответьте для себя на вопросы: что значит «отображалась в Zabbix»? Отображались где? Как значение элемента данных? Или как-то иначе?
    Вариант простой - используя UserParameter выполнять route print или его аналоги (может в обертках скриптов для удаления лишнего) и далее использовать это текстовое значение.
    Вариант сложный и замороченный: сделать LLD возвращающее список индексов интерфейсов и/или их алиасы ( например через powershell и Get-NetIpInterface) и для каждого интерфейса в отдельном элементе данных, опять же через UserParameter, получать таблицу маршрутизации “Get-NetRoute -InterfaceIndex”
    Справку как все эти компоненты работают вы можете найти в официальной документации
    Last edited by Hamardaban; 24-04-2020, 16:03.

    Comment

    • dialod
      Junior Member
      • Apr 2020
      • 18

      #3
      Originally posted by Hamardaban
      Ответьте для себя на вопросы: что значит «отображалась в Zabbix»? Отображались где? Как значение элемента данных? Или как-то иначе?
      Вариант простой - используя UserParameter выполнять route print или его аналоги (может в обертках скриптов для удаления лишнего) и далее использовать это текстовое значение.
      Вариант сложный и замороченный: сделать LLD возвращающее список индексов интерфейсов и/или их алиасы ( например через powershell и Get-NetIpInterface) и для каждого интерфейса в отдельном элементе данных, опять же через UserParameter, получать таблицу маршрутизации “Get-NetRoute -InterfaceIndex”
      Справку как все эти компоненты работают вы можете найти в официальной документации
      Спасибо за ответ. Хотелось бы конечно как проще. Можно и в виде текста. Информация нужна, так сказать для инвентаризации сервера. Где помимо его характеристик была бы еще эта информация. IP, MASK, DNS - эти данные я нашел как добавить. А как таблицу маршрутизации добавить ума не приложу. Есть командлет в PowerShell - "Get-NetRoute -AddressFamily IPv4 | ft -auto" Данные выводимые отличаются от того что если ввести "route print" Данные еще нужно как то распарсить и перевести в json формат. Тоже задачка. Искал решение сначала через wmi.get[root\cimv2 но такого ключа не существует.

      Comment

      • Hamardaban
        Senior Member
        Zabbix Certified SpecialistZabbix Certified Professional
        • May 2019
        • 2713

        #4
        Почему не существует? Вот wmi.getall[root\cimv2,SELECT * FROM Win32_IP4RouteTable]
        мне просто было интересно что вы планируете сделать с полученной информацией? Какова конечная идея?

        Comment

        • dialod
          Junior Member
          • Apr 2020
          • 18

          #5
          Originally posted by Hamardaban
          Почему не существует? Вот wmi.getall[root\cimv2,SELECT * FROM Win32_IP4RouteTable]
          мне просто было интересно что вы планируете сделать с полученной информацией? Какова конечная идея?
          Это как раз то что я искал, но не мог найти ! Не правильно я искал. Учиться, учиться и еще раз учиться. Забыл что можно получить нужную информацию из классов. Мне достаточно ее вывести на экран если зайти в мониторинг - последние данные, затем выбрать узел и нужный элемент. Я создал по вашим данным новый элемент в шаблоне и данные стали отображаться. Правда не совсем в читабельном виде. Знаю что есть предобработка в каждом элементе данных, но в читабельный вид что то не получается привести.Вложил скрины.
          Attached Files
          Last edited by dialod; 24-04-2020, 21:54.

          Comment

          • dialod
            Junior Member
            • Apr 2020
            • 18

            #6
            Ну мне нужна помощь. Не получается привести в читабельный вид. Склоняюсь уже к мысли что это невозможно сделать.

            Comment

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

              #7
              Может, вместо этого проще забирать результат выполнения команды "route -4 print"?

              Comment

              • dialod
                Junior Member
                • Apr 2020
                • 18

                #8
                Originally posted by Kos
                Может, вместо этого проще забирать результат выполнения команды "route -4 print"?
                Если это будет проще, то опишите пожалуйста как это сделать. Буду очень признателен.

                Comment

                • Semiadmin
                  Senior Member
                  • Oct 2014
                  • 1625

                  #9
                  Originally posted by dialod
                  Не получается привести в читабельный вид. Склоняюсь уже к мысли что это невозможно сделать.
                  Этот нечитабельный вид - JSON. Разбирайте на зависимые айтемы через JSONPath, возможно, с использованием зависимых LLD rules.

                  Comment

                  • dialod
                    Junior Member
                    • Apr 2020
                    • 18

                    #10
                    Originally posted by Semiadmin
                    Этот нечитабельный вид - JSON. Разбирайте на зависимые айтемы через JSONPath, возможно, с использованием зависимых LLD rules.
                    Правильно ли я понял, что нужно сначала написать скрипт на PS и распарсить в нем значения ?

                    Comment

                    • Semiadmin
                      Senior Member
                      • Oct 2014
                      • 1625

                      #11
                      Originally posted by dialod

                      Правильно ли я понял, что нужно сначала написать скрипт на PS и распарсить в нем значения ?
                      Нет, речь про препроцессинг в Zabbix'е, никаких внешних скриптов не требуется.

                      Comment

                      • dialod
                        Junior Member
                        • Apr 2020
                        • 18

                        #12
                        Originally posted by Semiadmin

                        Нет, речь про препроцессинг в Zabbix'е, никаких внешних скриптов не требуется.
                        Не разу так не настраивал. А можно как то поподробнее расписать. Хотя бы с чего начать ? что и где создать.

                        Comment

                        • Semiadmin
                          Senior Member
                          • Oct 2014
                          • 1625

                          #13
                          Начать лучше всего с чтения документации по препроцессингу в Zabbix, там же есть примеры.

                          Comment

                          • dialod
                            Junior Member
                            • Apr 2020
                            • 18

                            #14
                            Я не хочу создавать еще одну отдельную тему, может быть так было бы правильнее. Мне нужно выдернуть еще список установленного ПО. Нашел ключ wmi.get["root\cimv2","SELECT Name FROM Win32_Product"]. В Zabbix отображаетcя только одна первая строка. Это нормально ? и можно ли что то сделать что бы отображался весь список.

                            Comment

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

                              #15
                              Originally posted by dialod
                              Если это будет проще, то опишите пожалуйста как это сделать. Буду очень признателен.
                              Ну, самый простой, наверное, вариант - это сделать элемент данных с типом "Text" и ключом:
                              Code:
                              system.run["route -4 print"]
                              Только для этого на агентах должен быть включен в конфиге параметр "EnableRemoteCommands=1".

                              Более правильно - настраивать через UserParameter (ссылка), только, к сожалению, это тоже требует редактирования конфигов на агентах.

                              Comment

                              Working...