Jump to content
Калькуляторы

Zabbix 3.0 - шаблоны для SNMP LLD вдруг кому пригодится

Update:

Выложил на Github.

https://github.com/rmavrichev/zabbix

Для желающих 3й версии - адаптированные шаблоны, файл zbx3_Basic_templates.xml .

Включает:

 

Basic App MySQL

Basic App Zabbix Agent

Basic App Zabbix Proxy

Basic App Zabbix Server

Basic Cisco SNMP with traps

Basic IBM - IMM2 SNMP

Basic ICMP Network Device

Basic Juniper SNMP with traps

Basic OS Linux

Basic SNMP Network Device

Basic Virt VMware

Basic Virt VMware Guest

Basic Virt VMware Hypervisor

 

 

Адаптировал под себя шаблоны с низкоуровневым обнаружением (LLD) из поставки zabbix 2.2 , может кому-то ещё пригодятся.

 

SNMP Interfaces with Traps

 

Basic SNMP Network Device.xml

 

Подходит для всего, что умеет IF-MIB (на циске, микротике и хуавее проверял), использует 64-бит счётчики. Теперь рисует дескрипшн интерфейса в имени графиков, discovery интерфейсов ограничен рег.выражением ^(.*Ethernet.*|Vlan.*|Tunnel.*|Port-channel.*)$[TRUE] (надо задать через меню "Администрирование", можно переопределить на уровне конкретного хоста (на Микротике по другому именуются интерфейсы, например) , ловит и складывает в кучу fallback-traps по SNMP (т.е. всё, что не попало под другие шаблоны трапов).

Также умеет взводить триггеры на наличие ошибок на порту (больше 10 за период опроса суммарно для TX и RX), и перегрузку по TX или RX более 80%. Ловит SNMP трапы на IF-MIB::linkDown (падение интерфейсов) и взводит по ним триггер. Собирает инвентори через ENTITY-MIB, для всех модулей, у которых есть серийные номера.

 

 

SNMP Cisco CPU and Memory with Traps

 

Cisco SNMP with traps.xml

Мониторит cpu, температуру, состав шасси, ловит циско-специфик трапы на некоторые события и взводит по ним триггеры. В общем, довесок к первому, специфичный для цисок.

 

для трапов трансляцию oid в человеко-читаемые делал на уровне snmpd, т.е. zabbix-y отдаются уже оттранслированные трапы.

 

 

Huawei SNMP with traps.xml

Мониторит cpu, память, температуру и состояние алармов компонентов шасси (проверялся на NE40E), ловит трапы на некоторые события и взводит по ним триггеры. По идее, должен работать на всех хуавеях.

 

 

Ещё есть полезный скриптик для пинания цисок на слив конфига на тфтп, используется как действие на триггер "изменение стартап-конфига".

/usr/bin/snmpset -v 2c -O qv -t 5 -c {$SNMP_WRITE} {HOST.CONN} .1.3.6.1.4.1.9.2.1.55.{$TFTP_IP} s {HOST.HOST}-`date '+%Y%m%d_%H%M%S'`.txt 2>&1

 

 

P.S. Обновил шаблоны до крайних версий.

zabbix_trap_receiver.pl.txt (переименовать в .pl) - версия ресивера с включенной транслацией hex->ascii (спасибо французам), т.к. некоторые железки отдают ifDescr в трапах как HEX-String (cisco 3750, например). Впрочем, некоторые (Dlink DGS3620) вообще не отдают....

 

 

P.P.S: Переработал шаблоны, добавил ивентори и триггер на падение интерфесов по трапу в базовый, в специфичные - добавлен мониторинг температуры, состояния блоков питания и вентиляторов. Также добавлен скрипт для сохранения конфигов с хуавея на тфтп.

 

#!/bin/sh

# GNU GPL

# Zabbix global script for backup Huawei CFG to TFTP server

# Usage:

# ./hwGetConfig.sh Private 10.77.2.3 10.78.3.4 huawei.cfg

# WARNING: filename MUST end with ".cfg"

# Zabbix usage:

# Global script like this: /usr/local/bin/hwGetConfig.sh {$SNMP_WRITE} {HOST.CONN} {$TFTP_IP} {HOST.HOST} 2>&1

 

# $1 {$SNMP_WRITE}

# $2 {HOST.CONN}

# $3 {$TFTP_IP}

# $4 {HOST.HOST}

 

/usr/bin/snmpset -v 2c -O qv -t 5 -c $1 $2 .1.3.6.1.4.1.2011.6.10.1.2.4.1.9.100 i 6 2>&1

/usr/bin/snmpset -v 2c -O qv -t 5 -c $1 $2 .1.3.6.1.4.1.2011.6.10.1.2.4.1.2.100 i 6 .1.3.6.1.4.1.2011.6.10.1.2.4.1.3.100 i 2 .1.3.6.1.4.1.2011.6.10.1.2.4.1.4.100 s $4-`date '+%Y%m%d_%H%M%S'`.cfg .1.3.6.1.4.1.2011.6.10.1.2.4.1.5.100 a $3 .1.3.6.1.4.1.2011.6.10.1.2.4.1.9.100 i 4 2>&1

 

#END

zabbix_trap_receiver.pl.txt

Basic SNMP Network Device.xml

Cisco SNMP with traps.xml

Huawei SNMP with traps.xml

zbx3_Basic_templates.xml

Share this post


Link to post
Share on other sites

Разобрался, как выполнять скрипты на proxy (полезно, если с самого заббикс-сервера не во все сети есть доступ, можно попинговать, или дёрнуть конфиг). Можно это делать через zabbix_get, надо только поставить на прокси ещё и заббикс-агент, и разрешить в нём remote commands.

 

пример:

Ping (proxy) Скрипт Сервер /usr/bin/zabbix_get -s{$PROXY_IP} -p10050 -k"system.run[/bin/ping -c 3 {HOST.CONN} 2>&1]"

 

П.С.: {$PROXY_IP} и другие переменные задаются через Администрирование -> Общие -> Макросы.

Утилиты zabbix_get в пакете заббикс-сервера для бубунты не было, взял бинарник из пакета прокси.

Share this post


Link to post
Share on other sites

Адаптировал под себя шаблоны с низкоуровневым обнаружением (LLD) из поставки zabbix 2.2 , может кому-то ещё пригодятся.

 

SNMP Interfaces with Traps

Подходит для всего, что умеет IF-MIB (на циске и микротике проверял), использует 64-бит счётчики. Теперь рисует дескрипшн интерфейса в имени графиков, discovery интерфейсов ограничен рег.выражением ^(.*Ethernet.*|Vlan.*|Tunnel.*|Port-channel.*)$[TRUE] (надо задать через меню "Администрирование", можно переопределить на уровне конкретного хоста (на МТ по другому именуются интерфейсы, например) , ловит fallback-traps по SNMP (т.е. всё, что не попало под другие шаблоны трапов).

Также умеет взводить триггеры на падение порта (отключен по умолчанию, я включаю его для отдельных портов на уровне хоста), наличие ошибок на порту (больше 10 за период опроса суммарно для TX и RX), и перегрузку по TX или RX более 80%.

 

 

SNMP Cisco CPU and Memory with Traps

Мониторит сабж, температуру, состав шасси, ловит циско-специфик трапы на события и взводит по ним триггеры. В общем, довесок к первому, специфичный для цисок.

 

П.С.: для трапов трансляцию oid в человеко-читаемые делал на уровне snmpd, т.е. zabbix-y отдаются уже оттранслированные трапы.

P.P.S. Обновил шаблоны до крайних версий.

 

Ещё есть полезный скриптик для пинания цисок на слив конфига на тфтп, используется как действие на триггер "изменение стартап-конфига".

/usr/bin/snmpset -v 2c -O qv -t 5 -c {$SNMP_WRITE} {HOST.CONN} .1.3.6.1.4.1.9.2.1.55.{$TFTP_IP} s {HOST.HOST}-`date '+%Y%m%d_%H%M%S'`.txt 2>&1

 

Зачем мониторить?

<name>Errors RX int $1</name>

От этого толку мало, если хотите мониторить ошибки на портах, мониторте канальный уровень и физический.

Share this post


Link to post
Share on other sites

Зачем мониторить?

<name>Errors RX int $1</name>

От этого толку мало, если хотите мониторить ошибки на портах, мониторте канальный уровень и физический.

Ну собственно в этом триггере мониторится значение IF-MIB::ifInErrors.{#SNMPINDEX}, емнип, это и есть канальный уровень (CRC фрейма).

Я только свёл два отдельных триггера из исходного шаблона в один, да графики поправил, что бы эти данные вместе с трафиком отображались.

Share this post


Link to post
Share on other sites

Разобрался, как выполнять скрипты на proxy (полезно, если с самого заббикс-сервера не во все сети есть доступ, можно попинговать, или дёрнуть конфиг). Можно это делать через zabbix_get, надо только поставить на прокси ещё и заббикс-агент, и разрешить в нём remote commands.

 

пример:

Ping (proxy) Скрипт Сервер /usr/bin/zabbix_get -s{$PROXY_IP} -p10050 -k"system.run[/bin/ping -c 3 {HOST.CONN} 2>&1]"

 

П.С.: {$PROXY_IP} и другие переменные задаются через Администрирование -> Общие -> Макросы.

Утилиты zabbix_get в пакете заббикс-сервера для бубунты не было, взял бинарник из пакета прокси.

Хм. А можно пояснть? Стандартный механизм через external_scripts на заббикс-прокси почему вам не понравился?

Share this post


Link to post
Share on other sites

Хм. А можно пояснть? Стандартный механизм через external_scripts на заббикс-прокси почему вам не понравился?

Разве external_scripts можно использовать в действиях, в ответ на срабатывание триггера, к примеру? У меня сложилось такое впечатление (возможно, что неверное) , что внешние скрипты - для проверок состояния чего-либо, т.е. наполнения элементов данных.

 

Я говорил о глобальных скриптах, в 2.2.4 их , судя по всему, можно выполнять либо на сервере, либо на заббикс-агенте. Варианта с прокси я не нашёл.

Share this post


Link to post
Share on other sites

Хм. А можно пояснть? Стандартный механизм через external_scripts на заббикс-прокси почему вам не понравился?

Разве external_scripts можно использовать в действиях, в ответ на срабатывание триггера, к примеру? У меня сложилось такое впечатление (возможно, что неверное) , что внешние скрипты - для проверок состояния чего-либо, т.е. наполнения элементов данных.

 

Я говорил о глобальных скриптах, в 2.2.4 их , судя по всему, можно выполнять либо на сервере, либо на заббикс-агенте. Варианта с прокси я не нашёл.

Что значит глобальные?

Я так понял, это actions script. Пожалуй, да, прокси это не умеет. Но тут совсем просто, ssh без пароля на удаленный хост вполне решает задачу.

Хотя, ваш механизм тоже интересен :).

Но вы использовали пинг в примере, а как action пинг использовать по меньшей мере странно. Пинг как раз как опросник идет.

Snmpset или еще что-то было бы рационально...

Share this post


Link to post
Share on other sites

Зачем мониторить?

<name>Errors RX int $1</name>

От этого толку мало, если хотите мониторить ошибки на портах, мониторте канальный уровень и физический.

Ну собственно в этом триггере мониторится значение IF-MIB::ifInErrors.{#SNMPINDEX}, емнип, это и есть канальный уровень (CRC фрейма).

Я только свёл два отдельных триггера из исходного шаблона в один, да графики поправил, что бы эти данные вместе с трафиком отображались.

Я бы вам все таки посоветовал мониторить:

dot3StatsAlignmentErrors

dot3StatsCarrierSenseErrors

dot3StatsExcessiveCollisions

dot3StatsFCSErrors

Каждый тип ошибок влечет за собой свои конкретные косяки и при появлении определенного типа ошибок, уже за ранее можно определить в чем проблема.

Share this post


Link to post
Share on other sites

Что значит глобальные?

Я так понял, это actions script. Пожалуй, да, прокси это не умеет. Но тут совсем просто, ssh без пароля на удаленный хост вполне решает задачу.

Хотя, ваш механизм тоже интересен :).

Но вы использовали пинг в примере, а как action пинг использовать по меньшей мере странно. Пинг как раз как опросник идет.

Snmpset или еще что-то было бы рационально...

Пинг просто для примера, а реально это мне было нужно для дёрганья конфига с цисок, если он поменялся.

Пример:

Cisco config backup (proxy)

/usr/bin/zabbix_get -s{$PROXY_IP} -p10050 -k"system.run[/usr/bin/snmpset -v 2c -O qv -t 5 -c {$SNMP_WRITE} {HOST.CONN} .1.3.6.1.4.1.9.2.1.55.{$TFTP_IP} s {HOST.HOST}-`date '+%Y%m%d_%H%M%S'`.txt 2>&1]"

 

Cisco config backup (server)

/usr/bin/snmpset -v 2c -O qv -t 5 -c {$SNMP_WRITE} {HOST.CONN} .1.3.6.1.4.1.9.2.1.55.{$TFTP_IP} s {HOST.HOST}-`date '+%Y%m%d_%H%M%S'`.txt 2>&1

Share this post


Link to post
Share on other sites

Я бы вам все таки посоветовал мониторить:

dot3StatsAlignmentErrors

dot3StatsCarrierSenseErrors

dot3StatsExcessiveCollisions

dot3StatsFCSErrors

Каждый тип ошибок влечет за собой свои конкретные косяки и при появлении определенного типа ошибок, уже за ранее можно определить в чем проблема.

Возможно, вы правы, но пока хватает. Сравнил на одной железке (свич доступа в офисе), через EtherLike-MIB можно получить заметно больше данных.

 

snmpwalk -v 2c -c public -On 10.78.15.5 1.3.6.1.2.1.10.7.2.1 | grep Counter32 | grep -v 'Counter32: 0'

.1.3.6.1.2.1.10.7.2.1.4.10002 = Counter32: 791 dot3StatsSingleCollisionFrames

.1.3.6.1.2.1.10.7.2.1.4.10007 = Counter32: 75

.1.3.6.1.2.1.10.7.2.1.5.10002 = Counter32: 707 dot3StatsMultipleCollisionFrames

.1.3.6.1.2.1.10.7.2.1.5.10007 = Counter32: 40

.1.3.6.1.2.1.10.7.2.1.8.10007 = Counter32: 6267 dot3StatsLateCollisions

.1.3.6.1.2.1.10.7.2.1.18.10033 = Counter32: 1 dot3StatsSymbolErrors

.1.3.6.1.2.1.10.7.2.1.18.10034 = Counter32: 1

.1.3.6.1.2.1.10.7.2.1.18.10041 = Counter32: 1

.1.3.6.1.2.1.10.7.2.1.18.10043 = Counter32: 1

 

 

rmavrichev@spb-nms-1:~$ snmpwalk -v 2c -c public -On 10.78.15.5 IF-MIB::ifInErrors | grep Counter32 | grep -v 'Counter32: 0'

.1.3.6.1.2.1.2.2.1.14.10033 = Counter32: 1

.1.3.6.1.2.1.2.2.1.14.10034 = Counter32: 1

.1.3.6.1.2.1.2.2.1.14.10041 = Counter32: 14 - 13 из них runts, отдельного счётчика в EtherLike-MIB не нашёл.

.1.3.6.1.2.1.2.2.1.14.10043 = Counter32: 1

Хотя из того, что удалось сопоставить с IF-MIB::ifInErrors - только dot3StatsSymbolErrors.

 

For an interface operating at 100 Mb/s, the

number of times there was an invalid data symbol

when a valid carrier was present.

 

 

В общем, желающие детализации - могут добавить самостоятельно :)

Share this post


Link to post
Share on other sites

Что-то я давненько не следил за темой: они там у себя LLD-то как таковой пофиксили?

тыц

Да вроде всё норм работает. Запилил на днях бэкап конфигов с Хуавея на тфпт, по триггеру на сохранения конфига, и остальные шаблоны причесал (инвентори добавил, мониторинг вентиляторов и температуры и ещё всяких полезностей). В первый пост сейчас добавлю.

Share this post


Link to post
Share on other sites

Добрый день!

Попробовал эти шаблон Basic_Snmp_Network_Device

Подскажите пож-та

Требует регулярные выражения на @SerialNumbers @Int_Discovery

Гле их взять?

Share this post


Link to post
Share on other sites

ТС писал

discovery интерфейсов ограничен рег.выражением ^(.*Ethernet.*|Vlan.*|Tunnel.*|Port-channel.*)$[TRUE] (надо задать через меню "Администрирование", можно переопределить на уровне конкретного хоста (на Микротике по другому именуются интерфейсы, например)

От себя добавлю полный путь: Administration -> General -> Regular expressions.

 

Stak, спасибо за шаблоны!

Share this post


Link to post
Share on other sites

ТС писал

discovery интерфейсов ограничен рег.выражением ^(.*Ethernet.*|Vlan.*|Tunnel.*|Port-channel.*)$[TRUE] (надо задать через меню "Администрирование", можно переопределить на уровне конкретного хоста (на Микротике по другому именуются интерфейсы, например)

От себя добавлю полный путь: Administration -> General -> Regular expressions.

 

Stak, спасибо за шаблоны!

Спасибо!

А на @SerialNumbers, что за выражение?

Share this post


Link to post
Share on other sites

В Description Discovery rule Inventory видим следующее

SerialNumbers - it's a regular expression, defined as:

^([0-9a-zA-Z]+)$[TRUE]

Share this post


Link to post
Share on other sites

Обновил шаблоны, добавил чуть-чуть мелких оптимизаций.

Прикрепленные файлы

 

Прикрепленный файл zbx_export_templates.xml (115,13К)

Количество загрузок:: 18

На аггрегированых портах (проверял на cisco etherchannel) показывает неверную скорость. В консоли: 30 second input rate XXXXXXXXX bits/sec, по факту на графиках XXXXXXXXX*кол-во мемберов etherchannela.

 

Как бы исправить?

Edited by alex-rj45

Share this post


Link to post
Share on other sites

Коллеги, а ни ку у кого нет шаблона для cisco ip sla udp-jitter ? Я думал, легко найду - а нет, под какти есть - под заббикс не нашел.

Share this post


Link to post
Share on other sites

импортирую в Zabbix 3.0: Не удалось найти преобразование значений "ciscoEnvMonState" используемое в прототипу элементов данных "State of "$1"" в правиле обнаружения "Fan Sensors detect" на "Cisco SNMP with traps".

 

Каким оно должно быть?

Share this post


Link to post
Share on other sites

1 - normal
2 - warning
3 - critical
4 - shutdown
5 - notPresent
6 - notFunctioning

Миграция прошла без проблем? Тоже присматриваюсь к 3 версии.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.