>[оверквотинг удален]
>>>Пасиба, заранее.
>>
>>от файлов оно не зависит
>>по MIB-файлам snmpget преобразует текст в цифровой вид
>>и спрашивает у железки
>>если железка его не знает, то отвечает noSuchName
>
>то есть если я знаю путь в цифровой анотации мне в принципе
>MIB файлы не нужны, и я могу запрос и без них
>сформировать?
Источник
Thuktun (Message)
Zabbix “became not supported” – solved
I think I’ve found one of the answers to a long-annoying Zabbix issue related to SNMP items “flapping” from “became supported” to “became not supported”.
TL;DR – using an SNMPv1 query against an SNMPv2 device will confuse Zabbix. You’ll see intermittent failures of different tests as the device flaps between OK and “unknown”. This can be hard to track down, as its’s not a hard repeatable failure. It’s not the only cause of this error, but fixing this will solve many of the issues.
While looking through our Zabbix server logs I found LOTS of these:
All of these referred to a NetApp in cluster mode, but I found a few similar messages related to some “NetBot” cameras around as well. Additionally, the actual test item varied; there were about 6 different tests that were all failing intermittently. The failing tests were:
- netapp.disk.prefailed.count
- netapp.disk.cfe
- netapp.disk.name
- netapp.disk.version
- netapp.disk.failed.count
- netapp.disk.spare.count
A few Google searches returned some items related to this kind of issue, back to 2013
- https://www.zabbix.com/forum/showthread.php?t=38912 (LenR mentions: “Should the items be zabbix-trapper instead of zabbix-agent? I think I’ve seen this with incorrectly defined zabbix-sender updated items.”
- https://www.zabbix.com/forum/showthread.php?t=22114 (This shows that this has been seen as far back as 2011)
- http://serverfault.com/questions/761645/zabbix-issue-with-lld-lots-of-became-supported-became-not-supported (“should be using Zabbix trapper instead of …)
All of these are talking about Zabbix trapper vs Zabbix agent, that is using the wrong type of check for the test item, but no mention of SNMP.
Let’s look at the Zabbix configuration. Are we using the trapper or the agent for these test items?
Note that the NetApp template doesn’t use the Zabbix trapper or agent, it uses SNMP. But, some tests are SNMPv1 and some are SNMPv2. This is likely due to the fact that some versions of NetApp have had varying support for v1 and v2 over the years, and whoever created the template originally started with just v1. Over the years, as more test items were exposed, new tests were added, but using SNMPv2 and the old tests were left at SNMPv1?
Interesting. All of the failing tests are using SNMPv1. Not all v1 tests are failing, but all failing tests are using v1. There’s nothing here about Zabbix trapper or the Zabbix agent, but there is a (potential) mismatch. This shouldn’t be a problem, but let’s find out.
Over the next few hours, as each failure showed up in the Zabbix logs, I switched that particular test to SNMPv2. After being changed, that test never again “flapped”.
It seems that the keys to solving this were:
- LenR’s comment from 2013 about incorrectly defined items (although he was mentioning the zabbix-sender, not SNMP)
- Realizing it wasn’t a problem with the trapper vs agent, or an incorrect item definition in the agent, but that it was a mismatch in the server’s definition in the test item.
- That SNMPv1 and V2 are being treated differently in the Zabbix server, and that usually doing a v1 test against a v2 device will usually work, but not always.
- The “soft” failure of the v1 test against the v2 device “presents” as a MIB problem (“SNMP error: (noSuchName) There is no such variable name in this MIB.”), not a protocol failure.
I changed all of the failing NetApp tests to SNMPv2 last week. Since then all the tests that were changed from SNMPv1 to SNMPv2 have been fine. There have been none of these errors in the logs for 5 days.
Next: What about those NetBotz? Or maybe Zabbix meets IPv6 🙂
Источник
pmorch / README.md
This is supporting formation for this sourceforget bug report:
SNMP Version 1: If I try to SNMP get two OIDs:
- one of which doesn’t exist
- the other being in numerical .1.3.6.1.4.1.123456.1 format
Then Net-SNMP returns this in $sess :
and replaces the numerical OID with a symbolic one ( enterprises.123456.1.0 in the example).
When I remove the 2nd OID like so:
And try again. Then I get this:
So Net-SNMP replaced my numerical OID with one it doesn’t understand itself? I therefore file a bug.
Here is a some reproducing code along with some sample output.
About the inital OID set
We start out with tese two OIDs:
- .1.3.6.1.4.1.123456.1.0 — An OID for which there is no MIB file
- ifIndex.10000
The ifIndex.10000 is last, because testing shows that the Net-SNMP agent (localhost) will give a noSuchName error with ErrorInd pointing that least OID.
I started out with the first OID being a real valid OID in numerical form. So it doesn’t matter whether there is a mib for the first OID or not.
Use UseLongNames => 1 in the $sess object.
When the OIDs come back with an noSuchName error, replace the OIDs with the ones from the original set. I.e. replace the enterprises. with .1.3.6. And then splice and try again. Then it works.
Linux with libsnmp-perl 5.4.1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
ErrorStr (noSuchName): (noSuchName) There is no such variable name in this MIB. Ind: 2 |
$VAR1 = ‘after get’; |
$VAR2 = bless( [ |
bless( [ |
‘enterprises.123456.1.0’, |
», |
», |
‘NULL’ |
], ‘SNMP::Varbind’ ), |
bless( [ |
‘ifIndex’, |
‘10000’, |
», |
‘INTEGER32’ |
], ‘SNMP::Varbind’ ) |
], ‘SNMP::VarList’ ); |
$VAR1 = ‘after removal of first (0th) element’; |
$VAR2 = bless( [ |
bless( [ |
‘enterprises.123456.1.0’, |
», |
», |
‘NULL’ |
], ‘SNMP::Varbind’ ) |
], ‘SNMP::VarList’ ); |
ErrorStr (Sub-id not found): Unknown Object Identifier (Sub-id not found: (top) -> enterprises) |
ErrorStr (Sub-id not found): Unknown Object Identifier (Sub-id not found: (top) -> enterprises) |
In the following two lines, ‘noSuchName’ errors are expected |
ErrorStr (fine): (noSuchName) There is no such variable name in this MIB. |
ErrorStr (fine): (noSuchName) There is no such variable name in this MIB. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Источник
Adblock
detector
I think I’ve found one of the answers to a long-annoying Zabbix issue related to SNMP items “flapping” from “became supported” to “became not supported”.
TL;DR – using an SNMPv1 query against an SNMPv2 device will confuse Zabbix. You’ll see intermittent failures of different tests as the device flaps between OK and “unknown”. This can be hard to track down, as its’s not a hard repeatable failure. It’s not the only cause of this error, but fixing this will solve many of the issues.
Details:
While looking through our Zabbix server logs I found LOTS of these:
2031:20161027:111122.224 item "netapp-cluster.thuktun.com:netapp.disk.prefailed.count" became supported 2028:20161027:112119.172 item "netapp-cluster.thuktun.com:netapp.disk.prefailed.count" became not supported: SNMP error: (noSuchName) There is no such variable name in this MIB. 2030:20161027:120146.448 item "netapp-cluster.thuktun.com:netapp.disk.prefailed.count" became supported 2028:20161027:122120.026 item "netapp-cluster.thuktun.com:netapp.disk.prefailed.count" became not supported: SNMP error: (noSuchName) There is no such variable name in this MIB.
All of these referred to a NetApp in cluster mode, but I found a few similar messages related to some “NetBot” cameras around as well. Additionally, the actual test item varied; there were about 6 different tests that were all failing intermittently. The failing tests were:
- netapp.disk.prefailed.count
- netapp.disk.cfe
- netapp.disk.name
- netapp.disk.version
- netapp.disk.failed.count
- netapp.disk.spare.count
A few Google searches returned some items related to this kind of issue, back to 2013
- https://www.zabbix.com/forum/showthread.php?t=38912 (LenR mentions: “Should the items be zabbix-trapper instead of zabbix-agent? I think I’ve seen this with incorrectly defined zabbix-sender updated items.”
- https://www.zabbix.com/forum/showthread.php?t=22114 (This shows that this has been seen as far back as 2011)
- http://serverfault.com/questions/761645/zabbix-issue-with-lld-lots-of-became-supported-became-not-supported (“should be using Zabbix trapper instead of …)
All of these are talking about Zabbix trapper vs Zabbix agent, that is using the wrong type of check for the test item, but no mention of SNMP.
Let’s look at the Zabbix configuration. Are we using the trapper or the agent for these test items?
Note that the NetApp template doesn’t use the Zabbix trapper or agent, it uses SNMP. But, some tests are SNMPv1 and some are SNMPv2. This is likely due to the fact that some versions of NetApp have had varying support for v1 and v2 over the years, and whoever created the template originally started with just v1. Over the years, as more test items were exposed, new tests were added, but using SNMPv2 and the old tests were left at SNMPv1?
Interesting. All of the failing tests are using SNMPv1. Not all v1 tests are failing, but all failing tests are using v1. There’s nothing here about Zabbix trapper or the Zabbix agent, but there is a (potential) mismatch. This shouldn’t be a problem, but let’s find out.
Over the next few hours, as each failure showed up in the Zabbix logs, I switched that particular test to SNMPv2. After being changed, that test never again “flapped”.
It seems that the keys to solving this were:
- LenR’s comment from 2013 about incorrectly defined items (although he was mentioning the zabbix-sender, not SNMP)
- Realizing it wasn’t a problem with the trapper vs agent, or an incorrect item definition in the agent, but that it was a mismatch in the server’s definition in the test item.
- That SNMPv1 and V2 are being treated differently in the Zabbix server, and that usually doing a v1 test against a v2 device will usually work, but not always.
- The “soft” failure of the v1 test against the v2 device “presents” as a MIB problem (“SNMP error: (noSuchName) There is no such variable name in this MIB.”), not a protocol failure.
I changed all of the failing NetApp tests to SNMPv2 last week. Since then all the tests that were changed from SNMPv1 to SNMPv2 have been fine. There have been none of these errors in the logs for 5 days.
Next: What about those NetBotz? Or maybe Zabbix meets IPv6 🙂
This entry was posted on November 15, 2016, 11:00 am and is filed under best practice, monitoring, System Administration. You can follow any responses to this entry through RSS 2.0.
Both comments and pings are currently closed.
Видео о Установка Эмулятора Симулятора SNMP устройств пример работы
Что такое SNMP (англ. Simple Network Management Protocol — простой протокол сетевого управления) — стандартный интернет-протокол для управления устройствами в IP-сетях на основе архитектур TCP/UDP.
В большинстве случаев устройства поддерживают snmp протокол нужно просто его включить.
Существует несколько версий:
SNMP версия 1 (SNMPv1) — изначальная реализация протокола SNMP
SNMPv2 пересматривает Версию 1 и включает в себя улучшения в области производительности, безопасности, конфиденциальности и связях между менеджерами.
Хотя SNMPv3 используется Логин и Пароль для авторизации не приносит никаких изменений в протокол помимо добавления криптографической защиты, он является улучшением за счёт новых текстовых соглашений, концепций и терминологии
Более подробнее об SNMP
Так же бывает выбор
read (read-only) открытыми только для чтения,
read-write так и для чтения и для записи редактирования настроек.
Для подключения по умолчанию обычно прописывается это public и private для возможности чтения и для возможности чтения-записи при не об ходимости заменить на свои!
Порт по умолчанию 161
Нам необходимо зайти на устройство, активировать в настройках протокол SNMP, выбрать при необходимости версию, для мониторинга получения информации достаточно read только чтение, оставить public или изменить на свое, так же указать порт 161 либо свой.
Пример на СРК-М2
- срк-м2
- срк-м2 snmp
Далее идем на сайт производителя устройства в поддержке ищем свое устройство для загрузки драйверов прошивок документации Но нас интересует snmp, а точнее MIBs.
MIB — (Management Information Base) — Базы управляющей информации
Так как адреса объектов устройств определяются в цифровом формате, их сложно запомнить. Для упрощения применяются базы управляющей информации (MIB). Базы MIB описывают структуру управляемых данных на подсистеме устройства; они используют иерархическое пространство имён, содержащее идентификаторы объектов (OID-ы)
OID состоит из двух частей: текстового имени и SNMP адреса в цифровом виде.
Например для NAS Хранилища d-link dns-340l заходим FTP D-Link и скачиваем там для нашего nas файл DNS-340L_MIB.mib
Или еще например для кондиционеров СРК-М2 (согласователь работы кондиционеров) заходим на оф. сайт Скачиваем MIB файл cpkm2&3_2019_04_01.mib srkm2_2017_11_27.mib
Так же бывают MIB общие которые подходят в большинстве для любого устройства например для сетевого порта снятие скорости ошибок и т.д.
Разобрались с MIB скачали что делать дальше.
Я пользуюсь бесплатной программой на Windows MIB Browser Версии 10.0
Скачать MIB Browser
Устанавливаем и Запускаем MIB Browser
- Mib Браузер
изначально откроется стандартная библиотека mib iso.org.dod.internet.mgmt.mib-2 можно попробовать на ней позапрашивать различные стандартные данные. Так же File > Load MIBs есть еще различные MIB идущие в комплекте с MIB Browser.
Загружаем свой MIB для этого заходим File > Load MIBs или жмем Ctrl+L выбираем скаченный MIB
- Mib Браузер загрузка
После в дереве появится новый раздел нашего MIB файла
- Mib Браузер загружена mib
Что куда жать
- Mib Браузер Что куда жать
Указываем IP устройства, Выбираем порт и версию SNMP, Выбираем Элемент для запроса, Жмем GO! Получаем ответ.
Теперь создаем простой Элемент в шаблоне Заббикс
Выбираем Элемент в MIB Browser выделяем его
Имя водим на свое усмотрение пример Информация о версии для агента SNMP DNS-340L
Тип Выбираем версию SNMP
из поля Name пишем в шаблоне заббикс в поле > Ключ Пример dns340LAgentVer
OID пишем в шаблоне заббикс в поле > SNMP OID Пример .1.3.6.1.4.1.171.50.1.10.1.1.1.0 Обратите внимание что в большинстве случаев нужно в конце дописать .0
SNMP Community глобальный макрос {$SNMP_COMMUNITY} или например просто public
Группу так же на свое усмотрение, я беру имя раздела в MIB Browser
Тип Информации в зависимости какие данные значения идут Values (если не знаете сразу ставьте текст) или от предобработки выбираем соотвествующие
Интервал насколько часто будем запрашивать данные, данного элемента
Описание я беру из descr
- Создание простого элемента snmp
И так по аналогии создаем простые элементы
Некоторые макросы низкоуровневого обнаружения “заранее добавлены” в функционал низкоуровневого обнаружения в Zabbix — {#FSNAME}, {#FSTYPE}, {#IFNAME}, {#SNMPINDEX}, {#SNMPVALUE}. Однако, не обязательно придерживаться этих имен при создании пользовательского низкоуровневого правила обнаружения.
Встроенный макрос {#SNMPINDEX} содержит индекс обнаруженного OID, который применяется к обнаруженным объектам. Обнаруженные объекты группируются по значению макроса {#SNMPINDEX}
макросом {#SNMPINDEX} равным индексам обнаруженных OID 1, 2 и 3 и т.д.
Правила обнаружения SNMP
Создать правило обнаружения
Имя Что будем искать данным правилом пример dns340LVolumeNum активные тома на устройстве NAS
Тип Выбираем версию SNMP
Ключ Пример dns340LVolumeNum Взяли из поля Name в mib соответствующего ключа
SNMP OID Пример discovery[{#SNMPVALUE}, .1.3.6.1.4.1.171.50.1.10.1.1.9.1.1]
Если нам нужна еще переменная с именем то через запятую добавляем макрос и OID с которого получаем имя для прототипов элементов
SNMP OID Пример discovery[{#SNMPVALUE}, .1.3.6.1.4.1.171.50.1.10.1.1.9.1.1, {#ИМЯ}, .OID указываем]
или если в место имени выходят индексы пробуем так
SNMP OID Пример discovery[{#SNMPVALUE}, .1.3.6.1.4.1.171.50.1.10.1.1.9.1.1,{#ИМЯ},OID указываем]
Например у нас в таблице до ключа есть 3 позиции
dns340LVolumeTable
.1.3.6.1.4.1.171.50.1.10.1.1.9
Таблица активных томов на устройстве NAS.
{#SNMPVALUE} макрос (как переменная в дальнейшем найденные значения будет подставлять в прототипы элементов)
.1.3.6.1.4.1.171.50.1.10.1.1.9.*.*.*
Тут у нас найдет 3 значения и будет их все подставлять и создавать элементы их очень много и они не все относятся к данной группе
dns340LVolumeEntry
.1.3.6.1.4.1.171.50.1.10.1.1.9.1
Запись в таблице томов.
Запись интерфейса, содержащая объекты на подсетевой слой и ниже для конкретного интерфейс.
.1.3.6.1.4.1.171.50.1.10.1.1.9.1.*.*
Тут будет 2 значения то же не устраивает
dns340LVolumeNum
.1.3.6.1.4.1.171.50.1.10.1.1.9.1.1
Номер экземпляра записи Тома
А здесь 1 значение все хорошо берем его
.1.3.6.1.4.1.171.50.1.10.1.1.9.1.1.*
В чем разница макросов {#SNMPVALUE} и {#SNMPINDEX} в прототипе элемента данных?
Помним что самое первое значение в SNMP OID в правиле обнаружения отдает 2 параметра {#SNMPVALUE} и {#SNMPINDEX} в формате JSON
Запрос будет такой это общая таблица, так как ключ (1.3.6.1.2.1.7.7.1.1) не работает
discovery[{#SNMPVALUE},1.3.6.1.2.1.7.7]
{#SNMPINDEX} -Таблица для 1.3.6.1.2.1.7.7 берется первый столбец Index
Пример
Код: Выделить всё
snmptable -v 2c -c public -Os -Ciw 80 192.168.0.183 1.3.6.1.2.1.7.7
{#SNMPVALUE} — это значение ответ на запрос ключа oid 1.3.6.1.2.1.7.7
Пример
Код: Выделить всё
snmpwalk -v 2c 192.168.0.183 -c public 1.3.6.1.2.1.7.7
snmpwalk -v 2c 192.168.0.183 -c public Имя Mib библиотеки::Имя запроса ключа
snmpwalk -v 2c 192.168.0.183 -c public OID
SNMP community указываем макрос {$SNMP_COMMUNITY}
Порт
Интервал обновления как часто будем искать например 1h
Период сохранения потерянных ресурсов 30d
Описание пишем описание что ищем
Активировано V
- Автообнаружение snmp
Если нам нужно еще получить для прототипов какие то макросы например мы ходим в имя подставить имя то получать их нужно именно в этом разделе выглядеть это будет discovery[{#МАКРОС1}, oid1, {#МАКРОС2}, oid2, …,]
Пример discovery[{#SNMPVALUE}, .1.3.6.1.4.1.171.50.1.10.1.1.10.1.1, {#DISKNAME}, .1.3.6.1.4.1.171.50.1.10.1.1.10.1.3] получаем индексы для прототипов элементов и макрос имя диска для подстановки имени в прототип элемента
Прототип Элемента
Имя Пример dns340LVolumeName.{#SNMPINDEX} — {#SNMPVALUE} Название Тома
Тип Версия SNMP
Ключ Пример dns340LVolumeName.[{#SNMPINDEX}]
SNMP OID Пример .1.3.6.1.4.1.171.50.1.10.1.1.9.1.2.{#SNMPINDEX}
где макрос {#SNMPINDEX} будет подставляться найденные значения, из правила обнаружения dns340LVolumeNum активные тома на устройстве NAS
SNMP community {$SNMP_COMMUNITY}
Порт
Тип информации Текст
Интервал обновления 6h
- Прототип Элемента SNMP
Ну и дальше все как обычно выбираем группу срок хранения истории описание
Главное чтоб в Имени, Ключе и SNMP OID были указанны макросы иначе при первом найденном элементе будет конфликт имен мол такой элемент уже создан так же это относится и к прототипам триггерам и графикам
Прототипы элементов
- Прототипы Элементов SNMP
Прототип Элемента SNMP + преобразование значений
- Прототип Элемента SNMP + преобразование значений
Пример Преобразования прототипа элемента данных
Есть строка Centigrade:38 Fahrenheit:100
Регулярное вырожение Centigrade:([0-9]+) остается только Centigrade:38
Обрезка слева Centigrade: остается 38
Оф. документация Обнаружение SNMP OID’ов и Низкоуровневое обнаружение LLD
Оф. Регулярки
из стандартной инструкции на примере шаблона Template SNMPv2 Interfaces
- default snmp
Отличие в поле SNMP OID в одном случае ищем по имени в другом по значению
- отличия обнаружения snmp
Имя Сетевой интерфейс
Тип SNMPv2 агент
Ключ ifDescr
SNMP OID discovery[{#SNMPVALUE},IF-MIB::ifDescr]
SNMP community {$SNMP_COMMUNITY}
Описание
Вы можете также рассмотреть использование если-МБ::ifType или если-МиБ::ifAlias для обнаружения в зависимости от ваших потребностей фильтрации.
{$SNMP_COMMUNITY} is a global macro. является глобальным макросом.
Или же например
Имя ifIndex Поиск сетевых интерфейсов и данных о них
Тип SNMPv2 агент
Ключ ifIndex
SNMP OID discovery[{#SNMPVALUE}, .1.3.6.1.2.1.2.2.1.1]
SNMP community {$SNMP_COMMUNITY}
Описание
ifTable
.1.3.6.1.2.1.2.2
Список элементов интерфейса. Количество записи присваивается значение, если количество.
ifEntry
.1.3.6.1.2.1.2.2.1
Запись интерфейса, содержащая объекты на подсетевой слой и ниже для конкретного интерфейс.
ifIndex
1.3.6.1.2.1.2.2.1.1
Уникальное значение для каждого интерфейса. Его значение колеблется между 1 и значением ifNumber. То значение для каждого интерфейса должно оставаться постоянным при по крайней мере, от одной повторной инициализации сущности. система управления сетью до следующего пожара- инициализация.
отличия прототипов элементов snmp
- отличия прототипов элементов snmp
Установка snmpwalk на Debian
apt-get install snmp
Чтобы идентификаторы OID соответствовали их текстовому описанию, активируйте несвободный репозиторий и установите
apt-get install snmp-mibs-downloader
Стандартно MIB лежат в ./usr/share/snmp/mibs/
обновить MIBS до последних версий
от root # download-mibs
В файле конфигурации nano /etc/snmp/snmp.conf включить нужные Mib
Я включил всё сделав следующее Закомментировал #MIBS: и добавил строку mibs :ALL
mibs :ALL включает все, что не совсем хорошо. Рекомендую для каждого оборудования иметь папку с mib’ами, т.к. они могут отличаться из одной прошивки к другой.
Или же прописать конкретные mib в конфиг например: mibs :BRIDGE-MIB:Q-BRIDGE-MIB:IP-MIB:IF-MIB
Конкретно одну добавить mibs +CPQPOWER-MIB
Добавление сторонних MIB для конкретного пользователя
# Создайте свой личный каталог MIBs
mkdir -p $HOME/.snmp/mibs
echo «mibdirs + $HOME/.snmp/mibs» >> $HOME/.snmp/snmp.conf
snmpwalk -v 1 -c public -m + ваша mib: еще ваша mib Хост
Примеры использования
Запрос с помощью OID
root@ZABBIXSERVER:/# snmpwalk -v 2c -c public 192.168.0.183 .1.3.6.1.2.1.2.2.1.2
iso.3.6.1.2.1.2.2.1.2.1 = STRING: «lo»
iso.3.6.1.2.1.2.2.1.2.2 = STRING: «sit0»
iso.3.6.1.2.1.2.2.1.2.3 = STRING: «eth0»
iso.3.6.1.2.1.2.2.1.2.4 = STRING: «eth1»
Запросим таблицу 1 столбец это будет Индекс
root@ZABBIXSERVER:/#snmptable -v 2c -c public -Os -Ci 192.168.0.183 .1.3.6.1.2.1.2.2.1.2
Ширина 80
root@ZABBIXSERVER:/#snmptable -v 2c -c public -Os -Ciw 80 192.168.0.183 .1.3.6.1.2.1.2.2.1.2
snmptable -h — справка
Запрос с помощью Имени
root@ZABBIXSERVER:/# snmpwalk -v 2c -c public 192.168.0.183 IF-MIB::ifDescr
IF-MIB::ifDescr.1 = STRING: lo
IF-MIB::ifDescr.2 = STRING: sit0
IF-MIB::ifDescr.3 = STRING: eth0
IF-MIB::ifDescr.4 = STRING: eth1
работает только при условиях:
Библиотека лежит тут ./usr/share/snmp/mibs/IF-MIB
расширение указывать не нужно (.mib .txt)
root@ZABBIXSERVER:/# snmpwalk -v 2c 192.168.0.183 -c public Имя Mib библиотеки::Имя запроса ключа
или
root@ZABBIXSERVER:/# snmpwalk -v 2c -c public 192.168.0.183 ifDescr
root@ZABBIXSERVER:/# snmpwalk -v 2c 192.168.0.183 -c public Имя запроса ключа
Опции можно менять местами пример:
Библиотека лежит тут ./usr/share/snmp/mibs/DNS-340L-MIB.mib
snmpwalk -v 2c -c public 192.168.0.150 DNS-340L-MIB::dns340LVolumeName
snmpwalk -v 2c -c public 192.168. Имя Mib библиотеки::Имя запроса ключа
или
snmpwalk -v 2c -c public 192.168.0.101 .1.3.6.1.4.1.232.165.3.1 -m CPQPOWER-MIB
snmpwalk -v 2c -c public -m /usr/share/snmp/mibs/DNS-340L_MIB.TXT 192.168.0.101 dns340LHostName
Так же если в конфиге не указана нужная mib можно сделать так
Он применит все найденные mib
snmpwalk -v 2c -c public -M ./ -Ln -m ALL 192.168.0.101
Если есть ошибка вида Error: OID not increasing:
Опция Cc делает это: «не проверять, что возвращенные OID увеличиваются
snmpwalk -v 2c -Cc -c public -M ./ -Ln -m ALL 192.168.0.101
Пример для snmpwalk -v 3
Основные ключи для запроса:
-a Протокол аутентификации (MD5 или SHA) (При настройке удаленного хоста может быть None , SHA1 , SHA256 , SHA512)
-l Уровень безопасности (noAuthNoPriv или authNoPriv или authPriv)
-u Имя пользователя для аутентификации
-A Пароль аутентификации
-x Определить алгоритм шифрования протокол конфиденциальности (DES или AES) (При настройке удаленного хоста может быть None ,AES-128 , AES-192 , AES-192 Ex , AES-256 , AES-256 Ex)
-X Пароль шифрования (Обратите внимание, что для повышения безопасности убедитесь, что вы используете разные пароли для аутентификации и шифрования)
Так же должен быть дан доступ Тип доступа: Disable (Отключен) , Read (Чтение) , Read/Write (Чтение Запись)
snmpwalk -v3 -a MD5 -l authPriv -u Пользователь -A Пароль -x DES -X Пароль 192.168.1.11 IF-MIB::ifDescr
snmpwalk -v3 -a SHA -l authPriv -u snmpreadonly -A hacker100 -x AES -X hacker101 192.168.43.188 | head -10
snmpwalk -v3 -a MD5 -l authPriv -u admin -A lslslsls1 -x DES -X ag66gaga 127.0.0.1
snmpwalk -v3 -a SHA -l authPriv -u snmp-poller -A «PASSWORD1» -x AES -X «PASSWORD2» 10.10.10.50
snmpwalk -v3 -a SHA -l authPriv -u snmp-poller -A «PASSWORD1» -x AES -X «PASSWORD2» 10.10.10.50 sysName.0 system.sysUpTime.0
Необходимо просто экранировать пароли в ‘, т.к. в паролях использовались не только буквы и цифры.
snmpwalk -v3 -a MD5 -l authPriv -A ‘auth_passphrase1’ -u user1 -x DES -X ‘priv_passphrase1’ 10.10.10.50
- Уровень безопасности noAuthNo Priv или authNoPriv или authPriv
Пример настроек для ИБП APC SNMP v3
- APC-ИБП-SNMP-V3
snmpwalk -v3 -a MD5 -l authPriv -u APCV3 -A Пароль -x DES -X Пароль IP:Порт если не 161 | head -10 отобразить первые 10 строк
- Пример запроса SNMP V3 snmpwalk.jpg
Описание опции snmpwalk
snmpwalk -v 2c -c public
ИСПОЛЬЗОВАНИЕ: snmpwalk [Опции] AGENT [OID]
Опции:
-h, —help -Вызов справки
-H -показать понятные директивы файла конфигурации
-v 1|2c|3 -указывает используемую версию SNMP
-V, —version Вывести на экран версию snmpwalk
SNMP V1 или V2С
-c COMMUNITY -установите строку сообщества например: -c public
SNMP V3 с авторизацией
-a PROTOCOL — установить протокол аутентификации (MD5 или SHA)
-A PASSPHRASE -установить протокол проверки подлинности пароля
-e ENGINE-ID -комплектация код двигатель (напр. 800000020109840301)
-E ENGINE-ID -установить идентификатор контекстного движка (например. 800000020109840301)
-l LEVEL -установить уровень безопасности (noAuthNoPriv|authNoPriv|authPriv)
-n CONTEXT -задать имя контекста (например. bridge1)
-u USER-NAME -установить имя (пользователя) безопасности (например. bert)
-x PROTOCOL -установить протокол конфиденциальности (DES или AES)
-X PASSPHRASE -Установить пароль протокола конфиденциальности
-Z BOOTS,TIME -установка загрузки двигателя назначения / времени
Общие параметры связи
-r RETRIES -установите количество повторных попыток
-t TIMEOUT -установите время ожидания запроса (в секундах)
Отладка debug
-d -дамп входных / выходных пакетов в шестнадцатеричном формате
-D[TOKEN[,…]] -включить вывод отладки для указанных токенов (ALL дает чрезвычайно подробный отладочный вывод)
Прочие Опции
-m MIB[:…] -загрузить данный список МИБ (ALL загружает все) snmpwalk -v 2c -c public -m DNS-340L_MIB.mib 192.168.
-M DIR[:…] -посмотрите в данном списке каталогов для MIBs
(Поумолчанию: $HOME/.snmp/mibs:/usr/share/snmp/mibs:/usr/share/snmp/mibs/iana:/usr/share/snmp/mibs/ietf:/usr/share/mibs/site:/usr/share/snmp/mibs:/usr/share/mibs/iana:/usr/share/mibs/ietf:/usr/share/mibs/netsnmp)
-P MIBOPTS -Переключить различные значения по умолчанию, контролирующие разбор MIB:
u: разрешить использование подчеркивания в символах MIB
c: запретить использование «—» для прекращения комментариев
d: сохранить ОПИСАНИЕ объектов MIB
e: отключить ошибки при конфликте символов MIB
w: включить предупреждения при конфликте символов MIB
W: включить подробные предупреждения при конфликте символов MIB
R: заменить символы MIB из последнего модуля
-O OUTOPTS -Переключение различных значений по умолчанию, управляющих отображением выхода:
0: печатать начальный 0 для шестнадцатеричных символов
a: распечатать все строки в формате ascii
b: не разбивайте индексы OID indexes down
e: печатать перечисления численно
E: экранировать кавычки в строковых индексах
f: печатать полные OID на выходе
n: печатать OIDs численно
q: быстрая печать для облегчения анализа
Q: быстрая печать со знаками равенства
s: печатать только последний символический элемент OID
S: распечатать идентификатор модуля MIB плюс последний элемент
t: распечатывать временные метки в виде числовых целых
T: печатать читабельный текст вместе с шестнадцатеричными строками
u: вывод OID с использованием подавления префикса в стиле UCD
U: не печатать единицы юниты
v: только для печати значений (нет OID = value значения)
x: распечатать все строки в шестнадцатеричном формате
X: расширенный индексный формат
-I INOPTS -Переключение различных значений по умолчанию, управляющих анализом ввода:
b: сделать лучшее / регулярное выражение, чтобы найти узел MIB
h: не применять DISPLAY-подсказки
r: не проверять значения для легальности диапазона / типа
R: сделать произвольный доступ к меткам OID
u: OID верхнего уровня должны иметь ‘.’ префикс (в стиле UCD)
s SUFFIX: Добавьте все текстовые OID с SUFFIX перед анализом
S PREFIX: Перед синтаксическим анализом добавьте все текстовые OID с помощью PREFIX.
-L LOGOPTS -Переключение различных настроек по умолчанию для управления журналом:
e: Вывод стандартного лога ошибок
o: Вывод стандартного лога ошибок
n: Отключить весь Лог
f file: Специфичный лог файл
s facility: войти в системный журнал (через указанное средство)
(Варианты)
[EON] pri: войти в стандартную ошибку, output or /dev/null for level ‘pri’ and above
[EON] p1-p2: log to standard error, output or /dev/null for levels ‘p1’ to ‘p2’
[FS] pri token: log to file/syslog for level ‘pri’ and above
[FS] p1-p2 token: log to file/syslog for levels ‘p1’ to ‘p2’
-C APPOPTS -Установить различные специфичные для приложения поведения:
p: выведите количество найденных переменных
i: включить данный OID в диапазон поиска
I: не включать данный OID, даже если результаты не возвращаются
c: не проверять количество возвращаемых OID увеличивается
t: Display wall-clock time to complete the walk
T: Display wall-clock time to complete each request
E {OID}: End the walk at the specified OID
Путь поиска MIB
/root/.snmp/mibs:
/usr/share/snmp/mibs:
/usr/share/snmp/mibs/iana:
/usr/share/snmp/mibs/ietf:
/usr/share/mibs/site:
/usr/share/snmp/mibs:
/usr/share/mibs/iana:
/usr/share/mibs/ietf:
/usr/share/mibs/netsnmp
snmpwalk [-d] [-p порт] -v 1 хост сообщество [имя_переменной]
-d Выгрузить входные и выходные пакеты.
Шаблоны
Скачать:
он же на SRK-M2(Y); СРК-М2(У) SNMPv1
Шаблон d-link dns-340l
Шаблон все в куче из MIB iso.org.dod.internet.mgmt.mib-2
О Настройке и работе SNMP Traps в zabbix Debian и MIB Файлы тут
Если шаблон будет подключатся к Хосту (узлу) где используется SNMP V3 с авторизацией и шифрованием
Для удобства задайте Макросы (переменные) Для того чтобы в каждом элементе в дальнейшем не прописывать логин пароли
Пример
- макросы для SNMP V3
После подключения шаблона к узлу, В узле задайте данные Макросы и пропишите для них логин пароль!
{$SNMP_V3_CONTEXTNAME} Имя контекста, чтобы идентифицировать элемент в подсети SNMP
{$SNMPV3_SECURITYNAME} Имя безопасности
{$SNMPV3_AUTHPASS} Пароль аутентификации
{$SNMPV3_PRIVATEPASS} (пароль конфиденциальности) Ключевая фраза безопасности (неправильной парольной фразы конфиденциальности, сообщение об ошибке ТАЙМ-АУТА от net-snmp)
{$SNMPV3_PORT} Порт обычно 161
В случае неправильных учетных данных SNMPv3
(имя безопасности, протокол аутентификации / парольная фраза, протокол конфиденциальности)
Zabbix получает СООБЩЕНИЕ об ОШИБКЕ от net-snmp.
При изменениях в:
протоколе аутентификации, парольной фразе аутентификации, протоколе конфиденциальности или парольной фразе конфиденциальности, внесенные без изменения имени безопасности.
Вступят в силу только после очистки кэша на сервере /прокси вручную (с помощью
или
)
или перезапуска сервера /прокси.
В тех случаях, когда имя безопасности также изменяется, все параметры будут обновлены немедленно.
После включения SNMP v3 перестали идти данные , при запросе вручную все ок данные приходят.
вариант решения.
Решение:
1. В настройках сервера zabbix включите ключ debug — чтобы увилеть рассширенный лог о ошибки SNMP
2. Включите с стороны MIKROTIK log SNMP (system-loging добавить SNMP)
И если вы мониторите не один mikrotik вы скорее всего увидите:
snmp,debug v3 err: 1 not in time window or incorrect engine boots
Это означает, что два или более хоста (в данном случае routerboards) имеют одинаковый идентификатор механизма SNMPv3,
а net-snmp перепутал хосты, которые ему было приказано отслеживать, и использует идентификатор механизма от одного маршрутизатора для отправки запросов к другому.
В этом случае вы увидите, что один маршрутизатор возвращает данные SNMPv3 как обычно, а все остальные маршрутизаторы не работают.
Чтобы обойти проблему, явно задайте для параметра engine-id в /snmp уникальное значение (в нашем случае — имя маршрутизатора).
Пример:
/snmp print
enabled: yes
contact: bsd info@bsd.su
location: office
engine-id: R1.domain
trap-target:
trap-community: public
trap-version: 1
trap-generators: temp-exception
Решение: ip — SNMP — engine-id: — задайте уникальное имя
Пример ошибки
19917:20221226:104449.373 SNMP agent item «sysName» on host «APC01-Smart-UPS-2200» failed: first network error, wait for 15 seconds
Error: passphrase chosen is below the length requirements of the USM (min=8).
19917:20221226:104449.373 Элемент SNMP-агента «sysName» на хосте «APC 01-Smart-UPS-2200» не удался: первая сетевая ошибка, подождите 15 секунд
Ошибка: выбранная кодовая фраза не соответствует требованиям USM по длине (min=8).
Кодовая фраза SNMP v3 не поддерживает специальные символы, такие как ! и $
Установите новую кодовую фразу SNMP v3, которая исключает специальные символы
Для AES рекомендуемая длина парольной фразы составляет 12
Далее в обычном элементе получаем следующий вид
- макросы для SNMP V3 Обычный элемент данных пример
Правило обнаружения пример для SNMP V3
- макросы для SNMP V3 Правило обнаружения пример
Прототип элемента данных пример SNMP V3
- макросы для SNMP V3 Прототип элемента данных пример
И так по аналогии создаем все элементы если у вас SNMP V3.
Пример на Харбе Мониторинг сетевого оборудования по SNMPv3 в Zabbix
snmpwalk -v3 -a MD5 -l authPriv -u APCV3 -A Пароль1 -x DES -X Пароль2 192.168.xxx.xxx:166 PowerNet-MIB::upsAdvBatteryTemperature.0
Если в виде макросов посмотреть получим
snmpwalk -v3 -a MD5 -l authPriv -u {$SNMPV3_SECURITYNAME} -A {$SNMPV3_AUTHPASS} -x DES -X {$SNMPV3_PRIVATEPASS} 192.168.xxx.xxx:{$SNMPV3_PORT} PowerNet-MIB::upsAdvBatteryTemperature.0
snmpwalk -v3 -a MD5 -l authPriv -u Имя безопасности -A Пароль аутентификации -x DES -X Ключевая фраза безопасности 192.168.xxx.xxx:Порт обычно 161 PowerNet-MIB::upsAdvBatteryTemperature.0
Если Пароль 1 неверен получим ошибку Authentication failed for и так же Timeout
Если Пароль 2 неверен получим ошибку Timeout: No Response from , Timeout while connecting to (красный snmp то что нет соединения)
Создать имя пользователя для аутентификации
Установить пароль аутентификации
Установить пароль шифрования
Определить права доступа
Определить алгоритм шифрования
Создание пароля для подключения к узлу на котором cоздается пароль пример
net-snmp-create-v3-user [-ro] [-A authpass] [-a MD5|SHA] [-X privpass][-x DES|AES] [username]
systemctl stop snmpd — остановить службу
net-snmp-create-v3-user -ro -A SecUREDpass -a SHA -X StRongPASS -x AES snmpreadonly
Получаем ответ
adding the following line to /var/lib/snmp/snmpd.conf:
createUser snmpreadonly SHA «SecUREDpass» AES StRongPASS
adding the following line to /usr/share/snmp/snmpd.conf:
rouser snmpreadonly
Для интерактивного запуска net-snmp-create-v3-user
net-snmp-create-v3-user -x AES -a SHA
Запускаем службы
systemctl start snmpd
systemctl enable snmpd
Проверка
snmpwalk -v3 -a SHA -A SecUREDpass -x AES -X StRongPASS -l authPriv -u snmpreadonly localhost | head -10
snmpwalk -v3 -a SHA -A hacker100 -x AES -X hacker101 -l authPriv -u snmpreadonly 192.168.43.188 | head -10
Так же для безопасности можно сделать
Определите IP-адрес интерфейса, с которого сервер может быть подключен удаленно, по умолчанию демон SNMP слушает в интерфейсе loopback.
nano /etc/snmp/snmpd.conf
указываем конкретные IP
agentAddress udp:127.0.0.1:161,udp:192.168.43.188:161
Еще пример работы от Алексей Владышев 2005г Автоматизируем мониторинг: низкоуровневое обнаружение для SNMP
Предобработка JavaScript — JS в Zabbix