Template os windows snmp

Мониторинг Microsoft Windows на базе Zabbix

03.09.2019 Update

Кстати новые шаблоны уже доступны

Сегодня мы расскажем о том, как мы ведем мониторинг Windows систем (в скором времени планируем такой же обзор про Linux и как обычно с доступным шаблоном).

Наш путь начался, как часто бывает, со штатного шаблона Zabbix «Template OS Windows Active» для мониторинга Windows-клиентов (рабочие станции и сервера), но ровно через неделю активного использования поняли, в нем много чего не хватает.

Так мы и начали его кардинальную переделку, часть оставили и добавили много чего нового.

Общая концепция

1. Отдельные настройки шаблона в файле os_windows_active.conf

2. Отдельный скрипт PowerShell — os_windows_active.ps1 для работы шаблона, при этом скрипт должен быть универсальным и работать на большинстве операционных систем с минимумом внешних зависимостей.

3. Шаблон должен быть не зависимым от языка операционной системы, поэтому лучше всего снимать данные со счётчиков используя либо WMI, либо скрипт + zabbix trapper.

4. Шаблон должен давать максимум полезной информации по своему назначению, поэтому он объединяется как мониторинг физических параметров оборудования, так и операционной системы и даже инвентаризации.

Основные возможности

  • логических дисков;
  • физических дисков;
  • сетевых адаптеров;
  • системных сервисов.

Triggers

Мы включили и оттестировали, только самые критичные триггеры, которые реально показывают проблемы. Но добавили и некоторых других, для более детальной информации.

  • Продолжительная нагрузка на процессор в течении часа.
Physical Memory
  • Объём доступной физической памяти меньше заданного лимита;
  • Объём Commited памяти больше физической.
Physical disk
  • Скорость доступа к дискам на чтение и запись.
Logical disk
  • Критический объём дисков с возможностью прогноза на 12 часов.
Network
  • Смена MAC-адреса сетевого адаптера (для виртуальных машин очень актуально, если не поставили статический MAC-адрес);
  • Отключение Link-а сетевого адаптера;
  • Отброшенные пакеты на сетевом адаптере.
Operation system
  • Дата последней установки обновлений Windows
  • Изменение статуса Firewall

Инвентаризация

Так как клиенты имеют разные компьютеры, нам требуется получать краткую инвентаризацию по ним, поэтому мы добавили в шаблон сбор данных о компьютере, и этими данными заполняем стандартные поля Zabbix Inventory:

  • OS
  • tag
  • Chassis
  • Desktop
  • Model
  • HW architecture
  • Vendor
  • Host networks

Графики

Мы сделали несколько полезных общих графиков, чтобы наглядно видеть общее состояние клиента и отдельных его подсистем.

OS overview performance

OS detail performance

Где скачать

Данный шаблон и скрипт вы можете бесплатно скачать с GitHub, а также в Zabbix Share.

Наши шаблоны мы продолжим выкладываем в открытый доступ в наш репозитарий Zabbix.

Системное администрирование серверов и DevOps

#Автоматизация #Технологии #Процессы #ИТ #Записки #Журнал #Блог #Форум

Форум для различных тем в большей части ИТ

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

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

Сообщение Артём Мамзиков » Чт фев 20, 2020 20:48 #1

Что такое SNMP (англ. Simple Network Management Protocol — простой протокол сетевого управления) — стандартный интернет-протокол для управления устройствами в IP-сетях на основе архитектур TCP/UDP.

В большинстве случаев устройства поддерживают snmp протокол нужно просто его включить.
Существует несколько версий:

SNMP версия 1 (SNMPv1) — изначальная реализация протокола SNMP
SNMPv2 пересматривает Версию 1 и включает в себя улучшения в области производительности, безопасности, конфиденциальности и связях между менеджерами.
Хотя SNMPv3 используется Логин и Пароль для авторизации не приносит никаких изменений в протокол помимо добавления криптографической защиты, он является улучшением за счёт новых текстовых соглашений, концепций и терминологии
Более подробнее об SNMP

Так же бывает выбор
read (read-only) открытыми только для чтения,
read-write так и для чтения и для записи редактирования настроек.

Для подключения по умолчанию обычно прописывается это public и private для возможности чтения и для возможности чтения-записи при не об ходимости заменить на свои!

Нам необходимо зайти на устройство, активировать в настройках протокол SNMP, выбрать при необходимости версию, для мониторинга получения информации достаточно read только чтение, оставить public или изменить на свое, так же указать порт 161 либо свой.

Читайте также:  Проверить системные файлы windows 10 командная строка

Пример на СРК-М2

Далее идем на сайт производителя устройства в поддержке ищем свое устройство для загрузки драйверов прошивок документации Но нас интересует 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 iso.org.dod.internet.mgmt.mib-2 можно попробовать на ней позапрашивать различные стандартные данные. Так же File > Load MIBs есть еще различные MIB идущие в комплекте с MIB Browser.

Загружаем свой MIB для этого заходим File > Load MIBs или жмем Ctrl+L выбираем скаченный 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

И так по аналогии создаем простые элементы

Некоторые макросы низкоуровневого обнаружения “заранее добавлены” в функционал низкоуровневого обнаружения в 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.*

Читайте также:  Обучение администрирование линукс сети

Если нам нужно еще получить для прототипов какие то макросы например мы ходим в имя подставить имя то получать их нужно именно в этом разделе выглядеть это будет 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 OID были указанны макросы иначе при первом найденном элементе будет конфликт имен мол такой элемент уже создан так же это относится и к прототипам триггерам и графикам

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

из стандартной инструкции на примере шаблона Template SNMPv2 Interfaces

Описание
Вы можете также рассмотреть использование если-МБ::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

Описание
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

Установка 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»

Запрос с помощью Имени
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

Описание опции snmpwalk

snmpwalk -v 2c -c public

ИСПОЛЬЗОВАНИЕ: snmpwalk [Опции] AGENT [OID]

Опции:
-h, —help -Вызов справки
-H -показать понятные директивы файла конфигурации
-v 1|2c|3 -указывает используемую версию SNMP
-V, —version Вывести на экран версию snmpwalk

Читайте также:  Mac os все про нее

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 : 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 Выгрузить входные и выходные пакеты.

Оцените статью