Ad Widget

Collapse

Замена SNMPINDEX в имени элемента данных на другое значение.

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • laz.it
    Junior Member
    • Aug 2020
    • 3

    #1

    Замена SNMPINDEX в имени элемента данных на другое значение.

    Добрый день!

    Использую Zabbix 5.0. Из-за особенностей оборудования для применения автообнаружения используется OID, который при обнаружении выдает SNMPINDEX вида 1.1.1, что является указателем конкретного порта. Соответственно, использование SNMPINDEX в имени элемента данных не позволяет быстро определить конкретный порт по его номеру (от 1 до 63) т.к. этот номер "закодирован" в последних 3 цифрах (например, 63 порт имеет значение 3.7.3). На данный момент решаю эту проблему программой на python, которая находит в БД указанные значения и заменяет их на удобочитаемые. Проблемы в таком подходе следующие:
    1.Программа должна выполняться каждый раз, после выполнения обнаружения т.к. измененные значения перезаписываются в обычные.
    2.Не получилось автоматизировать запуск сразу после выполнения автообнаружения, поэтому есть определенная задержка в "исправлении".

    Так вот, мне почему-то кажется, что есть более "элегантный" способ решить эту задачу, но самостоятельное изучении документации идей не подкинуло, в гугле так же не нашел похожих решений. Буду признателен, если кто-то подскажет как лучше это решить, в идеале, средствами заббикса или хотя бы привязать выполнение программы изменения БД к моменту автообнаружения.

    Заранее спасибо! С Уважением!
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Обычно, кроме SNMP OID-а, у порта (т.е. сетевого интерфейса) есть какое-то более-менее "человеческое" имя, которым оперирует админ.
    Используя при автообнаружении несколько таблиц одновременно, можно из одной брать индекс OID-а, из другой - имя, а из третьей - ещё что-нибудь.

    Например, так:
    Code:
    discovery[{#IFOPERSTATUS},1.3.6.1.2.1.2.2.1.8,{#IFADMINSTATUS},1.3.6.1.2.1.2.2.1.7,{#IFALIAS},1.3.6.1.2.1.31.1.1.1.18,{#IFNAME},1.3.6.1.2.1.31.1.1.1.1,{#IFDESCR},1.3.6.1.2.1.2.2.1.2,{#IFTYPE},1.3.6.1.2.1.2.2.1.3]
    Click image for larger version

Name:	screenshot-2020-10-02_03.PNG
Views:	235
Size:	67.0 KB
ID:	410098
    Attached Files

    Comment

    • laz.it
      Junior Member
      • Aug 2020
      • 3

      #3
      Originally posted by Kos
      Обычно, кроме SNMP OID-а, у порта (т.е. сетевого интерфейса) есть какое-то более-менее "человеческое" имя, которым оперирует админ.
      Используя при автообнаружении несколько таблиц одновременно, можно из одной брать индекс OID-а, из другой - имя, а из третьей - ещё что-нибудь.
      Спасибо за ответ! Именно так я и делаю для обычных сетевых интерфейсов данного устройства. Но я забыл упомянуть, что, к сожалению, для нужных мне интерфейсов нет "человеческих" имен. Управление данным оборудованием осуществляется только через систему управления с собственной БД, которая умеет выводить админу нормальное имя порта. Эта процедура производится так же, на основе трех последних цифр в OID.
      Last edited by laz.it; 02-10-2020, 12:16. Reason: Исправление некоторых формулировок

      Comment

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

        #4
        Мда, тогда печалька :-(
        В голову приходят только такие костыльные варианты:

        1. Искать какие-то параметры интерфейса, которые админ может выставить сам (типа, Description), и которые при этом отдаются по SNMP. И прописывать "человеческие" имена туда (возможно, через какой-то разделитель, чтобы их было удобно извлекать в Zabbix-е препроцессингом).

        2. Опять же, использовать препроцессинг (прямо для обработки возвращаемого LLD-правилом JSON-а), в котором через Javascript заменить то, что отдаётся реально, на то, что хочется (те самые "человеческие" имена).

        Comment

        • laz.it
          Junior Member
          • Aug 2020
          • 3

          #5
          Спасибо, 2 вариант попробую реализовать, посмотрю как будет работать...

          Comment

          Working...