Ad Widget

Collapse

Zabbix 3 - Не работает SNMP

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • svyaznoy
    Member
    • Nov 2014
    • 87

    #1

    Zabbix 3 - Не работает SNMP

    Есть маршрутизатор CISCO. Если выполнить запрос непосредственно с сервера, то ответ приходит исправно.
    snmpget -v 2c -c SNMP_***** -On 10.64.11.1:161 CISCO-ENVMON-MIB::ciscoEnvMonTemperatureStatusValue.1

    .1.3.6.1.4.1.9.9.13.1.3.1.3.1 = Gauge32: 26 degrees Celsius

    Из вэб-морды заббикс не может подключиться по SNMP. В логах пишет следующее(много подобных сообщений, по каждому элементу данных):
    5325:20160310:164148.432 item "rt_pom_2:ciscoEnvMonTemperatureState" became not supported: snmp_parse_oid(): cannot parse OID "CISCO-ENVMON-MIB::ciscoEnvMonTemperatureState.1".

    Что можно покопать? Где посмотреть?
  • yukra
    Senior Member
    • Apr 2013
    • 1359

    #2
    Originally posted by svyaznoy
    Есть маршрутизатор CISCO. Если выполнить запрос непосредственно с сервера, то ответ приходит исправно.
    snmpget -v 2c -c SNMP_***** -On 10.64.11.1:161 CISCO-ENVMON-MIB::ciscoEnvMonTemperatureStatusValue.1

    .1.3.6.1.4.1.9.9.13.1.3.1.3.1 = Gauge32: 26 degrees Celsius

    Из вэб-морды заббикс не может подключиться по SNMP. В логах пишет следующее(много подобных сообщений, по каждому элементу данных):
    5325:20160310:164148.432 item "rt_pom_2:ciscoEnvMonTemperatureState" became not supported: snmp_parse_oid(): cannot parse OID "CISCO-ENVMON-MIB::ciscoEnvMonTemperatureState.1".

    Что можно покопать? Где посмотреть?
    ОИД числом забейте, если заработает - разберайтесь почему mib не подтягивает (или подтягивает не оттуда)

    Comment

    • Randomiser86
      Junior Member
      • Nov 2018
      • 4

      #3
      День добрый.

      Подскажите как бороться имеются маршрутизаторы cisco 19xx 18xx 29xx
      По SNMP считываю из .1.3.6.1.4.1.9.9.13.1.3.1.3.x температуру сенсеров. Все хорошо когда температура положительная. Но как только температура становится отрицательной получается абракадабра хотя в sh env all нормально показывает отрицательные значения.
      .1.3.6.1.4.1.9.9.13.1.3.1.3.1 = Gauge32: 0
      .1.3.6.1.4.1.9.9.13.1.3.1.3.2 = Gauge32: 4294967290
      .1.3.6.1.4.1.9.9.13.1.3.1.3.3 = Gauge32: 4294967293
      .1.3.6.1.4.1.9.9.13.1.3.1.3.4 = Gauge32: 4294967295
      .1.3.6.1.4.1.9.9.13.1.3.1.3.5 = Gauge32: 4294967291

      Подскажете может брать какойто другой OID или есть способ преобразовать как то эти значения?

      Comment

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

        #4
        По всей видимости, проблема в том, что тип Gauge32 (как и Counter32) предназначен для хранения неотрицательных 32-битных целых, а для знаковых предназначен тип Integer32.
        А вот как преобразовать одно в другое, без использования внешних скриптов, я что-то не могу придумать. Даже стандартных средств предобработки тут, по-моему, не хватает.

        Comment

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

          #5
          Пока что максимум, что смог придумать, - это делать дополнительный calculated item, в котором уже делать нужные преобразования.
          Так, скажем, если основной (кривой) элемент данных у нас имеет ключ "test", то формула для вычисляемого элемента данных получается такая:
          Code:
          (last(test)<2147483648)*last(test) + (last(test)>=2147483648)*(last(test) - 4294967296)
          Тип его должен быть "Numeric (float)", чтобы иметь возможность хранить отрицательные значения тоже.
          Период выставить таким же, как у исходного элемента данных. Правда, реальные данные в нём будут немного запаздывать по сравнению с исходным, но это уже особенность любого вычисляемого айтема.

          Comment


          • Randomiser86
            Randomiser86 commented
            Editing a comment
            Примного благодарен за костыль)). только не понятна первая часть. Почему сравнивается с 2147483648?
            Last edited by Randomiser86; 20-02-2019, 05:32.
        • Kos
          Senior Member
          Zabbix Certified SpecialistZabbix Certified Professional
          • Aug 2015
          • 3404

          #6
          только не понятна первая часть. Почему сравнивается с 2147483648?
          Очень просто: 2147483648 = это 231. Это первое целое число, у которого в 32-битном представлении старший бит оказывается выставлен. Если интерпретировать его как "целое со знаком", то такое же представление имеет и самое большое по модулю отрицательное число (-2147483648).

          Фактически, первым условием мы проверяем старший бит 32-битной части числа. Если этот бит не выставлен, то считаем число положительным и используем его "как есть".
          А если выставлен - то преобразуем к отрицательному: 4294967296 - это 232. Скажем, самое маленькое по модулю отрицательное число (-1) в виде 32-битного со знаком будет представлено как "32 единицы", но если интерпретировать то же самое число как "беззнаковое целое", то получится 4294967295. Чтобы из него получить (-1), надо вычесть именно 4294967296 (232).

          А результат операции сравнения в Zabbix-е - это ноль или единица. Поэтому, в зависимости от результата сравнения, либо левая, либо правая часть выражения обязательно будет равна нулю, а результат будет определяться оставшейся частью.

          Comment

          • Rusya
            Member
            • Nov 2013
            • 43

            #7
            Коллеги, по этому поводу у Cisco есть решение, заменить образ где этот баг пофиксили.


            Comment

            Working...