Пример создания шаблона SNMP для Zabbix

Процесс установки zabbix а так же дополнительных различных вспомогательных программ
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 804
Стаж: 5 лет 1 месяц
Откуда: Вологодская область
Поблагодарили: 33 раза
Контактная информация:

Пример создания шаблона SNMP для Zabbix

Сообщение Артём Мамзиков »



Видео о Установка Эмулятора Симулятора 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
срк-м2 snmp
срк-м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 Браузер
изначально откроется стандартная библиотека 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
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
Создание простого элемента 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 указываем]
Почему именно этот 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
Автообнаружение 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
Ну и дальше все как обычно выбираем группу срок хранения истории описание
Главное чтоб в Имени, Ключе и SNMP OID были указанны макросы иначе при первом найденном элементе будет конфликт имен мол такой элемент уже создан так же это относится и к прототипам триггерам и графикам

Прототипы элементов
Прототипы Элементов SNMP
Прототипы Элементов SNMP
Прототип Элемента SNMP + преобразование значений
Прототип Элемента SNMP + преобразование значений
Прототип Элемента SNMP + преобразование значений
Пример Преобразования прототипа элемента данных
Есть строка Centigrade:38 Fahrenheit:100
Регулярное вырожение Centigrade:([0-9]+) \0 остается только Centigrade:38
Обрезка слева Centigrade: остается 38

Оф. документация Обнаружение SNMP OID'ов и Низкоуровневое обнаружение LLD
Оф. Регулярки

из стандартной инструкции на примере шаблона Template SNMPv2 Interfaces
default snmp
default snmp
Отличие в поле SNMP OID в одном случае ищем по имени в другом по значению
отличия обнаружения snmp
отличия обнаружения 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
отличия прототипов элементов 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
Уровень безопасности noAuthNo Priv или authNoPriv или authPriv
Пример настроек для ИБП APC SNMP v3
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
Пример запроса SNMP V3 snmpwalk.jpg

Описание опции snmpwalk
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.zip
SRK-M2.zip
(692.22 КБ) 54 скачивания
d-link dns-340l.zip
d-link dns-340l.zip
(14.36 КБ) 45 скачиваний
он же на SRK-M2(Y); СРК-М2(У) SNMPv1
Шаблон d-link dns-340l

Шаблон все в куче из MIB iso.org.dod.internet.mgmt.mib-2
Шаблон iso.org.dod.internet.mgmt.mib-2.zip
Шаблон iso.org.dod.internet.mgmt.mib-2.zip
(48.44 КБ) 57 скачиваний
О Настройке и работе SNMP Traps в zabbix Debian и MIB Файлы тут

Если шаблон будет подключатся к Хосту (узлу) где используется SNMP V3 с авторизацией и шифрованием
Для удобства задайте Макросы (переменные) Для того чтобы в каждом элементе в дальнейшем не прописывать логин пароли
Пример
макросы для SNMP V3
макросы для SNMP V3
После подключения шаблона к узлу, В узле задайте данные Макросы и пропишите для них логин пароль!
{$SNMP_V3_CONTEXTNAME} Имя контекста, чтобы идентифицировать элемент в подсети SNMP
{$SNMPV3_SECURITYNAME} Имя безопасности
{$SNMPV3_AUTHPASS} Пароль аутентификации
{$SNMPV3_PRIVATEPASS} (пароль конфиденциальности) Ключевая фраза безопасности (неправильной парольной фразы конфиденциальности, сообщение об ошибке ТАЙМ-АУТА от net-snmp)
{$SNMPV3_PORT} Порт обычно 161

В случае неправильных учетных данных SNMPv3
(имя безопасности, протокол аутентификации / парольная фраза, протокол конфиденциальности)
Zabbix получает СООБЩЕНИЕ об ОШИБКЕ от net-snmp.

При изменениях в:
протоколе аутентификации, парольной фразе аутентификации, протоколе конфиденциальности или парольной фразе конфиденциальности, внесенные без изменения имени безопасности.
Вступят в силу только после очистки кэша на сервере /прокси вручную (с помощью

Код: Выделить всё

zabbix_server -R snmp_cache_reload
или

Код: Выделить всё

zabbix_proxy -R snmp_cache_reload
)
или перезапуска сервера /прокси.
В тех случаях, когда имя безопасности также изменяется, все параметры будут обновлены немедленно.

После включения 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
макросы для 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 то что нет соединения)
Если удаленный хост Debian и его планируется опрашивать по snmp v3
Показать
Создать имя пользователя для аутентификации
Установить пароль аутентификации
Установить пароль шифрования
Определить права доступа
Определить алгоритм шифрования

Создание пароля для подключения к узлу на котором 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
Обработка массовых SNMP запросов Что это такое? За что отвечает эта галочка?
SNMP Использовать массовые запросы
SNMP Использовать массовые запросы
Обработка массовых SNMP запросов
Показать
Обработка массовых SNMP запросов

Начиная с версии 2.2.3, Zabbix сервер и прокси одним запросом опрашивают множество SNMP элементов данных.
Такое поведение затрагивает следующие типы SNMP элементов данных:
1.обычные SNMP элементы данных;
2.SNMP элементы данных с динамическими индексами;
3.правила низкоуровневого SNMP обнаружения.
Все элементы данных SNMP с одного интерфейса планируются на опрос в одно время. Первые два типа элементов данных собираются поллерами(проверками) порциями не более чем по 128 элементов данных, в то время как правила низкоуровневого обнаружения обрабатываются индивидуально, как и ранее.

На низком уровне, есть два вида операций выполняемых при опросе значений:
1.Получение нескольких заданных объектов и
2.Обход дерева OID-ов.

Для "получения" используется GetRequest-PDU c не более чем 128 привязанных переменных.
Для "обхода" используется GetNextRequest-PDU для SNMPv1 и GetBulkRequest с полем "max-repetitions" с наибольшим количеством в 128 полученных значений для SNMPv2 и SNMPv3.

Таким образом, преимущества массовой обработки для каждого типа SNMP элемента данных описаны ниже:
1.обычные SNMP элементы данных получают преимущество от улучшенного "получения";
2.SNMP элементы данных с динамическими индексами получают преимущество и от улучшенного "получения" и "обхода": "получение" используется для проверки индексов, а "обход" для построения кэша значений;
3.правила низкоуровневого SNMP обнаружения получают преимущество от улучшенного "обхода".
Тем не менее, есть техническая проблема: не все устройства способны вернуть 128 значений за один запрос. Некоторые всегда возвращают корректный ответ, но другие либо отвечают с ошибкой "tooBig(1)", либо не отвечают вообще, когда потенциальный запрос превышает определённый лимит.

Для вычисления оптимального количества объектов, запрашиваемых с данного устройства, Zabbix использует следующую стратегию. Начинается с осторожного запроса одного значения. Это запрос выполнен успешно, запрашивается 2 значения за один запрос. Если запрос снова выполнен успешно, запрашивается 3 значения за запрос и продолжается аналогично путём умножения количества запрашиваемых значений на 1.5, в результате получается следующая последовательность размера запросов: 1, 2, 3, 4, 6, 9, 13, 19, 28, 42, 63, 94, 128.

Однако, как только устройство отказывается давать корректный ответ (к примеру, на 42 переменных), Zabbix делает 2 вещи.

Во-первых, для текущей серии элементов данных Zabbix делит пополам количество объектов на один запрос и запрашивает 21 переменную. Если устройство доступно, то запрос должен работать в большинстве случаев, потому что было известно, что с 28 переменными работало, а 21 значительно меньше. Однако, если проблема продолжается, Zabbix возвращается к опросу значений по одному. Если проблемы есть и в этом случае, значит устройство определенно не отвечает и проблема не в размере запроса.

Вторая вещь, которую делает Zabbix для дальнейших порций элементов данных, - он начинает с последнего удачного количества переменных (28 в нашем случае) и продолжает, увеличивая количество переменных за запрос на 1 до достижения лимита. Например, предположим, что наибольший размер ответа -- это 32 переменных, тогда последующие запросы будут размерами 29, 30, 31, 32 и 33. Последний запрос будет неудачным, и Zabbix никогда более не запросит 33 значения за один запрос. С этого момента, Zabbix всегда будет опрашивать максимум по 32 переменных для этого устройства.

Если большие запросы неудачно завершаются с этим количеством переменных, это может означать одно из двух. Точный критерий, используемый устройством для ограничения размера ответа, неизвестен, но мы пытаемся приблизительно оценить это, используя количество переменных. Поэтому первая возможность - что в общем случае это количество переменных где-то около реального ограничения размера ответа для данного устройства: иногда ответ меньше этого предела, иногда больше. Вторая возможность - что UDP пакет (в любом направлении) просто был потерян. По этим причинам, если Zabbix сталкивается с неудачным запросом, то он уменьшает максимальное количество переменных, чтобы попытаться углубиться в комфортный для устройства диапазон, но (начиная с 2.2.8) только до 2 раз.

В примере выше, если запрос с 32 переменными будет неудачен, Zabbix уменьшит количество до 31. Если неудача случится снова, Zabbix уменьшит количество до 30. Тем не менее, Zabbix не будет уменьшать количество ниже 30, потому что он предположит, что дальнейшие проблемы по причине потерянных UDP пакетов, нежели из-за ограничения устройства.

Если, однако, устройство не умеет обрабатывать массовые запросы корректно и описанная выше эвристика не работает, то, начиная с Zabbix 2.4, у каждого интерфейса имеется настройка "Использовать массовые запросы", позволяющая отключить массовые запросы у этого устройства.

Еще пример работы от Алексей Владышев 2005г Автоматизируем мониторинг: низкоуровневое обнаружение для SNMP

Предобработка JavaScript - JS в Zabbix
количество слов: 2152
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 804
Стаж: 5 лет 1 месяц
Откуда: Вологодская область
Поблагодарили: 33 раза
Контактная информация:

Пример создания шаблона SNMP для Zabbix

Сообщение Артём Мамзиков »

Как узнать имя из OID присвоенное mib файлом
Пример
snmptranslate 1.3.6.1.4.1.77.1.2.3.1.1
LanMgr-Mib-II-MIB::svSvcName

Обратное узнать из имени MIB получаем OID
Пример
snmptranslate -On LanMgr-Mib-II-MIB::svSvcName
.1.3.6.1.4.1.77.1.2.3.1.1

Код: Выделить всё

snmpwalk -v 2c -c public -M ./ -Ln -m ALL 192.168.xxx.xxx |sed 's/^iso/snmptranslate 1/g'|sed 's| =.*||' >> NameOID.sh
Или

Код: Выделить всё

snmpwalk -v 2c -c  public -M ./ -Ln -m ALL 192.168.xxx.xxx |sed 's/^iso/snmptranslate 1/g'|sed 's/=.*/>> NameOID.txt/g' >> NameOID.sh

Код: Выделить всё

sed -i 's/"//' ./NameOID.sh
chmod 777 ./NameOID.sh
./NameOID.sh
rm ./NameOID.sh

Полное название
snmptranslate -Of

используйте опцию -IR (-I, от слова Input) для поиска по всему MIB-дереву
snmptranslate -IR sysUpTime.0

С помощью опции -Ib возможен поиск по MIB-дереву с использованием регулярных выражений
snmptranslate -Ib 'sys.*ime'
system.sysUpTime

Чтобы получить весь список найденных по регулярному выражению значений, используйте опцию -TB
snmptranslate -TB 'vacm.*table'
SNMP-VIEW-BASED-ACM-MIB::vacmViewTreeFamilyTable
SNMP-VIEW-BASED-ACM-MIB::vacmAccessTable
SNMP-VIEW-BASED-ACM-MIB::vacmSecurityToGroupTable
SNMP-VIEW-BASED-ACM-MIB::vacmContextTable

Получить дополнительную информацию о MIB-узлем можно с -Td(description) опцией
snmptranslate -On -Td -Ib 'sys.*ime'

Если вы хотите получить аккуратную диаграмму секции MIB-дерева, используйте -Tp опцию
snmptranslate -Tp -IR system

debian snmptranslate
Руководство по командам Net-SNMP

snmpget
Чтение информации с устройства, заданного по его имени(host name), аутентификационной информации и OID.
snmpget -c demopublic -v 2c test.net-snmp.org system.sysUpTime.0
Версии
snmpget -v 2c -c demopublic test.net-snmp.org system.sysUpTime.0
Сокращения OID'ов и производят поиск по всему MIB дереву, так что вы можете указать только часть OID'а
snmpget -v 2c -c demopublic test.net-snmp.org sysUpTime.0
Получение значений нескольких OID'ов одной командой:
snmpget -v 2c -c demopublic test.net-snmp.org sysUpTime.0 ucdDemoUserList.0

snmpgetnext: получение информации следующего OID'а
Команда snmpgetnext похожа на snmpget, с тем лишь различием, что возвращает OID и его значение, следующее в MIB-дереве за тем, что указано в качестве аргумента
snmpgetnext -v 2c -c demopublic test.net-snmp.org system.sysUpTime.0
Для последовательного просмотра OID'ов просто путём указания в аргументе последнего полученного OID'а
snmpgetnext -v 2c -c demopublic test.net-snmp.org system.sysUpTime.0

Фактически команда snmpwalk, рассматриваемая ниже, делает то же самое за один раз!
В отличие от snmpget, snmpgetnext возвращает значение для OID'а, написанного без индекса(см. про snmpget выше). В таком случае с snmpgetnext не будет возникать ошибки, т.к. вы получаете значение следующей переменной независимо от того, указан ли индекс для переменной в аргументе команды:
snmpgetnext -v 2c -c demopublic test.net-snmp.org system.sysUpTime

snmpwalk: серия snmpnext комманд за раз
Автоматически выполняет серию snmpnext команд внутри заданного OID'ом диапазона. К примеру, если вы хотите получить всю информацию, хранящуюся в MIB
snmpwalk -v 2c -c demopublic test.net-snmp.org system

snmptable: отображение SNMP-таблицы
Отображает SNMP таблицу в разбитом на колонки виде
snmptable -v 2c -c demopublic test.net-snmp.org sysORTable
Меняем ширину выводимой таблицы
snmptable -v 2c -c demopublic -Cw 80 test.net-snmp.org sysORTable

snmpset: изменение OID'ов
Используется для изменения данных на удалённом хосте/устройстве.
Для каждой переменной, что вам необходимо изменить, необходимо указать OID, тип данных и само значение.
Вы можете увидеть поддерживаемые типы данных в конце вывода команды snmpset, запущенной с ключом -h
snmpset -h |& tail -4

Пример проверим, а затем изменим значение OID'а, используя snmpget и snmpset:

snmpget -v 2c -c demopublic test.net-snmp.org ucdDemoPublicString.0
enterprises.ucdavis.ucdDemoMIB.ucdDemoMIBObjects.ucdDemoPublic.ucdDemoPublicString.0 = "hi there"

snmpset -v 2c -c demopublic test.net-snmp.org ucdDemoPublicString.0 s "hello world"
enterprises.ucdavis.ucdDemoMIB.ucdDemoMIBObjects.ucdDemoPublic.ucdDemoPublicString.0 = "hello world"

snmpget -v 2c -c demopublic test.net-snmp.org ucdDemoPublicString.0
enterprises.ucdavis.ucdDemoMIB.ucdDemoMIBObjects.ucdDemoPublic.ucdDemoPublicString.0 = "hello world"

Мы успешно изменили значение OID'а ucdDemoPublicString.0.

Заметьте, что в случае, когда вы не имеете права на изменение(запись) объекта, сообщения об ошибке различны для SNMPv1 и SNMPv2c
snmpset -v 1 -c badcommunity test.net-snmp.org ucdDemoPublicString.0 s "hello"
Error in packet.
Reason: (noSuchName) There is no such variable name in this MIB.
This name doesn't exist: ucdDemoPublicString.0

snmpset -v 2c -c badcommunity test.net-snmp.org ucdDemoPublicString.0 s "hello"
Error in packet.
Reason: notWritable

SNMPv1 отсутствуют описания ошибок, но это исправлено в SNMPv2c
количество слов: 449
Deonis
Гость
Сообщения: 9
Стаж: 3 года 7 месяцев
Благодарил (а): 1 раз

Пример создания шаблона SNMP для Zabbix

Сообщение Deonis »

Добрый день! Только знакомлюсь с Zabbix, попробовал поработать с snmp. Поставил MIB Browser, сеть у нас разношерстная Попробовал с D-linc столкнулся с таким моментом, запросы от стандартной MIB библиотеки идущей в составе MIB Browser я получаю ответы от D-linc, но если пытаюсь использовать специально скаченный с сайта D-linc MIB файл для конкретного свича получаю сообщение "нет такого объекта snmp", менял стандарт SNMP не помогло...
количество слов: 16
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 804
Стаж: 5 лет 1 месяц
Откуда: Вологодская область
Поблагодарили: 33 раза
Контактная информация:

Пример создания шаблона SNMP для Zabbix

Сообщение Артём Мамзиков »

Deonis, Добрый день! Да возможно что элемента такого нет, так как он может означать конкретную настройку включение какого функционала или настройку какого-то параметра например вилан 3 и с него будут сниматься данные , а его попросту нет вот и элемента нет, возможно нужно обновить прошивку. Стандарты все должны быть одинаковы работать одинаково на всех устройствах. Возможно это что то d-link напутал конкретнее можно задать вопрос им почему не работает тот или иной элемент по snmp на вашем устройстве такой то модели с таким то mib такой то прошивкой.
количество слов: 6
Deonis
Гость
Сообщения: 9
Стаж: 3 года 7 месяцев
Благодарил (а): 1 раз

Пример создания шаблона SNMP для Zabbix

Сообщение Deonis »

При работе Zabbix по SNMP в строке SNMP Community мы указываем либо сразу имя, либо используем макрос {$SNMP_COMMUNITY} если имя отличается от public мы его должны заменить в шаблоне. Вопрос, если к шаблону присоединены дополнительные шаблоны и в них также есть {$SNMP_COMMUNITY}, то его значение в присоединенных шаблонах будет браться от основного, или нужно менять в каждом?
количество слов: 9
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 804
Стаж: 5 лет 1 месяц
Откуда: Вологодская область
Поблагодарили: 33 раза
Контактная информация:

Пример создания шаблона SNMP для Zabbix

Сообщение Артём Мамзиков »

Deonis, По идее если указать макрос в Узле другой не public то приоритет будет на его, но если все же будет браться глобальный тогда нужно менять в шаблоне макрос, либо делать копию шаблонов и менять для них.
количество слов: 2
Deonis
Гость
Сообщения: 9
Стаж: 3 года 7 месяцев
Благодарил (а): 1 раз

Пример создания шаблона SNMP для Zabbix

Сообщение Deonis »

День добрый! Ну вот и воспользовался вашими трудами, создал шаблон, для NetUPS, вполне успешно, в случае с mib файлом от APC проблем подобных с d-linc не возникло. Так что большое спасибо!
Сейчас решил попытать силы с HP MSA, тут как раз много таблиц, в скаченном с HP архиве, было 7 mib файлов, судя по их содержанию это куски информации доступной по SNTP, вы с таким сталкивались?
количество слов: 11
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 804
Стаж: 5 лет 1 месяц
Откуда: Вологодская область
Поблагодарили: 33 раза
Контактная информация:

Пример создания шаблона SNMP для Zabbix

Сообщение Артём Мамзиков »

Deonis, Добрый день! Такие нет не делал, возможно разные миб для разных вариантов настроек, если есть какая то определенная настройка то и элемент будет обнаруживаться и проверятся. Так же возможно зависит от начинки на каком железе собранно возможно есть отличия, или версии прошивки на новой возможно больше запросов сделано для snmp. Или ещё кака вариант миб зависимы друг от друга вместо одной сделали несколько. А правильнее всего уточнить в поддержке HP ))
количество слов: 3
Deonis
Гость
Сообщения: 9
Стаж: 3 года 7 месяцев
Благодарил (а): 1 раз

Пример создания шаблона SNMP для Zabbix

Сообщение Deonis »

День добрый можно вопрос из теории Zabbix связанный с данной темой ? А именно макросами. Из описания на Zabbix следует что существует 3 вида макросов: 1 {macros} - системные макросы и есть их список, 2 {$macros}-пользовательские макросы создаваемые пользователем (причем {$SNMP_COMMUNITY} стал общеупотребимым), 3 {#macros} - макросы низкоуровневого обнаружения, и вот как раз этот тип макросов сказано что пять из них определены заранее в Zabbix - {#FSNAME}, {#FSTYPE}, {#IFNAME}, {#SNMPINDEX}, {#SNMPVALUE}, а остальные можно создавать самостоятельно. Вопрос эти пять макросов просто зарезервированные имена или они имеют предопределенное назначение?

К примеру При создании Правила обнаружения, для параметра SNMP OID вы используете discovery[{#SNMPVALUE}. Можно вместо {#SNMPVALUE} совой макрос?
количество слов: 22
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 804
Стаж: 5 лет 1 месяц
Откуда: Вологодская область
Поблагодарили: 33 раза
Контактная информация:

Пример создания шаблона SNMP для Zabbix

Сообщение Артём Мамзиков »

Deonis, Добрый день!
определены заранее в Zabbix - {#FSNAME}, {#FSTYPE}, {#IFNAME}, {#SNMPINDEX}, {#SNMPVALUE}
Они есть в стандартных шаблонах, для поиска сетевых интерфейсов для snmp (коммутаторов например) или
Например в шаблон Vipnet Lan Interfaces SNMPv2
ни имеют предопределенное назначение? Тут в общем Да

Можно вместо {#SNMPVALUE} совой макрос? Попробовать можно но выйдет тот же эфект подстановка значения, а может и не заработает.
количество слов: 13
Ответить Вложения 25 Пред. темаСлед. тема

Вернуться в «Установка Заббикс и Дополнений»