Table of Contents

Zabbix. Мониторинг IT инфраструктуры предприятия

Программа курса

Модуль 0. Подготовка стенда в классе

Модуль 1: Развертывание IT инфраструктуры предприятия

Теория

Лабораторные работы: Развертывание объектов мониторинга

Настраиваем необходимый для мониторинга минимум из курса Администрирование сервисов UNIX с использованием Скрипты автоконфигурации

# cat /etc/resolv.conf
search corpX.un
nameserver 192.168.X.10

Модуль 2: Установка компонентов Zabbix

Теория

Лабораторные работы: Развертывание компонентов Zabbix

Вопросы

  1. Какие версии Zabbix рекомендуются к использованию?
  2. Для каких задач используется Zabbix?
  3. Перечислите компоненты системы Zabbix.

Модуль 3: Базовые сущности Zabbix

Теория

Лабораторные работы: Базовые элементы процесса мониторинга

Monitoring->Latest data
  ya.ru->check perf http ya.ru
  Zoom: 1h
Monitoring->Triggers
  или
Monitoring->Problems
gate# apt install wondershaper 

gate# wondershaper eth1 10 10

gate# wondershaper eth1

gate# wondershaper clear eth1

или просто:

# tail -f /var/log/apache2/access.log  | grep ast

Вопросы

  1. Верно ли, что система Zabbix позволяет осуществлять мониторинг только тех систем, на которых установлен агент?
  2. Перечислите, какие интерфейсы может использовать Zabbix для мониторинга?
  3. Есть ли возможность осуществлять мониторинг системы, не имеющей поддерживаемых Zabbix интерфейсов?
  4. Как можно уменьшить количество сообщений системы мониторинга в случае сбоев больших коммутационных узлов?
  5. Приведите примеры использования вычисляемых элементов.
  6. Для чего нужны пользовательские графики?
  7. Какие возможности, по сравнению с net.tcp.service.perf[http] предоставляют Web сценарии?
  8. Можно ли мониторить работоспособность неуправляемого коммутатора?

Модуль 4: Использование шаблонов

Теория

Лабораторные работы: Управление конфигурацией с помощью шаблонов

4.1 Клонирование узлов (хостов)

4.2 Использование готовых шаблонов

4.3 Создание шаблона на основе существующего

gate# /usr/sbin/sshd -p 2222

gate# kill `cat /var/run/sshd.pid`

Вопросы

  1. Чем шаблоны лучше клонирования?
  2. Что можно использовать к качестве переменных в выражениях триггеров?
  3. Как работает переопределение и наследование макросов?
  4. Какой синтаксис у макроса?
  5. Что произойдет с объектами хостов при изменении описывающего их шаблона?
  6. Можно ли поменять значение объекта хоста, описанного шаблоном?
  7. Как обеспечить безопасную связь между zabbix агентом и сервером?

Модуль 5: Внешние проверки и пользовательские параметры

Теория

Лабораторные работы: Мониторинг с использование внешних программ/скриптов

5.1 Варианты использования внешних программ/скриптов на zabbix сервере

5.2 Настройка мониторинга статистики сервиса DHCP

Configuration->Host->gate
  Items
    Name: DHCP stat CUR
      ...
    Name: DHCP stat MAX
      ...
  Graphs
    Name: DHCP stat CUR MAX
      ...

Вопросы

  1. Какое ограничение накладывает zabbix на выполнение внешних скриптов?
  2. Какие варианты имеются для запуска скриптов на удаленных системах из zabbix?
  3. Как можно передать в zabbix результаты, получаемые в результате длительного времени?

Модуль 6: Низкоуровневое обнаружение (LLD)

Теория

Лабораторные работы: Управление конфигурацией с помощью шаблонов и LLD

6.1 Первое знакомство с LLD

Configuration->Hosts->...->Items
                         ->Triggers
                         ->Graphs
                                ->Mounted filesystem discovery: ...
                                ->Network interface discovery: ...

Administration->General->Regular expressions

6.2 Создание своего шаблона с LLD

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

Вопросы

  1. Придумайте свои варианты задач, при которых может понадобиться LLD.
  2. Как можно отфильтровать только нужные элементы в процессе discovery?

Модуль 7: Управление уведомлениями

Теория

Лабораторные работы: Настройка уведомлений о событиях

Задание на дом:)

Вопросы

  1. Где можно посмотреть, какие уведомления были отправлены zabbix?
  2. Какие варианты отправки уведомлений имеются в zabbix?

Модуль 8: Активная регистрация оборудования

Теория

Лабораторные работы: Мониторинг систем с динамическими адресами

  1. необходимо настроить firewall,
  2. может измениться IP адрес (для демонстрации можно сменить mac адрес)
  3. 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, или Настройка поддержки динамических обновлений от DHCP сервера или активный режим агента

Домашнее задание - отключить уведомления о включении/выключении (…just been restarted…, Zabbix agent on … is unreachable…) клиентских компьютеров

Вопросы

  1. Чем отличается активный режим от пассивного в zabbix агенте?
  2. Придумайте варианты конфигураций сети, при которых необходимо использовать активный режим агента zabbix.

Модуль 9: Мониторинг оборудования по протоколу SNMP

Теория

Лабораторные работы: Мониторинг сетевого оборудования

Развертывание оборудования

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

Автоматическое добавление

Использование proxy

configure terminal

no ip route 0.0.0.0 0.0.0.0 172.16.1.254

Вопросы

  1. Что необходимо установить в систему с zabbix для мониторинга оборудования по протоколу SNMP?
  2. В чем отличие процесса автоматического добавления оборудования в этой лабораторной работе от варианта с активным агентом?
  3. Как формируется имя хоста в случае Discovery в 3-й и 4-й версии zabbix?
  4. Придумайте свои варианты задач, при которых может понадобиться Zabbix Proxy

Модуль 10: Zabbix API

Теория

Лабораторные работы: Пример задачи, использующей Zabbix API

Техническое задание: сканировать через nmap определенные узлы и уведомлять, если результаты сканирования изменились

Решение:

  1. Создать шаблон “My Template Nmap” с Элементы типа trapper и триггером (см. Пример с текстовым элементом), подключить его к узлам, которые надо мониторить (перед подключение к узлу, удалить элемент my.nmap от предыдущих лабораторных работ).
  2. Периодически получать список узлов с шаблоном My Template Nmap из 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
  1. Периодически сканировать узлы (см. Пример текстового элемента) и передавать результаты сканирования в 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

Вопросы

  1. Верно ли что Zabbix API можно использовать для управления результатами мониторинга?
  2. Верно ли что Zabbix API можно использовать для управления конфигурацией системы мониторинга?

Модуль 11: Дополнительные возможности визуализации результатов мониторинга в Zabbix

Теория

Лабораторные работы

Задание: Отобразить на карте подключение провайдеру и подписать на линке параметры входящего и исходящего трафиков

Out: {gate:net.if.out[eth1].last(0)}
In: {gate:net.if.in[eth1].last(0)}

Материал для самостоятельного изучения: