====== Zabbix. Мониторинг IT инфраструктуры предприятия ======
===== Программа курса =====
===== Модуль 0. Подготовка стенда в классе =====
* Узнать свой номер стенда
* Удалить виртуалки
* Удалить профили putty
* Отключить не используемые адаптеры
* Записать логин пароль и IP (сообщить преподавателю) рабочей станции
* Проверить наличие дистрибутивов и образов
===== Модуль 1: Развертывание IT инфраструктуры предприятия =====
==== Теория ====
* [[http://ru.wikipedia.org/wiki/Управление_компьютерной_сетью|Управление компьютерной сетью]]
==== Лабораторные работы: Развертывание объектов мониторинга ====
Настраиваем необходимый для мониторинга минимум из курса [[Администрирование сервисов UNIX]] с использованием [[Настройка стендов слушателей#Скрипты автоконфигурации]]
* Для локальной сети использовать VirtualBox Host-Only Ethernet Adapte (понадобится в лабораторной работе про простые проверки)
* [[Настройка стендов слушателей#Настройка виртуальных систем Unix]] gate и server
* Создать в Putty профили
* [[Сервис DHCP]] (понадобится в лабораторной работе про LLD)
* [[Финальная настройка DNS сервера]] (понадобится в лабораторной работе про простые проверки)
* Настройка клиента DNS на gate и server
# cat /etc/resolv.conf
search corpX.un
nameserver 192.168.X.10
* Запуск системы client1
===== Модуль 2: Установка компонентов Zabbix =====
==== Теория ====
* [[https://ru.wikipedia.org/wiki/Zabbix|Zabbix - Википедия]]
* [[https://www.zabbix.com/life_cycle_and_release_policy|Zabbix Life Cycle & Release Policy]]
* [[https://www.zabbix.com/documentation/2.4/ru/manual/introduction/overview|Архитектура Zabbix]]
* [[https://www.zabbix.com/documentation/3.0/ru/manual/web_interface/frontend_sections|Zabbix Documentation Разделы веб-интерфейса]]
* [[https://www.zabbix.com/documentation/3.0/ru/manual/config/hosts|Zabbix Documentation Узлы сети и группы узлов сети]]
==== Лабораторные работы: Развертывание компонентов Zabbix ====
* [[Сервис Zabbix#Установка и запуск сервера]] на server
* [[Сервис Zabbix#Установка и запуск web интерфейса]] (zabbix-frontend) на server
* Подключение к frontend для [[Сервис Zabbix#Настройка мониторинга]]
* [[Сервис Zabbix#Мониторинг с использованием Zabbix agents]] (выполнить в модуле 4)
==== Вопросы ====
- Какие версии Zabbix рекомендуются к использованию?
- Для каких задач используется Zabbix?
- Перечислите компоненты системы Zabbix.
===== Модуль 3: Базовые сущности Zabbix =====
==== Теория ====
* Сравнение с [[Сервис MRTG]], [[Сервис Cacti]] и [[Сервис Nagios]]
* [[https://www.zabbix.com/documentation/3.0/ru/manual/config/items|Zabbix Documentation Элементы данных]]
* [[https://www.zabbix.com/documentation/4.0/ru/manual/config/items/history_and_trends|Zabbix Documentation История и динамика изменений]]
* [[https://www.zabbix.com/documentation/4.0/ru/manual/config/items/itemtypes/simple_checks|Zabbix Documentation Простые проверки]]
* [[https://www.zabbix.com/documentation/4.0/ru/manual/config/triggers|Zabbix Documentation Триггеры]]
* [[https://www.zabbix.com/documentation/4.0/ru/manual/config/triggers/expression|Zabbix Documentation Выражение триггера]]
* [[https://www.zabbix.com/documentation/4.0/ru/manual/config/triggers/dependencies|Zabbix Documentation Зависимости триггеров]]
* [[https://www.zabbix.com/documentation/4.0/ru/manual/config/items/itemtypes/calculated|Zabbix Documentation Вычисляемые элементы данных]]
* [[https://www.zabbix.com/documentation/4.0/ru/manual/config/visualisation/graphs/custom|Zabbix Documentation Пользовательские графики]]
* [[https://www.zabbix.com/documentation/3.0/ru/manual/web_monitoring|Веб-мониторинг]], [[https://www.zabbix.com/documentation/4.0/ru/manual/web_monitoring/items|Элементы данных веб-мониторинга]]
==== Лабораторные работы: Базовые элементы процесса мониторинга ====
* Добавление системы без агента ya.ru и [[Сервис Zabbix#Простые проверки]] отзывчивости https://ya.ru
* Визуализация данных
Monitoring->Latest data
ya.ru->check perf http ya.ru
Zoom: 1h
* [[Сервис Zabbix#Простые проверки]] доступности системы gate.isp.un и (не обязательно) сервиса RDP на windows client1 через server (методически лучше удалить host "Zabbix server" и добавить host server с адресом 127.0.0.1 и любым интерфейсом)
* [[Сервис Zabbix#Настройка триггеров]] уведомляющего о недоступности gate.isp.un/ya.ru (с зависимостью друг от друга)
* Отчет о проблемах
Monitoring->Triggers
или
Monitoring->Problems
* Использование [[Сервис Zabbix#Вычисляемые элементы]] для отображения среднего значения задержки ответа https://ya.ru
* Сравнение мгновенных и средних значений за период на комплексном графике
gate# apt install wondershaper
gate# wondershaper eth1 10 10
gate# wondershaper eth1
gate# wondershaper clear eth1
* [[Сервис Zabbix#Настройка триггеров]] уведомляющего о ухудшении качества доступа в Интернет на основании повышения среднего времени ответа за период
* [[Сервис Zabbix#Пользовательские графики]] (включают отображение триггеров)
* [[Asterisk. Интеграция]]
* [[Сервис Asterisk#Настройка базового функционала IP PBX]]
* [[Asterisk. Интеграция#Модуль 5. Интеграция c web приложениями]]
или просто:
* [[Язык программирования PHP#Обработка полей формы и вызов внешних программ]]
* [[Сервис Zabbix#Web сценарии]] (обзор значений в Latest data позволит создать соответствующие триггеры)
# tail -f /var/log/apache2/access.log | grep ast
==== Вопросы ====
- Верно ли, что система Zabbix позволяет осуществлять мониторинг только тех систем, на которых установлен агент?
- Перечислите, какие интерфейсы может использовать Zabbix для мониторинга?
- Есть ли возможность осуществлять мониторинг системы, не имеющей поддерживаемых Zabbix интерфейсов?
- Как можно уменьшить количество сообщений системы мониторинга в случае сбоев больших коммутационных узлов?
- Приведите примеры использования вычисляемых элементов.
- Для чего нужны пользовательские графики?
- Какие возможности, по сравнению с net.tcp.service.perf[http] предоставляют Web сценарии?
- Можно ли мониторить работоспособность неуправляемого коммутатора?
===== Модуль 4: Использование шаблонов =====
==== Теория ====
* [[https://www.zabbix.com/documentation/3.0/ru/manual/config/templates|Zabbix Documentation - Шаблоны]]
==== Лабораторные работы: Управление конфигурацией с помощью шаблонов ====
=== 4.1 Клонирование узлов (хостов) ===
* Создать узел val.bmstu.ru через Full Clone узла ya.ru (обратить внимание на использование {HOST.NAME} в именах триггеров)
=== 4.2 Использование готовых шаблонов ===
* Обзор шаблона "Template OS Linux"
* Установка zabbix agent на server ([[Сервис Zabbix#Мониторинг с использованием Zabbix agents]], можно оставить конфигурацию по умолчанию)
* Применить к созданному host server шаблоны "Template OS Linux" и "Template App Zabbix Server"
=== 4.3 Создание шаблона на основе существующего ===
* [[Сервис Zabbix#Создание своих шаблонов]] на основе Template App SSH Service с добавлением макроса, определяющего порт сервиса
* Установка zabbix agent на gate ([[Сервис Zabbix#Мониторинг с использованием Zabbix agents]]) (рассмотреть и, в конце, отключить PSK аутентификацию и на агенте и на сервере, для удобства выполнения последующих лабораторных работ)
* Назначаем шаблон системам server и gate
* Меняем порт ([[Сервис SSH#Настройка ssh сервера]]) на gate и переопределяем значение макроса
gate# /usr/sbin/sshd -p 2222
gate# kill `cat /var/run/sshd.pid`
==== Вопросы ====
- Чем шаблоны лучше клонирования?
- Что можно использовать к качестве переменных в выражениях триггеров?
- Как работает переопределение и наследование макросов?
- Какой синтаксис у макроса?
- Что произойдет с объектами хостов при изменении описывающего их шаблона?
- Можно ли поменять значение объекта хоста, описанного шаблоном?
- Как обеспечить безопасную связь между zabbix агентом и сервером?
===== Модуль 5: Внешние проверки и пользовательские параметры =====
==== Теория ====
* [[https://www.zabbix.com/documentation/2.4/ru/manual/config/items/itemtypes/external|Внешние проверки]]
* [[https://www.zabbix.com/documentation/3.0/ru/manual/config/items/userparameters|Пользовательские параметры]]
==== Лабораторные работы: Мониторинг с использование внешних программ/скриптов ====
=== 5.1 Варианты использования внешних программ/скриптов на zabbix сервере ===
* [[Сервис Zabbix#Внешние проверки]]
* [[Сервис Zabbix#Пример простого скрипта]] (обсудить)
* [[Сервис Zabbix#Пример скрипта, требующего повышения привилегий]]
* Настройка триггеров [[Сервис Zabbix#Пример с текстовым элементом]]
* [[Сервис Zabbix#Элементы типа trapper]]
* Задание, сделать триггер, по аналогии [[Сервис Zabbix#Пример с текстовым элементом]]
=== 5.2 Настройка мониторинга статистики сервиса DHCP ===
* [[Сервис DHCP#Статистика DHCP сервера]]
* [[Сервис Zabbix#Пример запуска скрипта на удаленной системе]] (демонстрирует преподаватель)
* [[Сервис Zabbix#Использование UserParameter]] в zabbix-agent для мониторинга количества выданных ip сервисом DHCP
Configuration->Host->gate
Items
Name: DHCP stat CUR
...
Name: DHCP stat MAX
...
Graphs
Name: DHCP stat CUR MAX
...
* Использование [[Сервис Zabbix#Вычисляемые элементы]] для отображения процента выданных адресов
* [[Сервис Zabbix#Настройка триггеров]] "On gate dhcp subnet is full"
==== Вопросы ====
- Какое ограничение накладывает zabbix на выполнение внешних скриптов?
- Какие варианты имеются для запуска скриптов на удаленных системах из zabbix?
- Как можно передать в zabbix результаты, получаемые в результате длительного времени?
===== Модуль 6: Низкоуровневое обнаружение (LLD) =====
==== Теория ====
* [[https://www.zabbix.com/documentation/3.0/ru/manual/discovery/low_level_discovery|Zabbix Documentation. Низкоуровневое обнаружение]]
* Формат [[https://ru.wikipedia.org/wiki/JSON|JSON]]
* Формат [[https://ru.wikipedia.org/wiki/XML|XML]]
==== Лабораторные работы: Управление конфигурацией с помощью шаблонов и LLD ====
=== 6.1 Первое знакомство с LLD ===
* [[Сервис Zabbix#Low-Level Discovery (LLD)]]
Configuration->Hosts->...->Items
->Triggers
->Graphs
->Mounted filesystem discovery: ...
->Network interface discovery: ...
Administration->General->Regular expressions
=== 6.2 Создание своего шаблона с LLD ===
* Добавление подсетей (LAN2-eth2-VirtualBox_Адаптер 3_Внутренняя сеть) в сервис DHCP
gate# cat /etc/network/interfaces
gate# ifup eth2
gate# cat /etc/default/isc-dhcp-server
gate# cat /etc/dhcp/dhcpd.conf
gate# service isc-dhcp-server restart
* Разработка шаблона, использующего [[Сервис Zabbix#Low-Level Discovery (LLD)]] для мониторинга использования адресного пространства DHCP сетей (как вариант, преподаватель разрабатывает шаблон и скрипты которые загружают слушатели)
* [[Сервис Zabbix#Экспорт/импорт в XML]]
* [[http://val.bmstu.ru/unix/zabbix/Template_App_DHCP_Pools.xml]]
==== Вопросы ====
- Придумайте свои варианты задач, при которых может понадобиться LLD.
- Как можно отфильтровать только нужные элементы в процессе discovery?
===== Модуль 7: Управление уведомлениями =====
==== Теория ====
* [[https://www.zabbix.com/documentation/3.0/ru/manual/config/users_and_usergroups/permissions|Zabbix Documentation Права доступа]]
* [[https://www.zabbix.com/documentation/3.0/ru/manual/quickstart/notification|Zabbix Documentation - Получение оповещения о проблеме]]
* Протокол SMTP
==== Лабораторные работы: Настройка уведомлений о событиях ====
* Создать учетную запись с login/alias userX/passwordX, Вашим ФИО и, с User type: "Zabbix Super Admin"
* Включить userX в группу "Zabbix administrators"
* [[Сервис Zabbix#Настройка уведомлений о событиях]]
Задание на дом:)
* Создать учетную запись user100+X с User type: "Zabbix User" и группой "Zabbix administrators"
* Назначаем группе "Zabbix administrators" права на чтение всех объектов
* Вместо группы "Zabbix administrators" использовать новую, созданную "Zabbix responsible". Члены группы должны иметь права на просмотр результатов мониторинга и должны получать уведомления
==== Вопросы ====
- Где можно посмотреть, какие уведомления были отправлены zabbix?
- Какие варианты отправки уведомлений имеются в zabbix?
===== Модуль 8: Активная регистрация оборудования =====
==== Теория ====
* [[https://www.zabbix.com/documentation/3.0/ru/manual/config/items/itemtypes/trapper|Zabbix Documentation Траппер элементы данных]]
* Варианты использования zabbix-agent в режиме active
* [[https://www.zabbix.com/documentation/3.2/ru/manual/appendix/items/activepassive|Zabbix Documentation - Пассивные и активные проверки агента]]
==== Лабораторные работы: Мониторинг систем с динамическими адресами ====
* Преподаватель демонстрирует проблемы мониторинга windows систем с динамическими адресами
- необходимо настроить firewall,
- может измениться IP адрес (для демонстрации можно сменить mac адрес)
- LLD в пассивном режиме использует имя системы, и, если его нет в DNS - не работает.
# grep 192.168.X.102 /var/log/zabbix/zabbix_server.log
...
12202:20190605:125020.551 cannot send list of active checks to "192.168.X.102": host [CLIENT1] not found
...
Для решения можно использовать инфраструктуру MS AD, или [[Сервис DNS#Настройка поддержки динамических обновлений от DHCP сервера]] или активный режим агента
* [[Сервис Zabbix#Активный режим]] (клонирование шаблонов и настройка элементов на активный режим агента, настройка авто регистрации систем с активными агентами и настройка агента client1 на активный режим.
Домашнее задание - отключить уведомления о включении/выключении (...just been restarted..., Zabbix agent on ... is unreachable...) клиентских компьютеров
==== Вопросы ====
- Чем отличается активный режим от пассивного в zabbix агенте?
- Придумайте варианты конфигураций сети, при которых необходимо использовать активный режим агента zabbix.
===== Модуль 9: Мониторинг оборудования по протоколу SNMP =====
==== Теория ====
* [[https://ru.wikipedia.org/wiki/SNMP|Протокол SNMP - Wikipedia]]
* [[https://www.zabbix.com/documentation/1.8/ru/manual/auto-discovery|Zabbix Documentation - Обнаружение]]
* [[https://www.zabbix.com/documentation/3.0/ru/manual/distributed_monitoring/proxies|Zabbix Documentation - Прокси]]
==== Лабораторные работы: Мониторинг сетевого оборудования ====
=== Развертывание оборудования ===
* [[Общие настройки сетевого оборудования Cisco#Настройка snmp агента]] на cisco router в GNS3 на стенде преподавателя
configure terminal
hostname routerN
interface FastEthernet0/0
ip address 172.16.1.19N 255.255.255.0
no shutdown
ip route 0.0.0.0 0.0.0.0 172.16.1.254
ip name-server 172.16.1.254
ip domain-name isp.un
ip domain-lookup
snmp-server community public RO
end
copy running-config startup-config
=== Настройка мониторинга SNMP устройства в zabbix ===
* [[Сервис SNMP#Установка пакета net-snmp]] на server
* [[Сервис SNMP#Варианты использования snmp консоли в режиме чтения]] на server
* [[Сервис Zabbix#Мониторинг по протоколу SNMP]] системы router1.isp.un (для ускорения демонстрации уменьшить интервалы времени до 1 минуты)
=== Автоматическое добавление ===
* Удалить все routerN.isp.un из zabbix
* [[Сервис Zabbix#Автоматическое добавление]]
=== Использование proxy ===
configure terminal
no ip route 0.0.0.0 0.0.0.0 172.16.1.254
* [[Сервис SNMP#Установка пакета net-snmp]] на gate
* [[Сервис SNMP#Варианты использования snmp консоли в режиме чтения]] на gate
* [[Сервис Zabbix#Установка и запуск proxy]] на gate
==== Вопросы ====
- Что необходимо установить в систему с zabbix для мониторинга оборудования по протоколу SNMP?
- В чем отличие процесса автоматического добавления оборудования в этой лабораторной работе от варианта с активным агентом?
- Как формируется имя хоста в случае Discovery в 3-й и 4-й версии zabbix?
- Придумайте свои варианты задач, при которых может понадобиться Zabbix Proxy
===== Модуль 10: Zabbix API =====
==== Теория ====
* [[https://ru.wikipedia.org/wiki/JSON|Материал из Википедии. JSON]]
* [[https://www.zabbix.com/documentation/1.8/ru/api/getting_started|Zabbix Documentation Начало работы с Zabbix API]]
* [[https://www.zabbix.com/forum/zabbix-troubleshooting-and-problems/36900-api-key-lifetime|api key lifetime]]
==== Лабораторные работы: Пример задачи, использующей Zabbix API ====
Техническое задание: сканировать через nmap определенные узлы и уведомлять, если результаты сканирования изменились
Решение:
- Создать шаблон "My Template Nmap" с [[Сервис Zabbix#Элементы типа trapper]] и триггером (см. [[Сервис Zabbix#Пример с текстовым элементом]]), подключить его к узлам, которые надо мониторить (перед подключение к узлу, удалить элемент my.nmap от предыдущих лабораторных работ).
- Периодически получать список узлов с шаблоном My Template Nmap из Zabbix через [[Сервис Zabbix#API]] (Выяснить templateids шаблона "My Template Nmap")
Примечание: templateid можно увидеть в строке URL интерфейсе администрирования zabbix
# cat /root/zab_get_hosts_nmap.sh
#!/bin/sh
curl -s -k -X POST -H 'Content-Type: application/json-rpc' -d "
{
\"jsonrpc\": \"2.0\",
\"method\": \"host.get\",
\"params\": {
\"output\": [\"hostid\", \"host\"],
\"templateids\": [\"10NNN\"]
},
\"auth\": \"${AUTH}\",
\"id\": 2
} " http://127.0.0.1/zabbix/api_jsonrpc.php \
| jq '.result | .[] | { host: .host} | tostring' \
| tr -d '{}\\' | tr '"' ' ' | cut -d ' ' -f5
# /root/zab_get_hosts_nmap.sh | tee /root/hosts_nmap.txt
- Периодически сканировать узлы (см. [[Сервис Zabbix#Пример текстового элемента]]) и передавать результаты сканирования в zabbix
# cat /root/nmap_2_zabbix.sh
#!/bin/sh
while read host
do
echo $host
zabbix_sender -z 127.0.0.1 -p 10051 -s $host -k my.nmap \
-o "$(/etc/zabbix/externalscripts/detect_host_nmap.sh $host)"
done
# /root/nmap_2_zabbix.sh < /root/hosts_nmap.txt
==== Вопросы ====
- Верно ли что Zabbix API можно использовать для управления результатами мониторинга?
- Верно ли что Zabbix API можно использовать для управления конфигурацией системы мониторинга?
===== Модуль 11: Дополнительные возможности визуализации результатов мониторинга в Zabbix =====
==== Теория ====
* [[https://www.zabbix.com/documentation/3.0/ru/manual/config/visualisation/maps/map|Zabbix Documentation Настройка карты сети]]
==== Лабораторные работы ====
Задание: Отобразить на карте подключение провайдеру и подписать на линке параметры входящего и исходящего трафиков
Out: {gate:net.if.out[eth1].last(0)}
In: {gate:net.if.in[eth1].last(0)}
Материал для самостоятельного изучения:
* Вебинар [[Zabbix - построение топологии сети]]