====== 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 - построение топологии сети]]