Нашел интересный баг, вылечить который пока не могу
есть 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-а счетчика, каждый в отдельности из которых я забрать могу с 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-а счетчика, и все, на этом один счетчик отвалился с известной уже вам ошибкой, а др. продолжал собирать статы.
Comment