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

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

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

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

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

Требования

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

Примечание: CentOS использует MariaDB вместо MySQL, но во время установки программ это не вызовет никаких проблем.

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

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

ssh 8host@first_server_ip_address

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

sudo 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.qLbOPP: Header V4 DSA/SHA1 Signature, key ID 79ea5ed4: NOKEY
Preparing...                          ################################# [100%] Updating / installing...
1:zabbix-release-3.0-1.el7         ################################# [100%]

Теперь можно установить Zabbix с поддержкой MySQL:

sudo yum install zabbix-server-mysql zabbix-web-mysql

Во время установки будет запрошен GPG-ключ.

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

sudo yum install zabbix-agent

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

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

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

mysql -uroot -p

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

create database zabbix character set utf8;

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

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

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

flush privileges;

Закройте MySQL:

quit;

Импортируйте базовую схему БД Zabbix, которая поставляется вместе с программой. Откройте каталог:

cd /usr/share/doc/zabbix-server-mysql-3.0.4/

Чтобы импортировать данные в новую БД, запустите:

zcat create.sql.gz | mysql -uzabbix -p zabbix

Примечание: Поскольку данные не сжаты, используется команда zcat.

zcat 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 vi /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/httpd/conf.d/ и автоматически загружается Apache. Откройте файл:

sudo vi /etc/httpd/conf.d/zabbix.conf

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

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

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

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

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

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

sudo systemctl restart httpd

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

sudo systemctl start zabbix-server

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

sudo systemctl status zabbix-server

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

zabbix-server.service - Zabbix Server
Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; disabled; vendor preset: disabled)
Active: :active (running) since Fri 2016-08-05 07:16:35 UTC; 2s ago
Process: 10033 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, чтобы перейти к последней странице.

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

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

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

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

ssh 8host@second_server_ip_address

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

sudo 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.jnLROO: Header V4 DSA/SHA1 Signature, key ID 79ea5ed4: NOKEY
Preparing...                          ################################# [100%] Updating / installing...
1:zabbix-release-3.0-1.el7         ################################# [100%]

Затем установите агент Zabbix:

sudo yum install zabbix-agent

Подтвердите импорт GPG-ключа.

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

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

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

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

cat /etc/zabbix/zabbix_agentd.psk

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

bd7ebdc1ae80fb66e8102d6016671a4feabf489cf2692ee473512771c4903ed8

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

sudo vi /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 (/usr/lib/systemd/system/zabbix-agent.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2016-08-05 08:17:07 UTC; 5s ago
Process: 9507 ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE (code=exited, status=0/SUCCESS)
...

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

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: , , , ,

1 комментарий

Добавить комментарий