Ad Widget

Collapse

Несколько элементов данных в одном запро

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • cr80
    Junior Member
    • Jul 2014
    • 2

    #1

    Несколько элементов данных в одном запро

    Нашел интересный баг, вылечить который пока не могу
    есть 2-а счетчика, каждый в отдельности из которых я забрать могу с smpd сервера установленной на удаленной машине.
    однако, когда "Элементы данных" активны одновременно, происходит занятная вещь, snmpd серверу посылается запрос от zabbix в котором идет запрос сразу 2-х счетчиков, в результате snmpd отвечает на один счетчик корректно, а на другой ошибкой "No Such Instance currently exists at this OID". В результате чего один счетчик перестает мониториться, а др продолжает корректно работать

    если смотреть tcpdump то это выглядит примерно так:

    17:10:18.192228 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 104)
    zabbix.server.37903 > snmpd.server.snmp: [bad udp cksum e412!] { SNMPv2c C=password { GetRequest(52) R=1956721087 .1.3.6.1.4.1.28029.11.3.1.2.1 .1.3.6.1.4.1.28029.11.3.1.6.1 } }
    17:10:18.283738 IP (tos 0x0, ttl 57, id 0, offset 0, flags [DF], proto UDP (17), length 106)
    snmpd.server.snmp > zabbix.server.37903: [udp sum ok] { SNMPv2c C=password { GetResponse(54) R=1956721087 .1.3.6.1.4.1.28029.11.3.1.2.1=991 .1.3.6.1.4.1.28029.11.3.1.6.1=[noSuchInstance] } }
    17:10:48.173221 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 85)
    zabbix.server.35710 > snmpd.server.snmp: [bad udp cksum bc33!] { SNMPv2c C=password { GetRequest(33) R=340176784 .1.3.6.1.4.1.28029.11.3.1.2.1 } }
    17:10:48.263747 IP (tos 0x0, ttl 57, id 0, offset 0, flags [DF], proto UDP (17), length 87)
    snmpd.server.snmp > zabbix.server.35710: [udp sum ok] { SNMPv2c C=password { GetResponse(35) R=340176784 .1.3.6.1.4.1.28029.11.3.1.2.1=995 } }
    17:11:18.379224 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 85)
    zabbix.server.33105 > snmpd.server.snmp: [bad udp cksum 645c!] { SNMPv2c C=password { GetRequest(33) R=2047224661 .1.3.6.1.4.1.28029.11.3.1.2.1 } }
    17:11:18.463220 IP (tos 0x0, ttl 57, id 0, offset 0, flags [DF], proto UDP (17), length 87)
    snmpd.server.snmp > zabbix.server.33105: [udp sum ok] { SNMPv2c C=password { GetResponse(35) R=2047224661 .1.3.6.1.4.1.28029.11.3.1.2.1=1006 } }
    17:11:48.582796 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 85)
    zabbix.server.48482 > snmpd.server.snmp: [bad udp cksum fe8c!] { SNMPv2c C=password { GetRequest(33) R=713231917 .1.3.6.1.4.1.28029.11.3.1.2.1 } }
    17:11:48.665672 IP (tos 0x0, ttl 54, id 0, offset 0, flags [DF], proto UDP (17), length 87)
    snmpd.server.snmp > zabbix.server.48482: [udp sum ok] { SNMPv2c C=password { GetResponse(35) R=713231917 .1.3.6.1.4.1.28029.11.3.1.2.1=1020 } }
    17:12:18.752210 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 85)
    zabbix.server.45356 > snmpd.server.snmp: [bad udp cksum 40e!] { SNMPv2c C=password { GetRequest(33) R=340176794 .1.3.6.1.4.1.28029.11.3.1.2.1 } }
    17:12:18.834831 IP (tos 0x0, ttl 57, id 0, offset 0, flags [DF], proto UDP (17), length 87)

    как мы видем, то что помечено жирным - это отправка 2-х запросов в одном на состояние счетчиков.
    в результате один - получил сообщение что такого счетчика нет, а др. продолжает работать. Однако такой счетчик есть, и если мы запустим только его одного, то он прекрасно отрабатывает

    более того, я делал эксперемент. я на одном "Элементе данных" ставил опрос через 10 секунд, на другом чере 11 секунд. в результате в начале собиралась статистика супер, с обоих устройств, но на 11-той интерации момент времени отправки запроса совпал и zabbix отправил в одном запросе 2-а счетчика, и все, на этом один счетчик отвалился с известной уже вам ошибкой, а др. продолжал собирать статы.
  • yukra
    Senior Member
    • Apr 2013
    • 1359

    #2
    Originally posted by cr80
    Нашел интересный баг, вылечить который пока не могу
    есть 2-а счетчика, каждый в отдельности из которых я забрать могу с smpd сервера установленной на удаленной машине.
    однако, когда "Элементы данных" активны одновременно, происходит занятная вещь, snmpd серверу посылается запрос от zabbix в котором идет запрос сразу 2-х счетчиков, в результате snmpd отвечает на один счетчик корректно, а на другой ошибкой "No Such Instance currently exists at this OID". В результате чего один счетчик перестает мониториться, а др продолжает корректно работать

    если смотреть tcpdump то это выглядит примерно так:

    17:10:18.192228 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 104)
    zabbix.server.37903 > snmpd.server.snmp: [bad udp cksum e412!] { SNMPv2c C=password { GetRequest(52) R=1956721087 .1.3.6.1.4.1.28029.11.3.1.2.1 .1.3.6.1.4.1.28029.11.3.1.6.1 } }
    17:10:18.283738 IP (tos 0x0, ttl 57, id 0, offset 0, flags [DF], proto UDP (17), length 106)
    snmpd.server.snmp > zabbix.server.37903: [udp sum ok] { SNMPv2c C=password { GetResponse(54) R=1956721087 .1.3.6.1.4.1.28029.11.3.1.2.1=991 .1.3.6.1.4.1.28029.11.3.1.6.1=[noSuchInstance] } }
    17:10:48.173221 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 85)
    zabbix.server.35710 > snmpd.server.snmp: [bad udp cksum bc33!] { SNMPv2c C=password { GetRequest(33) R=340176784 .1.3.6.1.4.1.28029.11.3.1.2.1 } }
    17:10:48.263747 IP (tos 0x0, ttl 57, id 0, offset 0, flags [DF], proto UDP (17), length 87)
    snmpd.server.snmp > zabbix.server.35710: [udp sum ok] { SNMPv2c C=password { GetResponse(35) R=340176784 .1.3.6.1.4.1.28029.11.3.1.2.1=995 } }
    17:11:18.379224 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 85)
    zabbix.server.33105 > snmpd.server.snmp: [bad udp cksum 645c!] { SNMPv2c C=password { GetRequest(33) R=2047224661 .1.3.6.1.4.1.28029.11.3.1.2.1 } }
    17:11:18.463220 IP (tos 0x0, ttl 57, id 0, offset 0, flags [DF], proto UDP (17), length 87)
    snmpd.server.snmp > zabbix.server.33105: [udp sum ok] { SNMPv2c C=password { GetResponse(35) R=2047224661 .1.3.6.1.4.1.28029.11.3.1.2.1=1006 } }
    17:11:48.582796 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 85)
    zabbix.server.48482 > snmpd.server.snmp: [bad udp cksum fe8c!] { SNMPv2c C=password { GetRequest(33) R=713231917 .1.3.6.1.4.1.28029.11.3.1.2.1 } }
    17:11:48.665672 IP (tos 0x0, ttl 54, id 0, offset 0, flags [DF], proto UDP (17), length 87)
    snmpd.server.snmp > zabbix.server.48482: [udp sum ok] { SNMPv2c C=password { GetResponse(35) R=713231917 .1.3.6.1.4.1.28029.11.3.1.2.1=1020 } }
    17:12:18.752210 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 85)
    zabbix.server.45356 > snmpd.server.snmp: [bad udp cksum 40e!] { SNMPv2c C=password { GetRequest(33) R=340176794 .1.3.6.1.4.1.28029.11.3.1.2.1 } }
    17:12:18.834831 IP (tos 0x0, ttl 57, id 0, offset 0, flags [DF], proto UDP (17), length 87)

    как мы видем, то что помечено жирным - это отправка 2-х запросов в одном на состояние счетчиков.
    в результате один - получил сообщение что такого счетчика нет, а др. продолжает работать. Однако такой счетчик есть, и если мы запустим только его одного, то он прекрасно отрабатывает

    более того, я делал эксперемент. я на одном "Элементе данных" ставил опрос через 10 секунд, на другом чере 11 секунд. в результате в начале собиралась статистика супер, с обоих устройств, но на 11-той интерации момент времени отправки запроса совпал и zabbix отправил в одном запросе 2-а счетчика, и все, на этом один счетчик отвалился с известной уже вам ошибкой, а др. продолжал собирать статы.
    Если вы про "2 запроса в одном пакете" то тема вроде как известная, и многие на нее жалуются (на ее реализацию). Появилась только в последних версиях и помогает откат.

    Могу поделиться скриптом на перл который:
    1) Запрашивает стразу страницу (несколько счетчиков, у которых начальные индексы одинаковые, а последние различаются. Не знаю как это правильно называется в терминалогии snmp)
    2) Сохраняет результат в файл
    3) Отдает ответ из файла
    4) В случае получение повторного запроса с той же страницы снова отдает ответ из файла при условии что 1) этот ответ еще не отдавался 2) кэш еще не протух.
    Все это было обвязкой для snmpbulkwalk и было заточенно для получения инфы о цисковских интерфейсах.

    Comment

    • cr80
      Junior Member
      • Jul 2014
      • 2

      #3
      не хочу городить огород

      на какую версию нужно откатиться что б не наблюдался такой бакг?
      м.б. есть патч, или настройка какая которая уберет данную проблему7!

      Comment

      Working...