пятница, 26 апреля 2013 г.

Мониторим корпоративную сеть с помощью Zabbix



Zabbix - свободная система мониторинга и отслеживания статусов разнообразных сервисов компьютерной сети, серверов и сетевого оборудования, написанная Алексеем ВладышевымОглавление. Краткая информация и возможности - http://ru.wikipedia.org/wiki/Zabbix

Оглавление:
1. Установка серверной части на Ubuntu Server 12.04.2 LTS
2. Подключение шаблонов для Windows/Linux серверов
3. Подключение коммутаторов Cisco и создание шаблонов
4. Мониторинг web ресурсов
5. Мониторинг Windows services
6. Создание тригеров
7. Настройка отправки отчетов на email

1. Установка
1.1. Установка Zabbix 2.0.5 на Ubuntu Server 12.04.2 LTS
Перед установкой Zabbix, зайдем под администратором и обновим Ubuntu
$ sudo su
$ sudo apt-get update && sudo apt-get upgrade

Загружаем последний стабильный пакет Zabbix - http://www.zabbix.com/download.php
$ wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/2.0.5/zabbix-2.0.5.tar.gz
Распаковываем его
$ tar zxvf zabbix-2.0.5.tar.gz

Создайте аккаунт пользователя
$ groupadd zabbix
$ useradd -g zabbix zabbix

Создайте базу данных для Zabbix
$ mysql -u<username> -p<password>
$ mysql> create database zabbix character set utf8;
$ mysql> quit;

Создаем структуру таблиц для базы Zabbix
$ mysql -u<username> -p<password> zabbix < zabbix-2.0.5/ database/mysql/schema.sql
$ mysql -u<username> -p<password> zabbix < zabbix-2.0.5/ database/mysql/images.sql
$ mysql -u<username> -p<password> zabbix < zabbix-2.0.5/ database/mysql/data.sql

Ставим необходимые пакеты
$ apt-get install libmysqlclient-dev
$ apt-get install libcurl4-openssl-dev
$ apt-get install snmpd
$ apt-get install libsnmp-dev

Переходим в каталог распакованного zabbix, настраиваем конфигурацию и устанавливаем
$ cd zabbix-2.0.5
$ ./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl
$ make install

Настраиваем конфигурационные файлы
$ nano /usr/local/etc/zabbix_agentd.conf
Timeout=30

$ nano /usr/local/etc/zabbix_server.conf
DBName=zabbix
DBUser=root
DBPassword=******
StartPingers=10
StartDiscoverers=10
Timeout=30

Добавляем службы Zabbix в автозагрузку
$ cp misc/init.d/ubuntu/* /etc/init/
$ cp misc/init.d/debian/* /etc/init.d/

Запускаем службы
$ zabbix_server
$ zabbix_agentd

1.2. Установка Web интерфейса
Создаем отдельный каталог для поддержания порядка
$ mkdir /var/www/zabbix

Переходим в каталог web интерфейса и копируем на виртуальный сервер
$ cd frontends/php
$ cp -a . /var/www/zabbix

Использовать любой другой язык отличный от English
$ cd /var/www/zabbix/locale
$ ./make_mo.sh

Настраиваем PHP под требования Zabbix
$ nano /etc/php5/apache2/php.ini
memory_limit = 128M
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone = Europe/Moscow

Перезагружаем MySQL и Apache
$ /etc/init.d/mysql restart && /etc/init.d/apache2 restart

Переходим на наш сервер
http://localhost/zabbix

Если Вы хотите напрямую заходить в Zabbix по http://localhost/ то делаем следующее
$ nano /etc/apache2/sites-enabled/000-default
Меняем строку
DocumentRoot /var/www
на
DocumentRoot /var/www/zabbix
Сохраняем и перезагружаем Apache

1.3. Установка агентов
1.3.1. CentOS 6
Перед установкой Zabbix, зайдем под администратором и обновим CentOS
$ su
$ yum update

Загружаем последний стабильный пакет Zabbix - http://www.zabbix.com/download.php
$ wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/2.0.5/zabbix-2.0.5.tar.gz

Распаковываем его
$ tar zxvf zabbix-2.0.5.tar.gz

Создайте аккаунт пользователя
$ groupadd zabbix
$ useradd -g zabbix zabbix

Ставим необходимые пакеты
$ yum install gcc
$ yum install make

Переходим в каталог распакованного zabbix, настраиваем конфигурацию и устанавливаем
$ cd zabbix-2.0.5
$ ./configure --enable-agent
$ make install

Настраиваем конфигурационные файлы
$ nano /usr/local/etc/zabbix_agentd.conf
Server=IP_Zabbix_Server
ServerActive= IP_Zabbix_Server

Добавляем службы Zabbix в автозагрузку
$ cp misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/
$ chkconfig --level 345 zabbix_agentd on

Добавляем правило в iptables
$ nano /etc/sysconfig/iptables
-A INPUT -p tcp --dport 10050 -j ACCEPT
-A INPUT -p udp --dport 10050 -j ACCEPT

Запускаем службу
$ /etc/init.d/zabbix_agentd start

1.3.2. Windows 2008R2

Распаковываем архив zabbix-2.0.5.tar.gz
В каталоге bin находятся службы Windows как для x86 так и для x64
Для Windows 2008 R2 копируем zabbix-2.0.5\bin\win64\zabbix_agentd.exe на диск C:\
Копируем конфигурационный файл из zabbix-2.0.5\conf\zabbix_agentd.win.conf на диск C:\
Переименуем zabbix_agentd.win.conf в zabbix_agentd.conf
Редактируем conf. Меняем Server=127.0.0.1 на IP_Zabbix_Server

Добавляем правило в Windows Firewall
  • Inbound Rules → New Rule…
  • Выбираем Port
  • Выбираем TCP и Specific local ports: 10050
  • Allow the connection
  • Domain
  • В Name указываем - Zabbix agent
2. Подключение шаблонов для Windows/Linux серверов
В Zabbix уже имеются готовые шаблоны для ОС Windows/Linux. Остается их только подключить.
2.1. Создаем Host group для более удобного наблюдения за серверами (ConfigurationHost groupsCreate host group)
В Group name пишем для Windows - Windows servers, для Linux - Linux servers.
2.2. Заносим шаблоны в только что созданные группы (ConfigurationTemplates)
Выбираем шаблон Template OS Windows или Template OS Linux.
В In groups добавляем ране созданные группы Windows servers или Linux servers.


  
2.3. Добавляем Host или Сервер в Zabbix (Configuration → Hosts → Create hosts)
Вкладка Host - Указываем Host name и IP address, выбираем нужную Group.



Вкладка TemplatesAdd и выбираем нужный шаблон


3. Подключение коммутаторов Cisco и создание шаблонов
3.1. Включение snmp на коммутаторе
Подключаемся к коммутатору (ssh/telnet)
# configure terminal
# snmp-server community public RO
# snmp-server host IP_Zabbix_Server public

3.2. Создание шаблона
Шаблон можно сгенерировать на http://ross.vc/cisco_tpl/
Но он может подойти, а может нет.
Заходим по SSH на Zabbix и проверяем наш коммутатор на название портов.
snmpwalk -v 2c -c public IP_Cisco 1.3.6.1.2.1.2.2.1.2

Примечание: Для старых устройств используйте snmp 1 версии. Например, для Cisco PIX 525, команда будет выглядеть так - snmpwalk -v 1 -c public IP_Cisco_PIX 1.3.6.1.2.1.2.2.1.2

В моём случае вывелось



Как видно номер первого порта
FastEthernet1 = 1
TenGigabitEthernet1/1 = 3
etc.

Шаблон, который сгенерирован на сайте ross.vc имеет порядок портов от 10000 (FastEthernet), 10101 (GigabitEthernet), 10201 (TenGigabitEthernet). Нам просто необходимо будет поменять названия портов с 100000 на 2 и т.д.

Примеры моих шаблонов (24 и 48 портовые свичи + CISCO 4500):
http://rusfolder.com/36183931

3.3. Добавление коммутаторов Cisco
3.3.1. Создаем Host group для более удобного наблюдения за коммутаторами (ConfigurationHost groupsCreate host group)
В Group name пишем Cisco switch.
3.3.2. Импортируем шаблон в созданную группу Cisco switch (Configuration → Templates → Import)
3.3.3. После успешного импорта, выбираем наш шаблон и добавляем в In groups группу Cisco switch.
3.4. Добавляем Host или Коммутатор в Zabbix (ConfigurationHostsCreate hosts) Вкладка Host - Указываем Host name и IP address, выбираем нужную Group.



Вкладка TemplatesAdd и выбираем нужный шаблон


4. Мониторинг web ресурсов
4.1.1. Создаем Host group для более удобного наблюдения за сайтами (ConfigurationHost groupsCreate host group)
В Group name пишем Web monitoring.
4.1.2.        Добавляем Host или Сайт в Zabbix (Configuration → Hosts → Create hosts) Вкладка Host - Указываем Host name и DNS name, выбираем нужную Group.
4.1.3.        Добавляем элементы данных в наш сайт (Configuration → Hosts → Applications → Create application)
В Name пишем имя сайта – www.site.ru
4.1.4.        Создадим сценарий для сайта (ConfigurationWebCreate scenario)
В Application выбираем наш сайт
В Name – site
Update time – 60
Agent – Internet Explorer 9.0

В вкладке Step пропишем, что проверять.


Required status codes – 200 (Означает, что сайт доступен)
4.1.5. Возвращаемся к нашему хосту и сделаем тригер (ConfigurationHostsTriggers)
Выбираем Create trigger
В Name – Site www.site.ru
Severity – High

В Expression добавим:
Item – Response code for step - web.test.rspcode[]
Function – Last (most recent) T value is NOT N
N – 200

4.1.6. Добавляем Host или Коммутатор в Zabbix (Configuration → Hosts → Create hosts) Вкладка Host - Указываем Host name и IP address, выбираем нужную Group.

5. Мониторинг Windows services
Для мониторинга служб на понадобятся сторонние программы (сылка). Распакуем их C:\Program Files\Zabbix\
5.1. В конфигурационном файле zabbix_agentd.conf на машине с ОС Windows нужно добавить в самом конце документа эту строку - UserParameter=windows.services,"C:\Program Files\Zabbix\services.exe"
И включить параметр EnableRemoteCommands=1

Для  проверки работоспособности используем команду:
C:\zabbix_agentd.exe -c "C:\zabbix_agentd.conf" -t "system.run[C:\Program Files\Zabbix\services.exe]"

5.2. В Zabbix импортируем шаблон, и подключаем его к нужной машине (как в п. 2.3.). При отключении или отключении службы, будет срабатывать триггер.

6. Создание триггеров
Создадим триггер на примере пинга какого-нибудь сервера.
Для начала нужно установить пакет fping
apt-get install fping

И дать права
# chown root:zabbix /usr/bin/fping
# chmod 710 /usr/bin/fping
# chmod ug+s /usr/bin/fping

6.1.1. Создаем Host group для более удобного наблюдения за пингом (Configuration → Host groups → Create host group)
В Group name пишем Ping monitoring.
6.1.2. Создаем шаблон в Zabbix (Configuration → Templates → Create template)
Назовём его Ping_VIP

В Items добавим три значения loss, ping и sec со следующими параметрами




Создадим триггер, перейдем в Triggers → Create trigger


Построим графики, перейдем в GraphsCreate graph и создадим три графика loss, ping и sec



6.1.3. Добавляем Host или Сайт в Zabbix (Configuration → Hosts → Create hosts)
6.1.4. Вкладка Host - Указываем Host name и IP address, выбираем нужную Group.
6.1.5. Вкладка Templates, добавляем наш шаблон Ping monitoring
6.1.6. Переходим в Actions и создаём действие (Configuration → Actions → Create action)


Создаём условия во вкладке Conditions


Добавим пользователей, кому отсылать уведомления (Вкладка Operations)

7. Настройка отправки отчетов на email
Administration →  Media types → Email

Administration →  Users → Admin → Media (Добавляем почтовые ящики)
Configuration → Actions → Triggers → Enable

Если необходима отправка SMS на мобильный, то можно зарегистрироваться на площадке www.smstraffic.ru и подключить к мобильному номеру почтовый ящик вида 79008007060@site.smsmail.ru

7. Ошибки возникающие в процессе работы


Zabbix proxy poller processes more than 75% busy
# nano /usr/local/etc/zabbix_server.conf
StartPollers=20

Zabbix icmp pinger processes more than 75% busy
# nano /usr/local/etc/zabbix_server.conf
StartPingers=10
StartDiscoverers=10

Zabbix unreachable poller processes more than 75% busy
# nano /usr/local/etc/zabbix_server.conf
StartPollersUnreachable=10

Это оптимальные параметры под мою систему (Hosts = 150)

Литература:

3 комментария: