Поиск по этому блогу

26.10.2017

Инвентаризация оборудования по snmp

Есть такой ENTITY-MIB, в котором хранятся данные о модели, серийном номере, модулях и пр. Собрал эти данные по snmp с использованием ПО telegraf, сложил в базу influxdb, вывел таблицы в grafana, откуда их можно экспортировать в csv формате. Конфигурация лежит в  /etc/telegraf/telegraf.d с расширением .conf
[[inputs.snmp]]
  interval = "24h"
  agents = [ "cisco-switch1", "cisco-switch2", "dlink-switch4", "eltex-switch5", "cisco-router" ]
  version = 2
  community = "rublic"

  [[inputs.snmp.field]]
    name = "location"
    oid = "SNMPv2-MIB::sysLocation.0"
    is_tag = true

  [[inputs.snmp.field]]
    name = "contact"
    oid = "SNMPv2-MIB::sysContact.0"
    is_tag = true

  [[inputs.snmp.table]]
    name = "inventory"
    inherit_tags = [ "location", "contact" ]
    oid = "ENTITY-MIB::entPhysicalTable"
    index_as_tag = true

    [[inputs.snmp.table.field]]
      name = "IsFRU"
      oid = "ENTITY-MIB::entPhysicalIsFRU"
      is_tag = true

    [[inputs.snmp.table.field]]
      name = "ModelName"
      oid = "ENTITY-MIB::entPhysicalModelName"
      is_tag = true

    [[inputs.snmp.table.field]]
      name = "Class"
      oid = "ENTITY-MIB::entPhysicalClass"
      is_tag = true

    [[inputs.snmp.table.field]]
      name = "MfgName"
      oid = "ENTITY-MIB::entPhysicalMfgName"
      is_tag = true
Для huawei отдельный конфиг, т.к. имя модели в другом мибе. За juniper я не брался.
[[inputs.snmp]]
  interval = "24h"
  agents = [ "huawei-switch3" ]
  version = 2
  community = "rublic"

  [[inputs.snmp.field]]
    name = "location"
    oid = "SNMPv2-MIB::sysLocation.0"
    is_tag = true

  [[inputs.snmp.field]]
    name = "contact"
    oid = "SNMPv2-MIB::sysContact.0"
    is_tag = true

  [[inputs.snmp.table]]
    name = "inventory"
    inherit_tags = [ "location", "contact" ]
    oid = "ENTITY-MIB::entPhysicalTable"
    index_as_tag = true

    [[inputs.snmp.table.field]]
      name = "IsFRU"
      oid = "ENTITY-MIB::entPhysicalIsFRU"
      is_tag = true

    [[inputs.snmp.table.field]]
      name = "ModelName"
      oid = "SNMPv2-SMI::enterprises.2011.5.25.31.1.1.2.1.11"
      is_tag = true

    [[inputs.snmp.table.field]]
      name = "Class"
      oid = "ENTITY-MIB::entPhysicalClass"
      is_tag = true

    [[inputs.snmp.table.field]]
      name = "MfgName"
      oid = "ENTITY-MIB::entPhysicalMfgName"
      is_tag = true
index_as_tag - важный параметр. Без него стеки из одинаковых коммутаторов запишутся как один свич, который записался в базу последним, контроллеры wifi с одинаковыми точками доступа запишутся как контроллеры с одной точкой, трансиверы тоже посчитаются некорректно.
На картинке итоговый результат.
 p.s. При использовании ENTITY-MIB все ожидания пострадали.