Содержание
Вкрадце расскажу о том, как я поднял у себя сервер с 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
Настройка будет чуть ниже.
Мониторинг рабочих станций Windows
Скачиваем zabbix-agent с оф.сайта:
Распаковываем в любой каталог, видим две папки 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
- Залогиниваемся под Admin:zabbix, пароль потом сменим.
- В меню (сверху справа) идём в Profile и меняем язык на привычный (русский есть).
- В основном меню (слева) “Настройка – Узлы сети” и кнопка справа вверху “Создать узел сети”, указываем IP адрес хоста и создаём логические группы (так же в Настройка – Группы узлов). Добавив хост не забываем перейти на вкладку “Шаблоны” и назначить шаблон соответствующего устройства. Например Template OS Windows, Template OS FreeBSD и т.д.
- Можно настроить автообнаружение (см. мануал https://www.zabbix.com/documentation/1.8/ru/manual/auto-discovery), вообще очень советую читать документацию, она очень понятна и наглядна, а возможности там просто космические.
Изображаем устройства на карте:
Настройка – Карты сетей, кнопка “Создать карту…”.
- Кнопки добавления устройства
- Выбор типа узла. Можно выбрать конкретный узел. Группу. Просто изображение. Другую карту и т.д.
- Указываем имя элемента.
- Ссылка на конкретный элемент в базе. Очень важно!
- Изображение. В скобочках – размер картинки.
Для того, чтобы нарисовать связь между узлами – выделяем два узла и жмём + на связи (правее добавления узла). Всё просто.
Начинаем мониторить различные события (Мониторинг – Обзор). В правом верхнем выделим “Группа: Все”, либо интересующую нас группу пользователей. Ну и мы увидим события, которые происходят в системе. Наиболее критичные отмечаются красным цветом. На каждый прямоугольник можно кликнуть и просмотреть детали, либо подтвердить (чем-то похоже на систему уведомлений).
Несколько скринов.
Можно выбрать представление в виде данных
И получить графики или значения по нужному параметру.
Zabbix так же поддерживает мониторинг девайсов вроде Cisco и им подобных по протоколу SNMP (я как-то мониторил подобное прямо из PHP, но это было не слишком удобно). Раздобуду Cisco – обязательно продемонстрирую, прямо здесь, ниже.
Кроме того, есть возможность мониторить программные компоненты – сервера баз данных (загруженность), веб-сервера и т.д. Сам я только начал его осваивать, но, думаю, что это очень полезный администратору инструмент.
Продолжаем разбираться. Сейчас мы добавим в нашу локальную сеть маршрутизатор Cisco (я проведу эту работу с виртуальным GNS3 оборудованием, потому как не могу найти роутер нужной модели). Итак, топология будет такая:
Здесь у нас есть 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, можно обойтись и без него)
Отлично! Мы можем получать значения по 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 порта по его индексу.
Порт у нас поднят. Чтож, самое время подстроить Zabbix.
Добавляем новое устройство:
Не забываем назначит шаблон. Подойдёт Template SNMP Generic. Обратите внимание, что интерфейс агента нужно убрать, а оставить интерфейс SNMP.
Затем переходим в элементы данных и деактивируем все элементы, созданные по умолчанию из шаблона.
После этого создаём новый элемент данных и заполняем его как указано ниже:
При этом присваиваем имя, выбираем тип SNMPv2, а так же в поле Ключ вводим (либо текстовое представление (ifOperStatus.5). SNMP OID делаем аналогичным. Не забываем поменять community.
Далее создаём триггер, который будет реагировать на изменения этого параметра:
В разделе “Триггеры” делаем “Создать” в правом верхнем углу и заполняем поля:
По нажатии кнопки “Добавить” мы выбираем наш элемент данных и делаем условие срабатывания N = 2 (2 – это означает OperStatus = down). После этого поле “Выражение” у нас заполнится так:
{Cisco Router:1.3.6.1.2.1.2.2.1.8.5.last(0)}=2
Сохраняем триггер и готовимся к работе.
Отрубаем порт интерфейса и видим в логах:
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet1/2, changed state to down
А Zabbix уже недовольно ворчит о срабатывании триггера.
Подобным образом можно настроить реагирование на изменение любых параметров оборудования (подсмотренных через snmpwalk без указания параметров – их там не один десяток).
а можно подробней, какое минимальное железо должно быть?
и подойдет ли Ubuntu для этого?
Пододёт. Вот тут есть описание различных конфигураций и требования в зависимости от количества узлов.
https://www.zabbix.com/documentation/1.8/ru/manual/installation/requirements Можете выбрать соответственно свою версию.