Материал просмотрен 4,344 раз(а)

Вкрадце расскажу о том, как я поднял у себя сервер с Zabbix на борту и мониторил виндовые и FreeBSD машины.

Подключаем репозитрий epel

Epel – Extra Packages for Enterprise Linux, репозиторий, представленный командой Fedora, содержащий в себе огромное количество дистрибутивов, 100% свободный и часто обновляемый.

# yum install http://ftp.yandex.ru/epel/6/i386/epel-release-6-8.noarch.rpm

Устанавливаем софт

Здесь нам понадобится сервер баз данных, веб-сервер, сам zabbix, некоторый софт для работы с snmp и SELinux

# yum install zabbix20-server zabbix20-agent zabbix20-web-mysql httpd policycoreutils-python net-snmp net-snmp-utils
# yum groupinstall "MySQL Database Client" "MySQL Database Server"

Настраиваем сервер баз данных

# service mysqld start
# mysql_secure_installation

Указываем пароль к базе данных и отвечаем утвердительно на остальные вопросы.

# mysql -u root -p

вводим пароль и попадаем в консоль mysql>
mysql> CREATE DATABASE zabbix CHARACTER SET utf8;
mysql> GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY 'myzabbixpass123';
mysql> quit;

Конечно, смените пароль на свой. Итак, идём дальше. Заполним базу данных zabbix из шаблонов:
# mysql -u zabbix -pmyzabbixpass123 zabbix < /usr/share/zabbix-mysql/schema.sql
# mysql -u zabbix -pmyzabbixpass123 zabbix < /usr/share/zabbix-mysql/images.sql
# mysql -u zabbix -pmyzabbixpass123 zabbix < /usr/share/zabbix-mysql/data.sql

Ваш пароль указывайте вплотную к ключу -p.

Настраиваем Zabbix

# vi /etc/zabbix-server.conf

ищем строки и раскомментирываем (изменяем) их под наши настройки:

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=myzabbixpass123

Далее, модифицируем настройки PHP аналогично:

# vi /etc/php.ini

max_execution_time = 300
max_input_time = 300
post_max_size = 16M
date.timezone = Asia/Sakhalin

При установке zabbix вложил свой конфиг в каталог /etc/httpd/conf.d/zabbix.conf, который добавляет новый каталог для его веб-интерфейса: /usr/share/zabbix/ с алиасом /zabbix (позволю себе процитировать конфиг):

...
Alias /zabbix /usr/share/zabbix
...

Поскольку у нас CentOS, нужно поднастроить SELinux:

# semanage port -a -t http_port_t -p tcp 10051
# setsebool -P httpd_can_network_connect on

Добавляем правило в iptables:

iptables -t mangle -A INPUT -i eth0 -s 192.168.1.0/24 -p tcp -d 192.168.1.4 --dport 80 -j ACCEPT

где:

eth0 – интерфейс локальной сети;
192.168.1.0/24 – адреса локальной сети
192.168.1.4 – адерс сервера zabbix

Ну чтож, стартуем службы и идём в веб-интерфейс:

# /etc/init.d/httpd start
# /etc/init.d/zabbix-server start
# /etc/init.d/zabbix-agent start

Открываем в браузере:

http://IP-адрес/zabbix

zab1

Настройка будет чуть ниже.

Мониторинг рабочих станций Windows

Скачиваем zabbix-agent с оф.сайта:

zagent

Распаковываем в любой каталог, видим две папки bin и conf. Идём в папку conf, правим единственный файл zabbix_agentd.win.conf:

# указываем через запятую все zabbix-сервера
Server=192.168.1.4, 192.168.1.100
# порт для прослушки, можно не менять - этот порт надо разрешить в файрволле на входящий трафик
ListenPort=10050
#Имя хоста
Hostname=D.Makarov
#Дополнительные параметры, нашёл в одном из мануалов
UserParameter=windows.services,"%ProgramFiles%\zabbix\services.exe"

Остальные параметры я не трогал. Теперь внимательно. Кладём наши файлы в каталог Program files в папку zabbix и выполняем команду с правами администратора:

> \bin\win32\zabbix_agentd.exe –config \conf\zabbix_agentd.win.conf –install
> \bin\win32\zabbix_agentd.exe –config \conf\zabbix_agentd.win.conf –start

В консольку получаем сообщения об успешной установке и запуске службы.

Ставим на тех компах, которые нас интересуют. Под Linux/FreeBSD надо качать соответствующие агенты.

Установка Zabbix-agent под FreeBSD

На FreeBSD я поставил из портов:

# cd /usr/ports/net-mgmt/zabbix-agent
# make config && make && make install

Затем идём и правим конфиг-файл /usr/local/etc/zabbix/zabbix-agentd.conf и вносим аналогичные изменения, как и под Winodws (за исключением, пожалуй, UserParameter).

Настраиваем Web-интерфейс Zabbix

  1. Залогиниваемся под Admin:zabbix, пароль потом сменим.
  2. В меню (сверху справа) идём в Profile и меняем язык на привычный (русский есть).
  3. В основном меню (слева) “Настройка – Узлы сети” и кнопка справа вверху “Создать узел сети”, указываем IP адрес хоста и создаём логические группы (так же в Настройка – Группы узлов). Добавив хост не забываем перейти на вкладку “Шаблоны” и назначить шаблон соответствующего устройства. Например Template OS Windows, Template OS FreeBSD и т.д.
  4. Можно настроить автообнаружение (см. мануал https://www.zabbix.com/documentation/1.8/ru/manual/auto-discovery), вообще очень советую читать документацию, она очень понятна и наглядна, а возможности там просто космические.

Изображаем устройства на карте:

Настройка – Карты сетей, кнопка “Создать карту…”.

Добавление устройства

  1. Кнопки добавления устройства
  2. Выбор типа узла. Можно выбрать конкретный узел. Группу. Просто изображение. Другую карту и т.д.
  3. Указываем имя элемента.
  4. Ссылка на конкретный элемент в базе. Очень важно!
  5. Изображение. В скобочках – размер картинки.

Для того, чтобы нарисовать связь между узлами – выделяем два узла и жмём + на связи (правее добавления узла). Всё просто.

Начинаем мониторить различные события (Мониторинг – Обзор). В правом верхнем выделим “Группа: Все”, либо интересующую нас группу пользователей. Ну и мы увидим события, которые происходят в системе. Наиболее критичные отмечаются красным цветом. На каждый прямоугольник можно кликнуть и просмотреть детали, либо подтвердить (чем-то похоже на систему уведомлений).

monit

Несколько скринов.

monit2

Можно выбрать представление в виде данных

monit3

И получить графики или значения по нужному параметру.

Zabbix так же поддерживает мониторинг девайсов вроде Cisco и им подобных по протоколу SNMP (я как-то мониторил подобное прямо  из PHP, но это было не слишком удобно). Раздобуду Cisco – обязательно продемонстрирую, прямо здесь, ниже.

Кроме того, есть возможность мониторить программные компоненты – сервера баз данных (загруженность), веб-сервера и т.д. Сам я только начал его осваивать, но, думаю, что это очень полезный администратору инструмент.


Продолжаем разбираться. Сейчас мы добавим в нашу локальную сеть маршрутизатор Cisco (я проведу эту работу с виртуальным GNS3 оборудованием, потому как не могу найти роутер нужной модели). Итак, топология будет такая:

topo

Здесь у нас есть Zabbix-сервер, коммутатор для сопряжения с устройствами, EtherSwitch от Cisco (на базе c3745), а также тестовая станция “1”.

Итак, первым делом создадим Community:

ESW1(config)#snmp-server community my_lokal ro 10
ESW1(config)#access-list 10 permit 192.168.1.2

192.168.1.2 – адрес моего zabbix-сервера в виртуальной конфигурации.

ESW1(config)#int fa0/0
ESW1(config-if)#ip address 192.168.1.3 255.255.255.0
ESW1(config-if)#no shutdown

Отлично, если наш EtherSwitch пингуется, значит всё ок. Теперь идём в CentOS (linux).

Нам нужно проверить работу SNMP:

# snmpwalk -v 2c -c "my_lokal" 192.168.1.3 ifDescr

(я использовал grep, можно обойтись и без него)

if_descr

Отлично! Мы можем получать значения по SNMP с нашего устройства. Кстати, заметим, что интересующий нас порт имеет index = 5. Получим его состояние:

# snmpget -v 2c -c "my_lokal" 192.168.1.3 1.3.6.1.2.1.2.2.1.8.5

Последняя 5 – это как раз index порта. А эта длинная строка из чисел, разделённых точками – OID. В каждом устройстве их множество, полный список легко гуглится. Вот я привёл OID для получения ifOperStatus порта по его индексу.

get-oper

Порт у нас поднят. Чтож, самое время подстроить Zabbix.

Добавляем новое устройство:

cisco_unit

Не забываем назначит шаблон. Подойдёт Template SNMP Generic. Обратите внимание, что интерфейс агента нужно убрать, а оставить интерфейс SNMP.

Затем переходим в элементы данных и деактивируем все элементы, созданные по умолчанию из шаблона.

data_el

После этого создаём новый элемент данных и заполняем его как указано ниже:

data_el2

При этом присваиваем имя, выбираем тип SNMPv2, а так же в поле Ключ вводим (либо текстовое представление (ifOperStatus.5). SNMP OID делаем аналогичным. Не забываем поменять community.

Далее создаём триггер, который будет реагировать на изменения этого параметра:

В разделе “Триггеры” делаем “Создать” в правом верхнем углу и заполняем поля:

if

По нажатии кнопки “Добавить” мы выбираем наш элемент данных и делаем условие срабатывания N = 2 (2 – это означает OperStatus = down). После этого поле “Выражение” у нас заполнится так:

{Cisco Router:1.3.6.1.2.1.2.2.1.8.5.last(0)}=2

Сохраняем триггер и готовимся к работе.

mon

Отрубаем порт интерфейса и видим в логах:

%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet1/2, changed state to down

А Zabbix уже недовольно ворчит о срабатывании триггера.

unlink

Подобным образом можно настроить реагирование на изменение любых параметров оборудования (подсмотренных через snmpwalk без указания параметров – их там не один десяток).