Zabbix — система мониторинга состояния удаленных серверов, в статье разобрана установка и настройка Zabbix на сервере с системой CentOS 7. В конченом итоге получается работоспособная система мониторинга, в которую остается добавлять хосты, состояние которых будет контролироваться, и задавать опции мониторинга.
Установка MySQL и настройка его для работы с сервером мониторинга
Прежде всего подготовим систему. Нам понадобится сервер баз данных
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update
yum install mysql-server
После установки запустим его и проверим статус
systemctl start mysqld
systemctl status mysqld
● mysqld.service — MySQL Community Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Вс 2017-06-25 16:43:43 +05; 6s ago
Process: 2630 ExecStartPost=/usr/bin/mysql-systemd-start post (code=exited, status=0/SUCCESS)
Process: 2566 ExecStartPre=/usr/bin/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
Main PID: 2629 (mysqld_safe)
CGroup: /system.slice/mysqld.service
├─2629 /bin/sh /usr/bin/mysqld_safe —basedir=/usr
└─2794 /usr/sbin/mysqld —basedir=/usr —datadir=/var/lib/mys…
mysql_secure_installation
Скрипт, осуществляющий безопасную установку mysql настраивает самые важные опции безопасности, он применим и на Debian подобных системах
В псевдографическом интерфейсе после выполнения последней команды возникает ряд вопросов — пароль root следует сменить, пользователей существующих по умолчанию удалить, возможность удаленного подключения оставляется в случае необходимости.
mysql -u root -p
Авторизуемся в консоли и вводим пароль заданный на предыдущем шаге
mysql>
Проверяем, что ошибок не возникает выполняя базовый запрос show databases;
После этого выходим
Exit;
Установка и настройка Zabbix сервера
Переходим к установке и настройке собственно Zabbix
rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
В выводе при этом наблюдаем:
Retrieving http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
warning: /var/tmp/rpm-tmp.YNwOup: Header V4 DSA/SHA1 Signature, key ID 79ea5ed4: NOKEY
Preparing… (10################################# [100%]
Updating / installing…
1:zabbix-release-3.0-1.el7 ( ################################# [100%]
Устанавливаем zabbix-server
yum install zabbix-server-mysql zabbix-web-mysql
Установка zabbix-agent
Устанавливаем агент вводя в возникающих диалогах y
yum install zabbix-agent
Агент нужно будет поставить на каждый клиент за которым будет наблюдать система мониторинга, также ставим его на сам сервер чтобы отслеживать и его состояние.
Для шифрования соединения между сервером и агентом будем использовать PSK — pre-shared keys
Генерируем ключ
sh -c "openssl rand -hex 32 > /etc/zabbix/zabbix_agentd.psk"
Затем просматриваем его
cat /etc/zabbix/zabbix_agentd.psk
Открываем конфигурационный файл Zabbix агента для редактирования
mcedit /etc/zabbix/zabbix_agentd.conf
В нем находим секцию, отвечающая за работу сервера и меняем IP адрес (можно узнать выполнив ip a в консоли)
### Option: Server
Server=123.123.123.123
В том же файле найдем опцию, отвечающую за TCP соединение и добавим в блок приведенную ниже строку задающую шифрование соединения при помощи psk.
### Option: TLSConnect
TLSConnect=psk
Аналогично с блоком TLSAccept
### Option: TLSAccept
TLSAccept=psk
В блоке ### Option: TLSPSKIdentity установим для директивы TLSPSKIdentity уникальное имя ключа
TLSPSKIdentity=PSK TUTORIAL
При работе через веб интерфейс и добавлении хоста будет использоваться PSK ID
В блоке ### Option: TLSPSKFile задаем расположение на сервере файла с созданным ранее psk ключом.
TLSPSKFile=/etc/zabbix/zabbix_agentd.psk
Базовая установка и настройка Zabbix на этом завершена — запускаем сервис и проверяем его статус
systemctl start zabbix-agent
systemctl status zabbix-agent
Вывод должен говорить о том, что служба запущена и нормально работает
● zabbix-agent.service — Zabbix Agent
Loaded: loaded (/usr/lib/systemd/system/zabbix-agent.service; enabled; vendor preset: disabled)
Active: active (running) since Вс 2017-06-25 18:17:00 +05; 14s ago
Main PID: 10911 (zabbix_agentd)
CGroup: /system.slice/zabbix-agent.service
├─10911 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd….
├─10912 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
├─10913 /usr/sbin/zabbix_agentd: listener #1 [waiting for con…
├─10914 /usr/sbin/zabbix_agentd: listener #2 [waiting for con…
├─10915 /usr/sbin/zabbix_agentd: listener #3 [waiting for con…
└─10916 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec…
Добавляем в автозагрузку при старте системы
systemctl enable zabbix-agent
А также сам zabbix
systemctl enable zabbix-server
Настраиваем MySQL для работы с Zabbix
mysql -u root -p
CREATE DATABASE zabbix CHARACTER SET utf8;
GRANT ALL PRIVILEGES ON zabbix.* to zabbix@localhost IDENTIFIED BY 'password';
QUIT;
Далее переходим в каталог, который создался при установке пакета и закачиваем данные в базу
cd /usr/share/doc/zabbix-server-mysql-3.0.9
zcat create.sql.gz | mysql -uzabbix -p zabbix
Правим конфиг Zabbix сервера
mcedit /etc/zabbix/zabbix_server.conf
Находим блок ### Option: DBPassword и вставляем в него директиву DBPassword=password, где после знака «равно» указан текущий пароль доступа к БД
Поскольку управлять мониторингом будем через веб-интерфейс потребуется установить веб-сервер и настроить виртуальный хост
yum install httpd
systemctl start httpd
Добавляем в автозагрузку
systemctl enable httpd
Редактируем конфигурационный файл httpd задавая настройки часового пояса. Остальные настройки оставляем по умолчанию
mcedit /etc/httpd/conf.d/zabbix.conf
# # Zabbix monitoring system php web frontend # Alias /zabbix /usr/share/zabbix <Directory "/usr/share/zabbix"> Options FollowSymLinks AllowOverride None Require all granted <IfModule mod_php5.c> php_value max_execution_time 300 php_value memory_limit 128M php_value post_max_size 16M php_value upload_max_filesize 2M php_value max_input_time 300 php_value always_populate_raw_post_data -1 # php_value date.timezone Europe/Riga php_value date.timezone Asia/Yekaterinburg ...
Перезапускаем веб-сервер
systemctl restart httpd
Через браузер обращаемся к хосту прописывая IP адрес сервера, к которому добавляем /zabbix
Если при этом появляется ошибка о невозможности подключения выполняем команду iptables -F, которая сбросит существующие правила iptables.
Несколько шагов установки можно пройти оставив настройки по умолчанию, необходимо задать только реквизиты подключения к серверу баз данных
При завершении диалога создается файл /etc/zabbix/web/zabbix.conf.php. В интерфейсе Zabbix можно авторизоваться с логином admin и паролем zabbix
Добавление хоста в мониторинг Zabbix
В веб-интерфейсе необходимо авторизоваться, затем перейти в раздел
Configuration, затем Hosts в верхнем меню. После чего нажать Create host
В качестве Host name и IP ADDRESS нужно указать имя хоста и IP адрес клиентского сервера, состояние которого будет отслеживаться
Затем хост добавляется в группу, которая выбирается из списка или создается, по умолчанию хосты добавляются в группу Linux Servers. Добавив хост в группу потребуется нажать Templates.
В поиске нужно набрать Template OS Linux и нажать Add чтобы добавить шаблон к хосту.
Далее выбирваем вкладку Encryption и выбираем PSK для Connections to host и Connections from host. Устанавливаем для PSK identity опцию PSK TUTORIAL, что является значением параметра TLSPSKIdentity для агента, котороые мы определили раньше.
Просматриваем ключ на машине с агентом Zabbix
cat /etc/zabbix/zabbix_agentd.psk
И копируем его устанавливая в качестве PSK value
Теперь мы видим новый хост, добавленный для мониторинга, а на вкладках Monitoring и Latest data отображается информация о состоянии этого хоста.
Для каждого нового хоста будет необходимо устанавливать Zabbix-agent и генерировать PSK ключ, затем добавлять агент на сервере в качестве хоста для мониторинга. Конфигурация, таким образом, довольно простая, при этом она позволяет оргаинзовать распространенную систему мониторинга за большим парком серверов.
Официальный сайт проекта.
Менее популярным аналогом Zabbix является сервер мониторинга Nagios, для отслеживания состояния одного сервера обычно достаточно Monit.