Инструменты пользователя

Инструменты сайта


zabbix

Zabbix

Zabbix - это программное обеспечение для мониторинга многочисленных параметров сети, жизнеспособности и целостности серверов.

Zabbix состоит из нескольких важных компонентов программного обеспечения:

Сервер

Zabbix сервер - является главным компонентом, которому агенты сообщают информацию и статистику о доступности и целостности. Сервер является главным хранилищем, в котором хранятся все данные конфигурации, статистики, а также оперативные данные.

Хранилище базы данных

Как таковая вся информация о конфигурации, а так же данные собранные Zabbix хранятся в базе данных.

Веб интерфейс

Веб интерфейс обеспечивает легкий доступ к Zabbix из любого места с любой платформы. Интерфейс является частью Zabbix сервера и обычно (но не обязательно) работает на том же самом физическом компьютере, что и сервер.

Прокси

Zabbix прокси может собирать данные о производительности и доступности в помощь Zabbix серверу. Прокси является опциональной частью Zabbix; однако он может быть полезен для того чтобы распределить нагрузку с одного Zabbix сервера.

Агент

Zabbix агенты разворачиваются на наблюдаемых целях для активного мониторинга за локальными ресурсами и приложениями, и для отправки собранных данных Zabbix серверу.

Установка Zabbix

Сборка Zabbix из исходников

Для начала нам нужно подготовить окружение. Для этого установим gcc и make.

apt-get install gcc make

Создадим пользователя и группу Zabbix.

groupadd zabbix
useradd -r -g zabbix zabbix

Нам необходим архив с исходниками, который можно взять по адресу http://www.zabbix.com/download.php

wget -O zabbix-2.0.7.tar.gz http://sourceforge.net/settings/mirror_choices?projectname=zabbix&filename=ZABBIX%20Latest%20Stable/2.0.7/zabbix-2.0.7.tar.gz

Распакуем архив

tar -xvf zabbix-2.0.7.tar.gz

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

Если сервер mysql стоит на отдельном сервере.

sudo apt-get install libmysqlclient-dev

При использовании проверок SNMP,требуется установка:

apt-get install libsnmp-dev

Если мы хотим мониторить Web сервисы, то требуется установка:

apt-get install libcurl4-openssl-dev

Запускаем конфигурирование:

./configure  --enable-server --enable-agent  --with-mysql --with-net-snmp --with-ldap --with-libcurl --with-ssh2

Если при конфигурировании возникают ошибки, убедитесь, что вы не забыли поставить что-либо из требуемого окружения.

Запускаем установку zabbix:

./make install

Затем копируем загрузочные скрипты в init.d:

cp misc/init.d/debian/zabbix-server /etc/init.d/
cp misc/init.d/debian/zabbix-agent /etc/init.d/

Заменим шапки (то что начинается с #) на представленные ниже

/etc/init.d/zabbix-server

#! /bin/sh
### BEGIN INIT INFO
# Provides:          zabbix-server
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Should-Start:      mysql
# Should-Stop:       mysql
# Short-Description: Start zabbix-server daemon
### END INIT INFO

/etc/init.d/zabbix-agent

#!/bin/sh
### BEGIN INIT INFO
# Provides: zabbix-agent
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Should-Start: $all
# Should-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/stop Zabbix-agent
# Description: Start/stop Zabbix-agent
### END INIT INFO

Добавляем агента и сервер в автозагрузку

update-rc.d zabbix-server defaults
update-rc.d zabbix-agent defaults

Установка из репозитория (непроверенный вариант)

wget http://repo.zabbix.com/zabbix/2.0/debian/pool/main/z/zabbix-release/zabbix-release_2.0-1squeeze_all.deb
dpkg -i zabbix-release_2.0-1squeeze_all.deb
apt-get update
apt-get install zabix-agent
apt-get install zabix-server

Добавляем агента и сервер в автозагрузку

update-rc.d zabbix-server defaults
update-rc.d zabbix-agent defaults

http://thelinuxforce.org/article/18

Настройка MySQL

Создаем базу и пользователя zabbix.

mysql -u root -p 
mysql>create database zabbix character set utf8;
mysql>CREATE USER zabbix@zabbix.vzjlot.ru IDENTIFIED BY 'пароль';
mysql>GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@zabbix.vzjlot.ru;
mysql>quit;

Заливаем базы из папки /zabbix-*/database/mysql в базу zabbix.

mysql -uroot -p -b zabbix < schema.sql
mysql -uroot -p -b zabbix < images.sql
mysql -uroot -p -b zabbix < data.sql

Перенести базы на удаленный компьютер можно посредством ssh.

scp -r ~/zabbix-2.0.7/database/mysql user@192.168.0.12:/home/user/ 

В конфиге Zabbix сервера необходимо прописать настройки подключения к БД.

/usr/local/etc/zabbix_server.conf
DBName=zabbix
DBUser=zabbix
DBPassword=SaI09_
DBHost=192.168.0.12

Установка фронтенда Zabbix

Если не устоновлено, то устанавливаем WEB сервер и PHP5.

apt-get install apache2 php5 php5-mysql php5-gd

Копируем содержимое папки ~/zabbix-*/frontends/php в директорию веб сервера.

cp -R ~/zabbix-*/frontends/php var/www/zabbix/

Изменим владельца файлов.

chown -R www-data:www-data /var/www/zabbix/

Добавляем в /etc/apache2/sites-available/default

<VirtualHost *:80>
        ServerAdmin st@vzljot.ru
        ServerName www.zabbix.vzljot.spb
        ServerAlias zabbix.vzljot.spb
        ServerAlias zabbix
        DocumentRoot /var/www/zabbix/
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /var/www/zabbix/>
                Options Indexes FollowSymLinks MultiViews
                DirectoryIndex index.php
                AllowOverride All
                Order Deny,Allow
                allow from all
                </Directory>
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride All
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Перечитываем конфигурационные файлы apache.

apachectl graceful

Добавляем запись в DNS на на контроллере домена vzljot.spb

Переходим на http://zabbix

Жмем Next и исправляем все ошибки указанные в списке красным цветом.

Ошибки

  • php post max size
  • php max execution time
  • php max input time
  • php time zone

Исправляются редактированием файла php.ini(/etc/php5/apache2/php.ini), указываем параметры, которые нам необходимы.

Перезапускаем apach

apachectl graceful

Жмем кнопку Retry в веб-интерфейсе и если все тесты отмечены зеленым OK то переходим к следующем шагу.

Далее веб-интерфейса просит нас ввести данные подключения к базе данных.

Вводим логин пароль и сервер БД жмем Test connection, если ве в порядке идем дальше.

На остальных экранах нажимаем Next.

Пароль на вход по умолчанию admin:zabbix

Если мигает сообщение «Zabbix server is not running:…» проверить log файл zabix и исправить ошибки.

Установка Zabbix агента

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

wget http://repo.zabbix.com/zabbix/2.0/debian/pool/main/z/zabbix-release/zabbix-release_2.0-1squeeze_all.deb
dpkg -i zabbix-release_2.0-1squeeze_all.deb
apt-get update

wget http://repo.zabbix.com/zabbix/2.2/debian/pool/main/z/zabbix-release/zabbix-release_2.2-1+wheezy_all.deb
dpkg -i zabbix-release_2.2-1+wheezy_all.deb
apt-get update

Устанавливаем агента.

apt-get install zabbix-agent

Изменяем конфигурационный файл

/etc/zabbix/zabbix_agent.conf

ServerActive=192.168.0.9
Server=192.168.0.9

Все параметры можно посмотреть здесь https://www.zabbix.com/documentation/ru/2.0/manual/appendix/config/zabbix_agentd

Перезапускаем zabbix агента

service zabbix-agent restart

Добавляем в автозагрузку

update-rc.d zabbix-agent defaults

Добавляем узел в zabbix: Настройка-Узлы сети-Создать узел сети.

Подробный манула по настройке и работе с zabbix https://www.zabbix.com/documentation/start

Настройка отправки уведомлений через Zabbix

E-mail

Администрирование - Способы оповещений - Email

Тип:		Email
SMTP:		сервер 192.168.0.91
SMTP helo:	vzljot.ru
SMTP email:	zabbix.vzljot.ru

SMS

Устанавливаем пакет SmsTools3:

http://smstools3.kekekasvi.com/index.php?p=packages

wget http://smstools3.kekekasvi.com/packages/smstools3-3.1.15.tar.gz

Извлекаем

tar -xvf smstools3-3.1.15.tar.gz

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

cd smstools3

make install

Конфигурируем smstools. правим конфг /etc/smsd.conf

devices = GSM1 # устройство

# папки с сообщениями и логи

outgoing = /var/spool/sms/outgoing
checked = /var/spool/sms/checked
incoming = /var/spool/sms/incoming
logfile = /var/log/smstools/smsd.log

# уровень логирования

loglevel = 5


[GSM1]

# # Windows: /dev/com1, Solaris: /dev/cua/a, Linux /dev/ttyS0
device = /dev/ttyS0

baudrate = 19200

Перезапускаем sms tool

service sms3 restart

Проверяем отправку сообщений

/usr/local/bin/sendsms [номер без плюса 7921***] ["сообщение в кавычках"]

Настроим папку скриптов для zabbix. Правим конфиг /usr/local/etc/zabbix_server.conf

#Изменяем местонахождения скриптов выполняемых в zabbix
AlertScriptPath=/usr/local/bin

Перезапускаем zabbix

service zabbix restart

Из за проблем с правами на создаваемые файлы скрипт sendsms был приведен к следующему виду и назван send:

#!/bin/bash

smsd_user="smsd"

DEST=$1 #телефон
TEXT=$2 #текст сообщения
ECHO=echo

if [ -z "$DEST" ]; then
  printf "Destination(s): "
  read DEST
  if [ -z "$DEST" ]; then
    echo "No destination, stopping."
    exit 1
  fi
fi

if [ -z "$TEXT" ]; then
  printf "Text: "
  read TEXT
  if [ -z "$TEXT" ]; then
    echo "No text, stopping."
    exit 1
  fi
fi

if [ $# -gt 2 ]; then
  n=$#
  while [ $n -gt 1 ]; do
    destinations="$destinations $1"
    shift
    n=`expr $n - 1`
  done
  TEXT=$1
else
  destinations=$DEST
fi

echo "-- "
echo "Text: $TEXT"

for destination in $destinations
do
  echo "To: $destination"
    TMPFILE=`mktemp /var/spool/sms/outgoing/smsd_XXXXXX`
    $ECHO "To: $destination" >> $TMPFILE
    $ECHO "" >> $TMPFILE
    $ECHO -n "$TEXT" >> $TMPFILE
    chmod  775 $TMPFILE
done

Скрипт через который отправляется СМС sms.sh:

#!/bin/bash
to=$1
subject=$2
body=$3

send $to "$subject"

Дальнейшая настройка осуществляется через веб-интерфейс. Сначала идем в Администрирование - Способы оповещений и создаем новый способ оповещений script. Название скрипта должно быть таким же, как и имя файла скрипта в директории AlertScriptsPath sms.sh.

Добавляем себе это оповещение в профиль(Профиль-Оповещения-Добавить), номер пишем в международном формате без знака +.

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

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

Настройка zabbix-agent

Мониторинг осуществляется с сервера zabbix(192.168.0.9) на котором уже установлен zabbix-agent.

Для проверки DHCP использовался скрипт /usr/local/bin/chek_dhcp с параметрами -u -i [сетевой интерфейс], который при рабочем DHCP выдает команду

OK: Received 1 DHCPOFFER(s), max lease time = 0 sec.

Если DHCP не работает

CRITICAL: No DHCPOFFERs were received.

Для работы триггера создан еще один скрипт, который при удачной проверке возвращает 1 при не удачной 0. /usr/local/bin/dhcpn

#!/bin/bash

if  [ "$(check_dhcp -u -i eth1 | cut -c 1)" = "O" ]; then
    echo 1
else
    echo 0
fi

Изменяем конфигурационный файл /usr/local/etc/zabbix_agentd.conf

Добавляем в него строчки

### Option: UserParameter

UserParameter=test.dhcp,/usr/local/bin/check_dhcp -u -i eth1 	#параметр получающий текстовое сообщение о работе DHCP
UserParameter=test.dhcpn,/usr/local/bin/dhcpn			#параметр получающий числовое сообщение

Перезапускаем zabbix-agent

service zabbix-agent restart

Настройка через web интерфейс

Настройка элемента данных "Состояние DHCP".

Переходим в Настройка-Узлы сети-Zabbix server-Элементы данных-Создать элемент

Имя: dhcp Тип: Zabbix агент Ключ: test.dhcp Тип информации: Текст Состояние: Активно

Переходим в Мониторинг-Последние данные-Zabbix agent(Вверху в элементы данных нужно выбрать узел сети Zabbix server)-dhcp-История и видим строки состояния dhcp сервера по времени.

Настройка элемента данных для триггера состояния DHCP

Настройка-Узлы сети-Zabbix server-Элементы данных-Создать элемент

Имя: dhcpn Тип: Zabbix агент Ключ: test.dhcpn Тип информации: Текст Состояние: Активно

Настройка-Узлы сети-Zabbix server-Создать триггер

Имя: dhcpstatus Выражение: {Zabbix server:test.dhcpn.last(0,0)}=0 (если последнее полученное значение «0», то срабатывает триггер). Важность: Чрезмерная

Теперь при неполадках с dhcp будет срабатывать триггер.

Мониторинг DNS на Windows Server 2012

Настройка zabbix-agent

Скачиваем zabbix-agent для windows: http://www.zabbix.com/download.php

Распаковываем в папку C:\Program Files (x86)\Zabbix

В папке /conf меняем конфигурационный файл zabbix_agentd.win.conf

LogFile=C:\Program Files (x86)\Zabbix\zabbix_agentd.log

Server=192.168.0.9

ServerActive=192.168.0.9

# Пользовательские параметры для мониогринга dns службы

UserParameter=dns.status,chcp 861 >null & sc query dns | find "RUNNING" >nul&&(Echo dns is running!)||(Echo dns not started!)

UserParameter=dns.statusn,chcp 861 >null & sc query dns | find "RUNNING" >nul&&(Echo 1)||(Echo 0)

Создаем bat файл:

"C:\Program Files (x86)\Zabbix\bin\win64\zabbix_agentd.exe" --config "C:\Program Files (x86)\Zabbix\conf\zabbix_agentd.win.conf" --install

И запускаем его от имени администратора.

Переходим в службы и проверяем состояние Zabbix Agent.

Настройка через web интерфейс

Настройка элемента данных "Состояние DNS"

Переходим в Настройка-Узлы сети-Windows server-Элементы данных-Создать элемент

Имя: dns Тип: Zabbix агент Ключ: dns.status Тип информации: Текст Состояние: Активно

Переходим в Мониторинг-Последние данные-Windows server-dns-История и видим строки состояния dns сервера по времени.

Настройка элемента данных для триггера состояния DNS

Настройка-Узлы сети-Windows server-Элементы данных-Создать элемент

Имя: dnsstatusn Тип: Zabbix агент Ключ: dns.statusn Тип информации: Числовой(целое положительное) Состояние: Активно

Настройка-Узлы сети-Windows server-Создать триггер

Имя: dnsstatus Выражение: {vzljot.spb 10.1.0.31:dns.statusn.last(0)}=0 (если последнее полученное значение «0», то срабатывает триггер). Важность: Чрезмерная

Теперь при неполадках с dns будет срабатывать триггер.

Мониторинг доступности узла

Создаем шаблон

Настройки-Шаблоны-Создать шаблон

Заполняем.

  • Имя шаблона: availability
  • Выводимое имя: availability

Сохраняем.

Создаем в шаблоне элемент данных. Настройки-Шаблоны Выбираем созданный шаблон, в нем переходим в Элементы данных и нажимаем Создать элемент данных.(подробнее https://www.zabbix.com/documentation/ru/2.0/manual/config/items/item)

Заполняем.

Сохраняем.

Создаем в шаблоне тригер Настройки-Шаблоны Выбираем созданный шаблон, в нем переходим в тригеры и нажимаем Создать тригер.

Заполняем.

  • Имя: not available
  • Выражение: {availability:icmppingloss[,5,,,].last(0)}=100 (если у 5 отпрвленных пакетов icmp процент потерь равен 100, тогда срабатывает тригер).

Сохраняем.

Создаем действие на тригер. Настройка-Действия(Источник событий: тригер)-Создать действие.

Заполняем. Вкладка Действие.

  • Имя:host not available
  • Тема по умолчанию: ZABBIX. HOST {TRIGGER.NAME}: {HOST.IP1} {HOST.NAME1}
  • Сообщение по умолчанию: ZABBIX. HOST {TRIGGER.NAME}: {HOST.IP1} {HOST.NAME1}
  • Ставим галку «Сообщение о восстановлении»
  • Тема восстановления: ZABBIX. HOST is available: {HOST.IP1} {HOST.NAME1}
  • Сообщение о восстановлении: ZABBIX. HOST is available: {HOST.IP1} {HOST.NAME1}

Вкладка Условия.

  • Значение триггера = «ПРОБЛЕМА»
  • Имя триггера содержит «not available»

Вкладка Операции. Заполняем кому и какие сообщения отправлять.

Сохраняем.

Применяем созданный шаблон к наблюдаемому узлу.

Настройки-Узлы сети.

Выбираем узел, заходим на вкладку Шаблоны, нажимаем Добавить, выбираем available, жмем Выбрать, сохраняем узел сети.

Настройка закончена

Настройка карты сети

Настройка-Карты сетей-Создать карту.

Заполняем.

  • Имя:masterskaya
  • Ширина:1200
  • Высота:900

Сохраняем.

Редактируем карту.

Настройка-Карты сетей-Нажимаем на название редактируемой карты.

Добавляем два узла и соеденяем их.

Иконка +, щелкаем левой кнопкой на появившемся элементе.

Заполняем.

  • Тип: Узел сети
  • Подпись: netup
  • Узел сети:выбрать-выбираем необходимый узел.
  • Иконка по умолчанию: Server_(48)

Применить. Закрыть.

По аналогии создаем второй узел сети.

Для создания связи выделяем оба узла, нажимаем Связь+

Изменяем связь.

Заполняем подпись.

Индикаторы связи-Добавить, выбираем тригер при котором меняется цвет связи.

Применить. Закрыть.

По аналогии создаются остальные узлы в сети.

Ошибка в логе PID file /run/zabbix/zabbix_agentd.pid not readable (yet?) after start.

ОС: Centos 7 zabbix agent: Zabbix agent v2.4.7 (revision 56694)

[153256.996411] systemd[1]: Starting Zabbix Agent...
[153257.012443] systemd[1]: PID file /run/zabbix/zabbix_agentd.pid not readable (yet?) after start.
[153347.244398] systemd[1]: zabbix-agent.service start operation timed out. Terminating.
[153347.244780] systemd[1]: Failed to start Zabbix Agent.
[153347.244901] systemd[1]: Unit zabbix-agent.service entered failed state.
[153347.244988] systemd[1]: zabbix-agent.service failed.
[153347.494406] systemd[1]: zabbix-agent.service holdoff time over, scheduling restart.
$ systemctl status zabbix-agent.service
 
● zabbix-agent.service - Zabbix Agent
   Loaded: loaded (/usr/lib/systemd/system/zabbix-agent.service; enabled; vendor preset: disabled)
   Active: activating (start) since Чт 2016-03-24 12:49:32 MSK; 1min 0s ago
  Process: 813 ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE (code=exited, status=0/SUCCESS)
 Main PID: 681 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/zabbix-agent.service
           ├─764 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
           ├─765 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
           ├─766 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
           ├─767 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
           └─768 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]

Необходимо скопировать файл /usr/lib/systemd/system/zabbix-agent.service в /etc/systemd/system и поменять следующие параметры PIDFile и KillMode

[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
 
[Service]
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
 
[Service]
Environment="CONFFILE=/etc/zabbix/zabbix_agentd.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-agent
Type=forking
Restart=always
#PIDFile=/run/zabbix/zabbix_agentd.pid
PIDFile=/tmp/zabbix_agentd.pid
#KillMode=process
KillMode=control-group
ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE
 
[Install]
WantedBy=multi-user.target

Перезагружаем конфиги systemd и перезапускаем zabbix agent

systemctl daemon-reload
systemctl restart zabbix-agent

Смотрим, что все в порядке.

[153986.589717] systemd[1]: Starting Zabbix Agent...
[153986.659732] systemd[1]: Started Zabbix Agent.
$ systemctl status zabbix-agent.service
 
● zabbix-agent.service - Zabbix Agent
   Loaded: loaded (/etc/systemd/system/zabbix-agent.service; enabled; vendor preset: disabled)
   Active: active (running) since Чт 2016-03-24 13:03:12 MSK; 14min ago
  Process: 1081 ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE (code=exited, status=0/SUCCESS)
 Main PID: 1083 (zabbix_agentd)
   CGroup: /system.slice/zabbix-agent.service
           ├─1083 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
           ├─1084 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
           ├─1085 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
           ├─1086 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
           └─1087 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
zabbix.txt · Последние изменения: 2016/03/24 06:20 — sander