Мониторинг удалённых серверов с помощью Zabbix в Ubuntu 16.04

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

Zabbix использует архитектуру «клиент-сервер». На отслеживаемую машину устанавливается агент, который собирает данные и передаёт их серверу Zabbix. Версия Zabbix 3 поддерживает шифрованные подключения между сервером и клиентами, что обеспечивает надёжную защиту данных.

Сервер Zabbix хранит данные в реляционной БД MySQL, PostgreSQL или Oracle. Также он предоставляет веб-интерфейс, с помощью которого можно просматривать данные и настраивать программу.

Данное руководство поможет установить и настроить Zabbix на двух машинах, одна из которых будет использоваться как сервер, а вторая – как отслеживаемый клиент. Также в руководстве используется СУБД MySQL (для хранения данных) и веб-сервер Apache (для обслуживания веб-интерфейса).

Требования

  • Два настроенных сервера Ubuntu 16.04 (руководство по настройке можно найти по этой ссылке).
  • Пользователь с доступом к sudo на каждом сервере.
  • Предварительно установленные Apache, MySQL и PHP на одном из серверов. Установить этот стек можно с помощью этого руководства.

1: Установка сервера Zabbix

Перейдите на сервер, на который вы ранее установили MySQL, Apache и PHP. Эта машина будет использоваться в качестве сервера Zabbix.

ssh 8host@first_server_ip_address

Теперь нужно установить модули PHP, от которых зависит Zabbix. Обновите индекс пакетов:

sudo apt-get update

Установите модули:

sudo apt-get install php7.0-xml php7.0-bcmath php7.0-mbstring

По умолчанию пакеты Zabbix доступны в репозитории, но они устарели. Чтобы установить последнюю стабильную версию Zabbix, добавьте официальный репозиторий. Установите конфигурационный пакет репозитория:

wget http://repo.zabbix.com/zabbix/3.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.2-1+xenial_all.deb
sudo dpkg -i zabbix-release_3.2-1+xenial_all.deb
Selecting previously unselected package zabbix-release.
(Reading database ... 55276 files and directories currently installed.)
Preparing to unpack zabbix-release_3.2-1+xenial_all.deb ...
Unpacking zabbix-release (3.2-1+xenial) ...
Setting up zabbix-release (3.2-1+xenial) ...

Обновите индекс пакетов:

sudo apt-get update

Установите сервер Zabbix и фронтенд с поддержкой MySQL.

sudo apt-get install zabbix-server-mysql zabbix-frontend-php

Теперь нужно установить агент Zabbix, который будет собирать данные о сервере Zabbix:

sudo apt-get install zabbix-agent

2: Настройка базы данных MySQL для Zabbix

Создайте новую БД MySQL и добавьте в неё базовые данные. Также нужно создать специального пользователя для Zabbix.

Откройте MySQL как пользователь root. По запросу введите MySQL root-пароль.

mysql -uroot -p

Создайте БД Zabbix с поддержкой символов UTF-8:

create database zabbix character set utf8 collate utf8_bin;

Затем создайте пользователя, с помощью которого Zabbix сможет взаимодействовать с БД, и выберите пароль для него:

grant all privileges on zabbix.* to zabbix@localhost identified by 'your_password';

Сбросьте привилегии:

flush privileges;

Закройте MySQL:

quit;

Импортируйте базовую схему БД Zabbix, которая поставляется вместе с программой с помощью команды zcat (данные в файле сжаты):

zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix

Введите пароль пользователя zabbix.

После выполнения команды вы можете получить ошибку:

ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password: YES)

Она возникает при введении неправильного пароля; возможно, вместо пароля пользователя zabbix вы ввели пароль root.

Чтобы сервер Zabbix мог взаимодействовать с БД, нужно добавить пароль пользователя БД в конфигурационный файл Zabbix:

sudo nano /etc/zabbix/zabbix_server.conf

Найдите следующий раздел:

### Option: DBPassword
#       Database password. Ignored for SQLite.
#       Comment this line if no password is used.
#
# Mandatory: no
# Default:
# DBPassword=

Эти параметры настраивают подключение к БД. В параметре DBPassword нужно указать пароль пользователя базы данных.

DBPassword=your_zabbix_mysql_password

Теперь нужно настроить PHP для поддержки веб-интерфейса Zabbix.

3: Настройка PHP для поддержки Zabbix

Веб-интерфейс Zabbix написан на PHP, потому PHP требует дополнительной настройки для его поддержки. Во время установки Zabbix создаёт конфигурационный файл Apache, в котором и хранятся все необходимые параметры. Этот файл находится в /etc/zabbix и автоматически загружается Apache. Откройте файл:

sudo nano /etc/zabbix/apache.conf

В файле находятся параметры PHP для поддержки веб-интерфейса Zabbix. Укажите правильный часовой пояс (по умолчанию этот параметр закомментирован).

...
<IfModule mod_php7.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
</IfModule>

Раскомментируйте выделенную красным строку и укажите в ней свой часовой пояс.

Примечание: Список часовых поясов можно найти здесь.

Сохраните и закройте файл.

Перезапустите Apache:

sudo systemctl restart apache2

Запустите сервер Zabbix:

sudo systemctl start zabbix-server

Убедитесь, что сервер Zabbix успешно запущен:

sudo systemctl status zabbix-server

Команда должна вернуть:

zabbix-server.service - Zabbix Server
Loaded: loaded (/lib/systemd/system/zabbix-server.service; disabled; vendor preset: enabled)
Active: :active (running) since Thu 2017-06-08 06:40:43 UTC; 6s ago
Process: 15201 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)
...

Теперь включите автозапуск Zabbix:

sudo systemctl enable zabbix-server

Итак, сервер запущен и подключен к БД.

4: Установка веб-интерфейса Zabbix

Веб-интерфейс Zabbix позволяет просматривать отчёты и добавлять новые хосты, которые нужно мониторить. Чтобы начать установку, запустите браузер и откройте ссылку:

http://your_zabbix_server_ip_address/zabbix/

На экране появится приветственная страница. Нажмите Next step.

На следующем экране вы увидите таблицу, в которой перечислены все требования и зависимости, необходимые для запуска Zabbix. Все строки в этом списке должны быть отмечены зелёным OK в последнем столбце. Если это так, то окружение полностью готово к работе Zabbix. Просмотрите весь список и в случае необходимости установите недостающие компоненты. Затем нажмите Next step.

На следующей странице нужно указать данные для подключения к БД.

Веб-интерфейс Zabbix требует доступа к БД, чтобы иметь возможность управлять хостами и читать данные для отображения. Введите учётные данные БД MySQL и нажмите Next step, чтобы продолжить.

На следующем экране оставить параметрам их значения по умолчанию. Поле Name опционально. С его помощью интерфейс отличает один сервер от другого (при наличии нескольких серверов Zabbix). Поскольку в этом руководстве используется только один мониторящий сервер, можно просто нажать Next step.

На следующем экране появится предварительный обзор установки. Тут вы можете убедиться, что все данные указаны правильно. Нажмите Next step, чтобы перейти к последней странице.

Установка веб-интерфейса завершена. Во время установки будет создан конфигурационный файл /usr/share/zabbix/conf/zabbix.conf.php, который можно скопировать и использовать в дальнейшей работе. Нажмите Finish, чтобы получить доступ к форме аутентификации. Имя пользователя и пароль по умолчанию: Admin и zabbix соответственно.

Но прежде чем открыть интерфейс, нужно подготовить клиентский сервер Zabbix.

5: Установка и настройка клиента Zabbix

Перейдите на второй сервер:

ssh 8host@second_server_ip_address

Как и на первом сервере, запустите следующие команды, чтобы установить официальный репозиторий Zabbix:

wget http://repo.zabbix.com/zabbix/3.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.2-1+xenial_all.deb
sudo dpkg -i zabbix-release_3.2-1+xenial_all.deb

Обновите индекс пакетов:

sudo apt-get update

Установите агент Zabbix:

sudo apt-get install zabbix-agent

Zabbix поддерживает шифрование на основе сертификатов. Настройка центра сертификации выходит за рамки данного руководства, но вы можете использовать предварительно согласованный ключ (PSK), чтобы обеспечить соединение между сервером и агентом.

Сгенерируйте PSK:

sudo sh -c "openssl rand -hex 32 > /etc/zabbix/zabbix_agentd.psk"

Скопируйте ключ, он понадобится при настройке хоста:

cat /etc/zabbix/zabbix_agentd.psk

Ключ имеет примерно такой вид:

cd12686e166a80aa09a227ae5f97834eaa3d5ae686d2ae39590f17ef85dd6de5

Откорректируйте настройки агента Zabbix, чтобы обеспечить безопасное соединение с сервером Zabbix.

sudo nano /etc/zabbix/zabbix_agentd.conf

Файл хранит множество параметров, каждый из которых содержит информативный комментарий.

Укажите IP-адрес сервера Zabbix:

### Option: Server
#       List of comma delimited IP addresses (or hostnames) of Zabbix servers.
#       Incoming connections will be accepted only from the hosts listed here.
#       If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' are treated equally.
#
# Mandatory: no
# Default:
# Server=
Server=127.0.0.1

Замените стандартное значение строки Server= IP-адресом сервера Zabbix.

Server=your_zabbix_server_ip_address

Затем найдите параметры для настройки безопасного соединения (раздел TSLConnect) и включите поддержку PSK.

### Option: TLSConnect
#       How the agent should connect to server or proxy. Used for active checks.
#       Only one value can be specified:
#               unencrypted - connect without encryption
#               psk         - connect using TLS and a pre-shared key
#               cert        - connect using TLS and a certificate
#
# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
# Default:
# TLSConnect=unencrypted

Измените значение строки TLSConnect:

TLSConnect=psk

Найдите раздел TLSAccept:

### Option: TLSAccept
#       What incoming connections to accept.
#       Multiple values can be specified, separated by comma:
#               unencrypted - accept connections without encryption
#               psk         - accept connections secured with TLS and a pre-shared key
#               cert        - accept connections secured with TLS and a certificate
#
# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
# Default:
# TLSAccept=unencrypted

Настройте входящие соединения для поддержки psk:

TLSAccept=psk
Найдите раздел TLSPSKIdentity:
### Option: TLSPSKIdentity
#       Unique, case sensitive string used to identify the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKIdentity=

Выберите уникальное имя для ключа PSK:

TLSPSKIdentity=PSK 001

Теперь этот уникальный идентификатор ключа можно использовать при добавлении новых хостов через веб-интерфейс.

Затем укажите, в каком файле хранится ключ. Найдите опцию TLSPSKFile:

### Option: TLSPSKFile
#       Full pathname of a file containing the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKFile=

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

TLSPSKFile=/etc/zabbix/zabbix_agentd.psk

Сохраните и закройте файл.

Запустите агент Zabbix и настройте его автозапуск:

sudo systemctl start zabbix-agent
sudo systemctl enable zabbix-agent

На всякий случай убедитесь, что агент Zabbix успешно запущен:

sudo systemctl status zabbix-agent

Команда должна вернуть:

zabbix-agent.service - Zabbix Agent
Loaded: loaded (/lib/systemd/system/zabbix-agent.service; disabled; vendor preset: enabled)
Active: active (running) since Thu 2017-06-08 08:33:52 UTC; 4s ago
Process: 18185 ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE (code=exited, status=0/SUCCESS)
...

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

Примечание: Если вы используете UFW, настройте подключения к порту 10050

sudo ufw allow 10050/tcp

Читайте также: Настройка брандмауэра UFW на сервере Ubuntu 16.04

6: Добавление хоста на сервер Zabbix

Чтобы сервер Zabbix начал отслеживать установленный агент, нужно добавить его в список хостов через веб-интерфейс.

Откройте интерфейс Zabbix:

http://first_server_ip_address/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 укажите имя ключа, установленное в параметре TLSPSKIdentity на агенте Zabbix (в данном случае PSK 001).

В поле PSK укажите ключ, который хранится в /etc/zabbix/zabbix_agentd.psk на агенте.

Нажмите Add, чтобы добавить хост.

Новый хост появится в списке. Через несколько секунд можно открыть Monitoring → Latest data и просмотреть данные агента.

Чтобы убедиться, что всё работает должным образом, остановите клиентский сервер. В такой ситуации сервер Zabbix должен сообщить о проблеме.

Zabbix agent is unreachable for 5 minutes.

Чтобы добавить новые клиенты Zabbix, установите программное обеспечение агента Zabbix, создайте PSK, настройте агент и добавьте его в список веб-консоли.

Tags: ,