SlideShare a Scribd company logo
1 of 65
Download to read offline
Хитрости и трюки Zabbix
Хитрости и трюки Zabbix
1. {$USER_MACROS}
Что такое {$USER_MACROS}?
Макрос — это символьное имя в шаблонах, заменяемое при
обработке препроцессором на последовательность символов
Это – переменные, которые способны хранить различную
информацию
• пороги срабатывания для триггеров
• различные фильтры
• учетные данные
• …..
Макросы определяются на нескольких уровнях, более локальный
перекрывает предыдущий
ГЛОБАЛЬНЫЙ МАКРОС
{$PROC_NUM} = 200
МАКРОС УРОВНЯ
ШАБЛОНА
{$PROC_NUM} = 300
МАКРОС УРОВНЯ УЗЛА
СЕТИ
{$PROC_NUM} = 500
Фиксированные пороговые значения в
шаблонах
{Template OS: system.cpu.load[percpu,avg1].avg(5m)}>5
{Template OS: vm.memory.size[available].last(0)}<20M
{Template OS: proc.num[].avg(5m)}>300
Разные серверы могут иметь разные пороговые значения для таких
элементов, как загрузка процессора, объем свободной памяти,
количество процессов и т.д.
Динамические пороги в шаблонах
Используйте {$USER_MACROS} в качестве порогового
значения для таких элементов данных как загрузка CPU,
размер свободной памяти, количества процессов и т.д.
{Template OS: system.cpu.load[percpu,avg1].avg(5m)}>{$CPU_LOAD}
{Template OS: vm.memory.size[available].last(0)}<{$MEMORY_FREE}
{Template OS: proc.num[].avg(5m)}>{$PROC_NUM}
{$PROC_NUM} = 300
{$PROC_NUM} = 300
Обычный узел сети
Сильно нагруженный узел сети
Менее загруженный узел сети
МАКРОС УРОВНЯ ШАБЛОНА
{$PROC_NUM} = 300
{$PROC_NUM} = 500
{$PROC_NUM} = 300
{$PROC_NUM} = 200
МАКРОС УРОВНЯ УЗЛА СЕТИ
Динамические пороги в шаблонах
Фиксированные номера портов в
шаблонах
Одинаковые сервисы могут использовать
различные номера портов tcp
{Template OS: net.tcp.service[ssh,22]
{Template OS: net.tcp.service[http,80]
{Template OS: net.tcp.service[https,443]
Динамические номера портов в шаблонах
Используйте {$USER_MACROS} как номер порта для tcp/udp соединений ssh,
http, https и других служб
{Template OS: net.tcp.service[ssh,{$SSH_PORT}]
{Template OS: net.tcp.service[http,{$HTTP_PORT}]
{Template OS: net.tcp.service[https,{$HTTPS_PORT}]
{$HTTP_PORT} = 80
{$HTTP_PORT} = 80
Обычный узел сети
Нестандартный узел сети 1
Нестандартный узел сети 2
{$HTTP_PORT} = 80
{$HTTP_PORT} = 8080
{$HTTP_PORT} = 80
{$HTTP_PORT} = 8000
МАКРОС УРОВНЯ ШАБЛОНА МАКРОС УРОВНЯ УЗЛА СЕТИ
Динамические номера портов в шаблонах
Фиксированные пороги для элементов данных LLD
(Правил Низкоуровневого Обнаружения)
Разные точки монтирования имеют различный размер, и следовательно
пороговые значения для предупреждения о их заполненности отличаются
• /boot малый размер 100M
• / средний размер 10G
• /data большой размер 1TB
Используйте контекст для макросов в пороговых
значениях для элементов данных LLD
Разные точки монтирования имеют различный размер, поэтому используйте
контекст макросов в выражениях триггеров
• /boot малый размер {$LOW_SPACE:”/boot”}
• / средний размер {$LOW_SPACE:”/”}
• /data большой размер {$LOW_SPACE:”/data”}
{host:vfs.fs.size[{#FSNAME},free].last()} < {$LOW_SPACE:"{#FSNAME}"}
Может также использоваться для имен дисков Windows
Как работает контекст пользовательских
макросов
{$LOW_SPACE} = 1G
{$LOW_SPACE: " /boot "} =
10M
{$LOW_SPACE: " / "} = 500M
{$LOW_SPACE: " /var "} = 5G
{$LOW_SPACE} = 1G
{$LOW_SPACE: " /boot "} =
10M
{$LOW_SPACE: " / "} = 500M
{$LOW_SPACE:”/var”} = 5G
{$LOW_SPACE: " /data "} =
50G
{$LOW_SPACE: " /var "} = 10G
МАКРОС УРОВНЯ ШАБЛОНА МАКРОС УРОВНЯ УЗЛА СЕТИ
Разный набор служб на разных серверах
Разные серверы имеют разные сервисы, которые необходимо отслеживать
• Сервер 1 DHCP client, Windows defender
• Сервер 2 DHCP client, Windows defender, MS Exchange
• Сервер 3 DHCP client, RDP Service, RPC
Использовать только @Global regular expressions неудобно и сложно,
ведь возможных комбинаций очень много
{$SERVICES} = none
{$SERVICES} = none
Обычный узел сети
Узел сети со службами exchange
Узел сети со службами Tomcat и WSUS
{$SERVICES} = none
{$SERVICES}= (exchange)
{$SERVICES} =none
{$SERVICES}=
(Tomcat|WSUS)
@SERVICES = (DNS Client|DHCP
Client)
ГЛОБАЛЬНОЕ
РЕГУЛЯРНОЕ
ВЫРАЖЕНИЕ
OR
OR
OR
@SERVICE
S
@SERVICE
S
@SERVICE
S
МАКРОС УРОВНЯ ШАБЛОНА
МАКРОС УРОВНЯ УЗЛА
СЕТИ
Используйте комбинацию {$USER_MACROS} и
@global regular expressions
Пример фильтрации служб
МАКРОС УРОВНЯ УЗЛА СЕТИ ГЛОБАЛЬНОЕ РЕГУЛЯРНОЕ ВЫРАЖЕНИЕ
Разные клиенты используют разные
учетные данные
• Разные клиенты используют разные учетные данные
• для пароля SNMPv2
• для SNMPv3 логина и пароля
• для учетных данных SSH
• для учетных данных веб-сайта
Теоретически, вы можете просто клонировать шаблон для каждого клиента, но
потом вам придется управлять этим множеством шаблонов
{$SNMP_COMMUNITY} =
public
{$SNMP_COMMUNITY} =
public
{$SNMP_COMMUNITY} =
secret1
Узел сети клиента 1
Шаблон Клиент 1
{$SNMP_COMMUNITY} =
secret2
Шаблон Клиент 2
Шаблон SNMP
Узел сети клиента 2
ШАБЛОНЫ
{$SNMP_COMMUNITY} =
secret2
{$SNMP_COMMUNITY} =
secret1
{$SNMP_COMMUNITY} =
public
Разные клиенты используют разные
учетные данные
Хитрости и трюки Zabbix
2. Предобработка
Когда выполняется предварительная
обработка?
Сбор данных
База данных Zabbix
Предварительная
обработка
Нужно делить или умножать значения
• Конвертация Байтов в Биты
• Конвертация Битов в Байты
• Конвертация миллисекунд в секунды
• ….
Вы можете задать единицы измерения для удобного отображения информации, но что если
вы хотите хранить преобразованные данные?
Используйте шаг предварительной обработки –
пользовательский множитель
Конвертируйте байты в биты используя множитель 8
Конвертируйте биты в байты используя множитель 0.125
В последних версиях Zabbix для этого используется новая вкладка
«Предобработка»
Вам нужно извлечь числовые данные из
отчёта
• Память в Linux
• Отчет о свободном пространстве Linux
• Любой отчет, содержащий числовые данные
Извлекаем число из текста
Извлекайте данные при помощи шаблонов PCRE REGEX
Полученные данные могут быть обработаны на следующих шагах
Необходимо преобразовать двоичные текстовые
данные в десятичные
• systemctl возвращает состояние служб как enabled или disabled
• Мы хотим хранить состояние в виде 1 или 0 для простых триггерных функций
или для визуализации в графиках
Используйте регулярные выражения
systemctl list-unit-files | grep postfix
База данных Zabbix
Совпадение по шаблону regex
postfix.service
Преобразование логического
значения в десятичное
enabled disabled
true false
y n
yes no
On off
up down
1 01 0
Преобразование логического значения в
десятичное
Хитрости и трюки Zabbix
3. Зависимые элементы
данных
Требуется извлечь всю числовую информацию
из текста
• Использование памяти в Linux, отчет о свободном пространстве или любой
другой отчет, который содержит числовые данные
• Используя обычные элементы данных нам потребуется 9(!) проверок чтобы
собрать всю информацию
• Это дополнительный сетевой трафик и использование процессора на узле
сети.
Используйте зависимые элементы данных
system.run[free]
База данных Zabbix
used free shared buffertotal available
Основной элемент
данных собирающий
текстовый тип
информации
Зависимые элементы
данных с числовым
типом информации
Исходные данные
Соберите все информацию с помощью обычного текстового элемента данных:
Используйте зависимые элементы данных
Создайте зависимые элементы данных для каждого значения используя
предварительную обработку регулярными выражениями:
Настройка зависимых элементов данных
Мониторинг репликации MySQL базы данных
Использование ODBC элементов данных означает сбор данных в несколько
подходов, а это значит дополнительный трафик, использование CPU и
несколько подключений к базе данных.
MariaDB [(none)]> show slave status G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master2-bin.000001
Read_Master_Log_Pos: 926945751
Relay_Log_File: master1-relay-bin.000002
Relay_Log_Pos: 207526
Relay_Master_Log_File: master2-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0
Используйте запросы SQL и зависимые
элементы данных
MySQL: show slave status;
возвращено несколько метрик
SLAVE STATUS
Relay log pos
Seconds behind
master
Relay log file
База данных Zabbix
Настройка зависимых элементов данных
Необходимо собрать погодные данные для
вашего местоположения
• Хотите получить данные о температуре, влажности, скорости ветра
• Можно использовать собственный curl скрипт, но в итоге его логика может
заметно усложниться
Используйте OpenWeatherMap API и
предобработку JSON
Запрос get с параметрами
Ответ в виде JSON от API
HTTP Agent
JSON Data
Предобработка
Путь JSON
Температура
Влажность
Скорость ветра
Зависимые элементы
данных
База данных
Zabbix
OpenWeatherMap
Используйте HTTP agent с
{$USER_MACROS}
Ответом вы получите JSON объект
$.main.humidity
$.main.temp
$.wind.speed
Используйте предобработку для JSON
Предобработка
JSON Path
Зависимые
элементы данных
Хитрости и трюки Zabbix
4. Низкоуровневое
обнаружение
Необходимо настроить обнаружение
пользовательских SNMP метрик
• Многообразие моделей принтеров
• Хотите узнать все параметры принтера
• Расходники
• Лотки для бумаги
• Количество отпечатанных страниц
• Уровень чернил
Используйте обнаружение SNMP
правилах LLD
Описание
.1.3.6.1.2.1.43.11.1.1.6.{#SNMPINDEX}
Объем картриджа .1.3.6.1.2.1.43.8.2.1.8
Описание картриджа .1.3.6.1.2.1.43.11.1.1.6
Объем картриджа
.1.3.6.1.2.1.43.11.1.1.8.{#SNMPINDEX}
Уровень картриджа
.1.3.6.1.2.1.43.11.1.1.9.{#SNMPINDEX}
Уровень картриджа .1.3.6.1.2.1.43.8.2.1.9
Картриджи
discovery[{#SNMPVALUE},.1.3.6.1.2.1.43.11.1.1
.6]
ПРОТОТИП ЭЛЕМЕНТА ДАННЫХПРАВИЛО ОБНАРУЖЕНИЯ
Правило LLD и прототипы элементов
данных
Проверка доступности удаленного порта на других узлах сети
Server 1 Port 1111
Server 2 Port 2222
Server 3 Port 3333
Server 4 Port 4444
Server 5 Port 5555
• Используется ключ net.tcp.port
• Множество серверов и портов
• Каждый агент имеет свой список
серверов для проверки
Используйте собственный скрипт для LLD
• Простой bash скрипт будет работать из коробки на большинстве платформ
• Использует {$USER_MACRO} во входных данных, возвращает JSON объект
Создание правила низкоуровневого
обнаружения
Все данные точек доступа собираются на контроллере
Точка доступа 1
Точка доступа 2
Точка доступа 3
Точка доступа 4
• WLAN контроллер возвращает все SNMP данные по каждой точке доступа
• Точки доступа используются разными клиентами
Создайте правило обнаружения и прототипы узлов сети для сбора
метрик по точкам доступа
Для каждого узла сети присоедините шаблон
Данные все еще собираются из WLC и
фильтруются по актуальной точке
Используйте фильтры LLD чтобы отфильтровать данные только по конкретной точке доступа
Результат – узлы сети, автоматически
созданные для каждой точки доступа
Преимущества использования
прототипов узла сети
• Управляются Zabbix внутренним механизмом LLD
• Добавляются по необходимости
• Автоматически удаляются или изменяются
• Шаблоны и группы назначаются автоматически
• Группы узлов сети могут генерироваться динамически из макросов LLD
• Можно ограничить доступ только к части данных с использованием групп узлов и
групп пользователей.
Работа объемных LLD правил
в нестабильных средах
• Мы хотим обнаруживать и мониторить лог файлы
• Набор логов изменяется каждые сутки, но момент времени изменения
нам не известен
• Список логов большой и обработка полученного JSON накладна по
ресурсам – мы не можем запускать правило часто
Можно написать скрипт, определяющий изменения конфигурации и если
таковые есть он отправит готовый JSON при помощи zabbix_sender.
Запускать скрипт по расписанию.
Но что, если у нас нет возможности использовать локальный планировщик?
Троттлинг
Мы будем обрабатывать значение только в случае его изменения
Основные элементы данных
Это уменьшит объем входных
данных, если они в основном
статичны
Элемент данных правила LLD
Это позволит уменьшить
интервал опроса для LLD правила
и позволит быстрее реагировать
на изменения в конфигурации не
нагружая при этом сервер
Троттлинг в LLD
JSON в LLD правилах
• RAID контроллер возвращает данные обо всех массивах и дисках
• На разных контроллерах используется разное количество дисков
• Мы хотим отслеживать состояние и производительность всех дисков
Пример возвращаемых контроллером
данных
JSON для правила LLD
{#DRIVE} -> $.Drive
{#SIZE} -> $.Size
Предобработка в LLD
«Последние данные»
Мы получили работающее правило без скриптов
Предобработка в правилах LLD
• Используйте Путь Json или регулярное выражение чтобы без пользовательских скриптов привести
правило к JSON для LLD. LLD макросы завершат эту задачу
• Если нужна логика сложнее, например условные проверки или циклы – вы можете написать
JavaScript для предобработки правила
• Проверьте на ошибки – совпадает ли с шаблоном регулярного выражения и нет ли ошибок в JSON
объекте
• Троттлинг
Хитрости и трюки Zabbix
5. Глобальная
корреляция событий
Подавление оповещений
• Конечные устройства подключены через разные коммутаторы
• Можно использовать Зависимость триггеров, но это может оказаться что
устройств за каждым коммутатором множество
• Если устройство будет перемещено за другой коммутатор, придется
изменить и связи триггеров
Используйте глобальную корреляцию
событий на основе тегов
Макрос {$SWITCH.IP} генерируется API скриптом на основе ARP таблиц,
которые собираются Zabbix с коммутатора
Тэг SWITCH_IP= {HOST.IP}
Тэг DEVICE_TYPE = SWITCH
Тэг SWITCH_IP = {$SWITCH.IP}
Тэг DEVICE_TYPE = END_DEVICE
Тэг SWITCH_IP = {$SWITCH.IP}
Тэг DEVICE_TYPE = END_DEVICE
Тэг SWITCH_IP = {$SWITCH.IP}
Тэг DEVICE_TYPE = END_DEVICE
Тэг SWITCH_IP = {$SWITCH.IP}
Тэг DEVICE_TYPE = END_DEVICE
Зависимость
триггеров
Корреляция
событий
Тэг SWITCH_IP = {$SWITCH.IP}
Тэг DEVICE_TYPE = END_DEVICE
Тэг SWITCH_IP= {HOST.IP}
Тэг DEVICE_TYPE = SWITCH
Создайте правило глобальной
корреляции событий
Cпасибо!

More Related Content

What's hot

Sef Ikhelis
Sef IkhelisSef Ikhelis
Sef Ikhelissef2009
 
02 Citrus Systems S Pb
02 Citrus Systems S Pb02 Citrus Systems S Pb
02 Citrus Systems S PbLiudmila Li
 
Competitions Cloudwatcher_new
Competitions Cloudwatcher_newCompetitions Cloudwatcher_new
Competitions Cloudwatcher_newguest18d24c
 
бешков Lm Csv Rootconf
бешков Lm Csv Rootconfбешков Lm Csv Rootconf
бешков Lm Csv RootconfLiudmila Li
 
Оптимизация сайта на Wordpress: темы, плагины, лайфхаки
Оптимизация сайта на Wordpress: темы, плагины, лайфхакиОптимизация сайта на Wordpress: темы, плагины, лайфхаки
Оптимизация сайта на Wordpress: темы, плагины, лайфхакиcollaborator.pro
 
ObjectXPathNavigator - как и зачем?
ObjectXPathNavigator - как и зачем?ObjectXPathNavigator - как и зачем?
ObjectXPathNavigator - как и зачем?Andrew Mayorov
 
ObjectXPathNavigator - Как и зачем?
ObjectXPathNavigator - Как и зачем?ObjectXPathNavigator - Как и зачем?
ObjectXPathNavigator - Как и зачем?SQALab
 
Sergey Ch Hp Citrix Keynote 2009
Sergey Ch Hp Citrix Keynote 2009Sergey Ch Hp Citrix Keynote 2009
Sergey Ch Hp Citrix Keynote 2009Liudmila Li
 
2008-04-15-scrum-from-custis-show
2008-04-15-scrum-from-custis-show2008-04-15-scrum-from-custis-show
2008-04-15-scrum-from-custis-showStas Fomin
 
Установки по приготовлению антисептиков и других дезинфекторов
Установки по приготовлению антисептиков и других дезинфекторовУстановки по приготовлению антисептиков и других дезинфекторов
Установки по приготовлению антисептиков и других дезинфекторовGlobeCore
 
Sergey Kh Citrix Systems 4 Smb
Sergey Kh Citrix Systems 4 SmbSergey Kh Citrix Systems 4 Smb
Sergey Kh Citrix Systems 4 SmbLiudmila Li
 
Wyse Präsentation C Itrix S E Russian
Wyse  Präsentation  C Itrix  S E  RussianWyse  Präsentation  C Itrix  S E  Russian
Wyse Präsentation C Itrix S E RussianLiudmila Li
 
Восхождение разума
Восхождение разумаВосхождение разума
Восхождение разумаDanila Medvedev
 
Profit Backlog | В погоне за эффективным бэклогом
Profit Backlog | В погоне за эффективным бэклогомProfit Backlog | В погоне за эффективным бэклогом
Profit Backlog | В погоне за эффективным бэклогомNikita Filippov
 
Асхат Уразбаев
Асхат УразбаевАсхат Уразбаев
Асхат УразбаевSQALab
 
HighLoad Sites, Oleg Bunin
HighLoad Sites, Oleg BuninHighLoad Sites, Oleg Bunin
HighLoad Sites, Oleg BuninOntico
 

What's hot (19)

Sef Ikhelis
Sef IkhelisSef Ikhelis
Sef Ikhelis
 
02 Citrus Systems S Pb
02 Citrus Systems S Pb02 Citrus Systems S Pb
02 Citrus Systems S Pb
 
Competitions Cloudwatcher_new
Competitions Cloudwatcher_newCompetitions Cloudwatcher_new
Competitions Cloudwatcher_new
 
бешков Lm Csv Rootconf
бешков Lm Csv Rootconfбешков Lm Csv Rootconf
бешков Lm Csv Rootconf
 
Оптимизация сайта на Wordpress: темы, плагины, лайфхаки
Оптимизация сайта на Wordpress: темы, плагины, лайфхакиОптимизация сайта на Wordpress: темы, плагины, лайфхаки
Оптимизация сайта на Wordpress: темы, плагины, лайфхаки
 
07 Ws08 R2 Virt
07 Ws08 R2 Virt07 Ws08 R2 Virt
07 Ws08 R2 Virt
 
ObjectXPathNavigator - как и зачем?
ObjectXPathNavigator - как и зачем?ObjectXPathNavigator - как и зачем?
ObjectXPathNavigator - как и зачем?
 
ObjectXPathNavigator - Как и зачем?
ObjectXPathNavigator - Как и зачем?ObjectXPathNavigator - Как и зачем?
ObjectXPathNavigator - Как и зачем?
 
Sergey Ch Hp Citrix Keynote 2009
Sergey Ch Hp Citrix Keynote 2009Sergey Ch Hp Citrix Keynote 2009
Sergey Ch Hp Citrix Keynote 2009
 
2008-04-15-scrum-from-custis-show
2008-04-15-scrum-from-custis-show2008-04-15-scrum-from-custis-show
2008-04-15-scrum-from-custis-show
 
Установки по приготовлению антисептиков и других дезинфекторов
Установки по приготовлению антисептиков и других дезинфекторовУстановки по приготовлению антисептиков и других дезинфекторов
Установки по приготовлению антисептиков и других дезинфекторов
 
Mixing Agile Rup
Mixing Agile RupMixing Agile Rup
Mixing Agile Rup
 
Sergey Kh Citrix Systems 4 Smb
Sergey Kh Citrix Systems 4 SmbSergey Kh Citrix Systems 4 Smb
Sergey Kh Citrix Systems 4 Smb
 
Wyse Präsentation C Itrix S E Russian
Wyse  Präsentation  C Itrix  S E  RussianWyse  Präsentation  C Itrix  S E  Russian
Wyse Präsentation C Itrix S E Russian
 
Problogging
ProbloggingProblogging
Problogging
 
Восхождение разума
Восхождение разумаВосхождение разума
Восхождение разума
 
Profit Backlog | В погоне за эффективным бэклогом
Profit Backlog | В погоне за эффективным бэклогомProfit Backlog | В погоне за эффективным бэклогом
Profit Backlog | В погоне за эффективным бэклогом
 
Асхат Уразбаев
Асхат УразбаевАсхат Уразбаев
Асхат Уразбаев
 
HighLoad Sites, Oleg Bunin
HighLoad Sites, Oleg BuninHighLoad Sites, Oleg Bunin
HighLoad Sites, Oleg Bunin
 

More from Michael Ganschuk

Aleksei petrov-vizualizacija-v-zabbix-final
Aleksei petrov-vizualizacija-v-zabbix-finalAleksei petrov-vizualizacija-v-zabbix-final
Aleksei petrov-vizualizacija-v-zabbix-finalMichael Ganschuk
 
Obnovlenie cucm do_versii_12.5
Obnovlenie cucm do_versii_12.5Obnovlenie cucm do_versii_12.5
Obnovlenie cucm do_versii_12.5Michael Ganschuk
 
Brkcol 2344 understanding-cisco_jabber_service_discovery__client_configuration
Brkcol 2344 understanding-cisco_jabber_service_discovery__client_configurationBrkcol 2344 understanding-cisco_jabber_service_discovery__client_configuration
Brkcol 2344 understanding-cisco_jabber_service_discovery__client_configurationMichael Ganschuk
 
Brkucc 2011 migrating-from_previous_versions_of_cisco_unified_communications_...
Brkucc 2011 migrating-from_previous_versions_of_cisco_unified_communications_...Brkucc 2011 migrating-from_previous_versions_of_cisco_unified_communications_...
Brkucc 2011 migrating-from_previous_versions_of_cisco_unified_communications_...Michael Ganschuk
 
Brkucc 3347 troubleshooting-jabber_like_a_tac_engineer
Brkucc 3347 troubleshooting-jabber_like_a_tac_engineerBrkucc 3347 troubleshooting-jabber_like_a_tac_engineer
Brkucc 3347 troubleshooting-jabber_like_a_tac_engineerMichael Ganschuk
 
Brkarc 2034 smart-licensing
Brkarc 2034 smart-licensingBrkarc 2034 smart-licensing
Brkarc 2034 smart-licensingMichael Ganschuk
 
Cisco collaboration. 8_oktiabria_biznes-trek_litsenzirovanie
Cisco collaboration. 8_oktiabria_biznes-trek_litsenzirovanieCisco collaboration. 8_oktiabria_biznes-trek_litsenzirovanie
Cisco collaboration. 8_oktiabria_biznes-trek_litsenzirovanieMichael Ganschuk
 
Migrating to cisco unified communications manager 9.1
Migrating to cisco unified communications manager 9.1Migrating to cisco unified communications manager 9.1
Migrating to cisco unified communications manager 9.1Michael Ganschuk
 
Клиентские приложенния унифицированных коммуникаций
Клиентские приложенния унифицированных коммуникацийКлиентские приложенния унифицированных коммуникаций
Клиентские приложенния унифицированных коммуникацийMichael Ganschuk
 
Миграция на современные версии CUCM.
Миграция на современные версии CUCM.Миграция на современные версии CUCM.
Миграция на современные версии CUCM.Michael Ganschuk
 
Cisco web ex_meeting_server
Cisco web ex_meeting_serverCisco web ex_meeting_server
Cisco web ex_meeting_serverMichael Ganschuk
 
Uc 9.1 licensing and license migration
Uc 9.1 licensing and license migrationUc 9.1 licensing and license migration
Uc 9.1 licensing and license migrationMichael Ganschuk
 
Cisco uccx скрытые возможности
Cisco uccx скрытые возможностиCisco uccx скрытые возможности
Cisco uccx скрытые возможностиMichael Ganschuk
 
Cisco-learning_club_28.06.2012_-_collaboration
Cisco-learning_club_28.06.2012_-_collaborationCisco-learning_club_28.06.2012_-_collaboration
Cisco-learning_club_28.06.2012_-_collaborationMichael Ganschuk
 

More from Michael Ganschuk (19)

Aleksei petrov-vizualizacija-v-zabbix-final
Aleksei petrov-vizualizacija-v-zabbix-finalAleksei petrov-vizualizacija-v-zabbix-final
Aleksei petrov-vizualizacija-v-zabbix-final
 
Obnovlenie cucm do_versii_12.5
Obnovlenie cucm do_versii_12.5Obnovlenie cucm do_versii_12.5
Obnovlenie cucm do_versii_12.5
 
Brkcol 2344 understanding-cisco_jabber_service_discovery__client_configuration
Brkcol 2344 understanding-cisco_jabber_service_discovery__client_configurationBrkcol 2344 understanding-cisco_jabber_service_discovery__client_configuration
Brkcol 2344 understanding-cisco_jabber_service_discovery__client_configuration
 
Brkucc 2011 migrating-from_previous_versions_of_cisco_unified_communications_...
Brkucc 2011 migrating-from_previous_versions_of_cisco_unified_communications_...Brkucc 2011 migrating-from_previous_versions_of_cisco_unified_communications_...
Brkucc 2011 migrating-from_previous_versions_of_cisco_unified_communications_...
 
Brkucc 3347 troubleshooting-jabber_like_a_tac_engineer
Brkucc 3347 troubleshooting-jabber_like_a_tac_engineerBrkucc 3347 troubleshooting-jabber_like_a_tac_engineer
Brkucc 3347 troubleshooting-jabber_like_a_tac_engineer
 
Brkarc 2034 smart-licensing
Brkarc 2034 smart-licensingBrkarc 2034 smart-licensing
Brkarc 2034 smart-licensing
 
Cisco collaboration. 8_oktiabria_biznes-trek_litsenzirovanie
Cisco collaboration. 8_oktiabria_biznes-trek_litsenzirovanieCisco collaboration. 8_oktiabria_biznes-trek_litsenzirovanie
Cisco collaboration. 8_oktiabria_biznes-trek_litsenzirovanie
 
Cucm 9.x licensing
Cucm 9.x licensingCucm 9.x licensing
Cucm 9.x licensing
 
Migrating to cisco unified communications manager 9.1
Migrating to cisco unified communications manager 9.1Migrating to cisco unified communications manager 9.1
Migrating to cisco unified communications manager 9.1
 
Cuc pcd tac_toi
Cuc pcd tac_toiCuc pcd tac_toi
Cuc pcd tac_toi
 
Клиентские приложенния унифицированных коммуникаций
Клиентские приложенния унифицированных коммуникацийКлиентские приложенния унифицированных коммуникаций
Клиентские приложенния унифицированных коммуникаций
 
Миграция на современные версии CUCM.
Миграция на современные версии CUCM.Миграция на современные версии CUCM.
Миграция на современные версии CUCM.
 
Cisco web ex_meeting_server
Cisco web ex_meeting_serverCisco web ex_meeting_server
Cisco web ex_meeting_server
 
Uc 9.1 licensing and license migration
Uc 9.1 licensing and license migrationUc 9.1 licensing and license migration
Uc 9.1 licensing and license migration
 
Cme srst cube
Cme srst cubeCme srst cube
Cme srst cube
 
Cisco uccx скрытые возможности
Cisco uccx скрытые возможностиCisco uccx скрытые возможности
Cisco uccx скрытые возможности
 
Be6 k product update piw
Be6 k product update   piwBe6 k product update   piw
Be6 k product update piw
 
Be6000
Be6000Be6000
Be6000
 
Cisco-learning_club_28.06.2012_-_collaboration
Cisco-learning_club_28.06.2012_-_collaborationCisco-learning_club_28.06.2012_-_collaboration
Cisco-learning_club_28.06.2012_-_collaboration
 

Elina kuzyutkina-hitrosti-i-tryuki-v-ispolzovanii-zabbix

  • 2. Хитрости и трюки Zabbix 1. {$USER_MACROS}
  • 3. Что такое {$USER_MACROS}? Макрос — это символьное имя в шаблонах, заменяемое при обработке препроцессором на последовательность символов Это – переменные, которые способны хранить различную информацию • пороги срабатывания для триггеров • различные фильтры • учетные данные • ….. Макросы определяются на нескольких уровнях, более локальный перекрывает предыдущий ГЛОБАЛЬНЫЙ МАКРОС {$PROC_NUM} = 200 МАКРОС УРОВНЯ ШАБЛОНА {$PROC_NUM} = 300 МАКРОС УРОВНЯ УЗЛА СЕТИ {$PROC_NUM} = 500
  • 4. Фиксированные пороговые значения в шаблонах {Template OS: system.cpu.load[percpu,avg1].avg(5m)}>5 {Template OS: vm.memory.size[available].last(0)}<20M {Template OS: proc.num[].avg(5m)}>300 Разные серверы могут иметь разные пороговые значения для таких элементов, как загрузка процессора, объем свободной памяти, количество процессов и т.д.
  • 5. Динамические пороги в шаблонах Используйте {$USER_MACROS} в качестве порогового значения для таких элементов данных как загрузка CPU, размер свободной памяти, количества процессов и т.д. {Template OS: system.cpu.load[percpu,avg1].avg(5m)}>{$CPU_LOAD} {Template OS: vm.memory.size[available].last(0)}<{$MEMORY_FREE} {Template OS: proc.num[].avg(5m)}>{$PROC_NUM}
  • 6. {$PROC_NUM} = 300 {$PROC_NUM} = 300 Обычный узел сети Сильно нагруженный узел сети Менее загруженный узел сети МАКРОС УРОВНЯ ШАБЛОНА {$PROC_NUM} = 300 {$PROC_NUM} = 500 {$PROC_NUM} = 300 {$PROC_NUM} = 200 МАКРОС УРОВНЯ УЗЛА СЕТИ Динамические пороги в шаблонах
  • 7. Фиксированные номера портов в шаблонах Одинаковые сервисы могут использовать различные номера портов tcp {Template OS: net.tcp.service[ssh,22] {Template OS: net.tcp.service[http,80] {Template OS: net.tcp.service[https,443]
  • 8. Динамические номера портов в шаблонах Используйте {$USER_MACROS} как номер порта для tcp/udp соединений ssh, http, https и других служб {Template OS: net.tcp.service[ssh,{$SSH_PORT}] {Template OS: net.tcp.service[http,{$HTTP_PORT}] {Template OS: net.tcp.service[https,{$HTTPS_PORT}]
  • 9. {$HTTP_PORT} = 80 {$HTTP_PORT} = 80 Обычный узел сети Нестандартный узел сети 1 Нестандартный узел сети 2 {$HTTP_PORT} = 80 {$HTTP_PORT} = 8080 {$HTTP_PORT} = 80 {$HTTP_PORT} = 8000 МАКРОС УРОВНЯ ШАБЛОНА МАКРОС УРОВНЯ УЗЛА СЕТИ Динамические номера портов в шаблонах
  • 10. Фиксированные пороги для элементов данных LLD (Правил Низкоуровневого Обнаружения) Разные точки монтирования имеют различный размер, и следовательно пороговые значения для предупреждения о их заполненности отличаются • /boot малый размер 100M • / средний размер 10G • /data большой размер 1TB
  • 11. Используйте контекст для макросов в пороговых значениях для элементов данных LLD Разные точки монтирования имеют различный размер, поэтому используйте контекст макросов в выражениях триггеров • /boot малый размер {$LOW_SPACE:”/boot”} • / средний размер {$LOW_SPACE:”/”} • /data большой размер {$LOW_SPACE:”/data”} {host:vfs.fs.size[{#FSNAME},free].last()} < {$LOW_SPACE:"{#FSNAME}"} Может также использоваться для имен дисков Windows
  • 12. Как работает контекст пользовательских макросов {$LOW_SPACE} = 1G {$LOW_SPACE: " /boot "} = 10M {$LOW_SPACE: " / "} = 500M {$LOW_SPACE: " /var "} = 5G {$LOW_SPACE} = 1G {$LOW_SPACE: " /boot "} = 10M {$LOW_SPACE: " / "} = 500M {$LOW_SPACE:”/var”} = 5G {$LOW_SPACE: " /data "} = 50G {$LOW_SPACE: " /var "} = 10G МАКРОС УРОВНЯ ШАБЛОНА МАКРОС УРОВНЯ УЗЛА СЕТИ
  • 13. Разный набор служб на разных серверах Разные серверы имеют разные сервисы, которые необходимо отслеживать • Сервер 1 DHCP client, Windows defender • Сервер 2 DHCP client, Windows defender, MS Exchange • Сервер 3 DHCP client, RDP Service, RPC Использовать только @Global regular expressions неудобно и сложно, ведь возможных комбинаций очень много
  • 14. {$SERVICES} = none {$SERVICES} = none Обычный узел сети Узел сети со службами exchange Узел сети со службами Tomcat и WSUS {$SERVICES} = none {$SERVICES}= (exchange) {$SERVICES} =none {$SERVICES}= (Tomcat|WSUS) @SERVICES = (DNS Client|DHCP Client) ГЛОБАЛЬНОЕ РЕГУЛЯРНОЕ ВЫРАЖЕНИЕ OR OR OR @SERVICE S @SERVICE S @SERVICE S МАКРОС УРОВНЯ ШАБЛОНА МАКРОС УРОВНЯ УЗЛА СЕТИ Используйте комбинацию {$USER_MACROS} и @global regular expressions
  • 15. Пример фильтрации служб МАКРОС УРОВНЯ УЗЛА СЕТИ ГЛОБАЛЬНОЕ РЕГУЛЯРНОЕ ВЫРАЖЕНИЕ
  • 16. Разные клиенты используют разные учетные данные • Разные клиенты используют разные учетные данные • для пароля SNMPv2 • для SNMPv3 логина и пароля • для учетных данных SSH • для учетных данных веб-сайта Теоретически, вы можете просто клонировать шаблон для каждого клиента, но потом вам придется управлять этим множеством шаблонов
  • 17. {$SNMP_COMMUNITY} = public {$SNMP_COMMUNITY} = public {$SNMP_COMMUNITY} = secret1 Узел сети клиента 1 Шаблон Клиент 1 {$SNMP_COMMUNITY} = secret2 Шаблон Клиент 2 Шаблон SNMP Узел сети клиента 2 ШАБЛОНЫ {$SNMP_COMMUNITY} = secret2 {$SNMP_COMMUNITY} = secret1 {$SNMP_COMMUNITY} = public Разные клиенты используют разные учетные данные
  • 18. Хитрости и трюки Zabbix 2. Предобработка
  • 19. Когда выполняется предварительная обработка? Сбор данных База данных Zabbix Предварительная обработка
  • 20. Нужно делить или умножать значения • Конвертация Байтов в Биты • Конвертация Битов в Байты • Конвертация миллисекунд в секунды • …. Вы можете задать единицы измерения для удобного отображения информации, но что если вы хотите хранить преобразованные данные?
  • 21. Используйте шаг предварительной обработки – пользовательский множитель Конвертируйте байты в биты используя множитель 8 Конвертируйте биты в байты используя множитель 0.125 В последних версиях Zabbix для этого используется новая вкладка «Предобработка»
  • 22. Вам нужно извлечь числовые данные из отчёта • Память в Linux • Отчет о свободном пространстве Linux • Любой отчет, содержащий числовые данные
  • 23. Извлекаем число из текста Извлекайте данные при помощи шаблонов PCRE REGEX Полученные данные могут быть обработаны на следующих шагах
  • 24. Необходимо преобразовать двоичные текстовые данные в десятичные • systemctl возвращает состояние служб как enabled или disabled • Мы хотим хранить состояние в виде 1 или 0 для простых триггерных функций или для визуализации в графиках
  • 25. Используйте регулярные выражения systemctl list-unit-files | grep postfix База данных Zabbix Совпадение по шаблону regex postfix.service Преобразование логического значения в десятичное enabled disabled true false y n yes no On off up down 1 01 0
  • 27. Хитрости и трюки Zabbix 3. Зависимые элементы данных
  • 28. Требуется извлечь всю числовую информацию из текста • Использование памяти в Linux, отчет о свободном пространстве или любой другой отчет, который содержит числовые данные • Используя обычные элементы данных нам потребуется 9(!) проверок чтобы собрать всю информацию • Это дополнительный сетевой трафик и использование процессора на узле сети.
  • 29. Используйте зависимые элементы данных system.run[free] База данных Zabbix used free shared buffertotal available Основной элемент данных собирающий текстовый тип информации Зависимые элементы данных с числовым типом информации Исходные данные
  • 30. Соберите все информацию с помощью обычного текстового элемента данных: Используйте зависимые элементы данных Создайте зависимые элементы данных для каждого значения используя предварительную обработку регулярными выражениями:
  • 32. Мониторинг репликации MySQL базы данных Использование ODBC элементов данных означает сбор данных в несколько подходов, а это значит дополнительный трафик, использование CPU и несколько подключений к базе данных. MariaDB [(none)]> show slave status G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Port: 3306 Connect_Retry: 60 Master_Log_File: master2-bin.000001 Read_Master_Log_Pos: 926945751 Relay_Log_File: master1-relay-bin.000002 Relay_Log_Pos: 207526 Relay_Master_Log_File: master2-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Seconds_Behind_Master: 0
  • 33. Используйте запросы SQL и зависимые элементы данных MySQL: show slave status; возвращено несколько метрик SLAVE STATUS Relay log pos Seconds behind master Relay log file База данных Zabbix
  • 35. Необходимо собрать погодные данные для вашего местоположения • Хотите получить данные о температуре, влажности, скорости ветра • Можно использовать собственный curl скрипт, но в итоге его логика может заметно усложниться
  • 36. Используйте OpenWeatherMap API и предобработку JSON Запрос get с параметрами Ответ в виде JSON от API HTTP Agent JSON Data Предобработка Путь JSON Температура Влажность Скорость ветра Зависимые элементы данных База данных Zabbix OpenWeatherMap
  • 38. Ответом вы получите JSON объект $.main.humidity $.main.temp $.wind.speed
  • 39. Используйте предобработку для JSON Предобработка JSON Path Зависимые элементы данных
  • 40. Хитрости и трюки Zabbix 4. Низкоуровневое обнаружение
  • 41. Необходимо настроить обнаружение пользовательских SNMP метрик • Многообразие моделей принтеров • Хотите узнать все параметры принтера • Расходники • Лотки для бумаги • Количество отпечатанных страниц • Уровень чернил
  • 42. Используйте обнаружение SNMP правилах LLD Описание .1.3.6.1.2.1.43.11.1.1.6.{#SNMPINDEX} Объем картриджа .1.3.6.1.2.1.43.8.2.1.8 Описание картриджа .1.3.6.1.2.1.43.11.1.1.6 Объем картриджа .1.3.6.1.2.1.43.11.1.1.8.{#SNMPINDEX} Уровень картриджа .1.3.6.1.2.1.43.11.1.1.9.{#SNMPINDEX} Уровень картриджа .1.3.6.1.2.1.43.8.2.1.9 Картриджи discovery[{#SNMPVALUE},.1.3.6.1.2.1.43.11.1.1 .6] ПРОТОТИП ЭЛЕМЕНТА ДАННЫХПРАВИЛО ОБНАРУЖЕНИЯ
  • 43. Правило LLD и прототипы элементов данных
  • 44. Проверка доступности удаленного порта на других узлах сети Server 1 Port 1111 Server 2 Port 2222 Server 3 Port 3333 Server 4 Port 4444 Server 5 Port 5555 • Используется ключ net.tcp.port • Множество серверов и портов • Каждый агент имеет свой список серверов для проверки
  • 45. Используйте собственный скрипт для LLD • Простой bash скрипт будет работать из коробки на большинстве платформ • Использует {$USER_MACRO} во входных данных, возвращает JSON объект
  • 47. Все данные точек доступа собираются на контроллере Точка доступа 1 Точка доступа 2 Точка доступа 3 Точка доступа 4 • WLAN контроллер возвращает все SNMP данные по каждой точке доступа • Точки доступа используются разными клиентами
  • 48. Создайте правило обнаружения и прототипы узлов сети для сбора метрик по точкам доступа
  • 49. Для каждого узла сети присоедините шаблон
  • 50. Данные все еще собираются из WLC и фильтруются по актуальной точке Используйте фильтры LLD чтобы отфильтровать данные только по конкретной точке доступа
  • 51. Результат – узлы сети, автоматически созданные для каждой точки доступа
  • 52. Преимущества использования прототипов узла сети • Управляются Zabbix внутренним механизмом LLD • Добавляются по необходимости • Автоматически удаляются или изменяются • Шаблоны и группы назначаются автоматически • Группы узлов сети могут генерироваться динамически из макросов LLD • Можно ограничить доступ только к части данных с использованием групп узлов и групп пользователей.
  • 53. Работа объемных LLD правил в нестабильных средах • Мы хотим обнаруживать и мониторить лог файлы • Набор логов изменяется каждые сутки, но момент времени изменения нам не известен • Список логов большой и обработка полученного JSON накладна по ресурсам – мы не можем запускать правило часто Можно написать скрипт, определяющий изменения конфигурации и если таковые есть он отправит готовый JSON при помощи zabbix_sender. Запускать скрипт по расписанию. Но что, если у нас нет возможности использовать локальный планировщик?
  • 54. Троттлинг Мы будем обрабатывать значение только в случае его изменения Основные элементы данных Это уменьшит объем входных данных, если они в основном статичны Элемент данных правила LLD Это позволит уменьшить интервал опроса для LLD правила и позволит быстрее реагировать на изменения в конфигурации не нагружая при этом сервер
  • 56. JSON в LLD правилах • RAID контроллер возвращает данные обо всех массивах и дисках • На разных контроллерах используется разное количество дисков • Мы хотим отслеживать состояние и производительность всех дисков
  • 57. Пример возвращаемых контроллером данных JSON для правила LLD {#DRIVE} -> $.Drive {#SIZE} -> $.Size
  • 59. «Последние данные» Мы получили работающее правило без скриптов
  • 60. Предобработка в правилах LLD • Используйте Путь Json или регулярное выражение чтобы без пользовательских скриптов привести правило к JSON для LLD. LLD макросы завершат эту задачу • Если нужна логика сложнее, например условные проверки или циклы – вы можете написать JavaScript для предобработки правила • Проверьте на ошибки – совпадает ли с шаблоном регулярного выражения и нет ли ошибок в JSON объекте • Троттлинг
  • 61. Хитрости и трюки Zabbix 5. Глобальная корреляция событий
  • 62. Подавление оповещений • Конечные устройства подключены через разные коммутаторы • Можно использовать Зависимость триггеров, но это может оказаться что устройств за каждым коммутатором множество • Если устройство будет перемещено за другой коммутатор, придется изменить и связи триггеров
  • 63. Используйте глобальную корреляцию событий на основе тегов Макрос {$SWITCH.IP} генерируется API скриптом на основе ARP таблиц, которые собираются Zabbix с коммутатора Тэг SWITCH_IP= {HOST.IP} Тэг DEVICE_TYPE = SWITCH Тэг SWITCH_IP = {$SWITCH.IP} Тэг DEVICE_TYPE = END_DEVICE Тэг SWITCH_IP = {$SWITCH.IP} Тэг DEVICE_TYPE = END_DEVICE Тэг SWITCH_IP = {$SWITCH.IP} Тэг DEVICE_TYPE = END_DEVICE Тэг SWITCH_IP = {$SWITCH.IP} Тэг DEVICE_TYPE = END_DEVICE Зависимость триггеров Корреляция событий Тэг SWITCH_IP = {$SWITCH.IP} Тэг DEVICE_TYPE = END_DEVICE Тэг SWITCH_IP= {HOST.IP} Тэг DEVICE_TYPE = SWITCH