Настройка Zabbix

Обсудить
Zabbix

Введение

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

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

Zabbix сервер располагает свои данные в реляционной базе данных, для работы с которой можно использовать MySQL, PostgreSQL или Oracle.

В этой статье я хочу рассказать о настройке двух машин – одной в качестве сервера, а другой в качестве клиента, которого вы будете отслеживать. Для записи данных будет использоваться MySQL, а Apache – для веб-интерфейса.

Требования

  • 2 сервера с установленным CentOS 7 и пользователями с sudo-правами;
  • на одном из серверов должно быть установлено следующее ПО: Apache, MySQL (либо MariaDB) и PHP.

Шаг 1

Установка сервера

Первое, что необходимо сделать, – это установить сервер Zabbix на тот сервер, где у вас установлены MySQL, Apache и PHP. Эта машина станет Zabbix сервером. Авторизуйтесь:

$ ssh sammy@ip_адрес_вашего_сервера

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

$ 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

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

Шаг 2

Настройка СУБД MySQL

На этом этапе нужно создать новую базу MySQL и внести в нее базовую информацию для того, чтобы она подходила для использования Zabbix. Второе важное действие – создание для этой базы данных специального пользователя (чтобы не использовать root-аккаунт).

Авторизуйтесь в MySQL в качестве суперпользователя, используя тот root-пароль, который вы задали во время установки:

$ mysql -uroot -p

Создайте базу данных Zabbix с поддержкой UTF-8:

> create database zabbix character set utf8;

Перейдем к новому пользователю – нужно не только создать его, но также дать доступ к новой базе данных и установить пароль:

> grant all privileges on zabbix.* to zabbix@localhost identified by 'пароль';

Примените новые правила:

> flush privileges;

Затем выйдите из консоли базы данных.

> quit;

Теперь перейдем к импортированию необходимой схемы и данных. После установки Zabbix у нас уже есть необходимый файл, который просто необходимо импортировать. Сначала перейдите в нужную директорию:

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

Затем выполните следующую команду. Благодаря ей все необходимые данные будут импортированы в базу данных Zabbix.

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

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

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

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

То убедитесь, что вы ввели правильный пароль (не от root-пользователя, а именно от пользователя zabbix).

Для того, чтобы сервер 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=пароль_от_mysql_zabbix

На этом месте мы заканчиваем с настройкой сервера Zabbix, но нам еще нужно сделать несколько изменений в установке PHP для того, чтобы веб-интерфейс Zabbix работал корректно.

Шаг 3

Настройка PHP

Веб-интерфейс 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>

Раскомментируйте строку с временной зоной и поменяйте на свою временную зону (если требуется). Установка московского времени - Europe/Moscow. Список всех временных зон смотрите вот тут. Затем сохраните и закройте файл.

Теперь перезапустите Apache, чтобы изменения вступили в силу.

$ sudo systemctl restart httpd

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

$ sudo systemctl start zabbix-server

И проверьте, корректно ли он работает:

$ 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

Веб-интерфейс позволяет видеть отчеты и добавлять хосты, которые нужно мониторить. Но перед использования веб-интерфейса необходимо произвести установку. Первым делом введите в браузере http://ip_адрес_вашего_zabbix_сервера/zabbix/

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

Все значения должны иметь значения ОК – прокрутите список до конца и убедитесь, что это так. Для продолжения нажмите Next step (Следующий шаг).

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

Параметры на следующем экране можно не менять и оставить по умолчанию. Name указывать необязательно: этот параметр используется для того, чтобы различать серверы между собой, если вы наблюдаете за несколькими серверами. Для продолжения нажмите Next step.

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

Установка веб-интерфейса завершена! У вас появится конфигурационный файл /etc/zabbix/web/zabbix.conf.php – на всякий случай сделайте его бэкап для того, чтобы использовать в будущем. Нажмите Finish для перехода к экрану авторизации. По умолчанию пользователь (user) admin, а пароль (password) - zabbix.

Перед тем, как авторизоваться, давайте настроим агент Zabbix на наших других серверах.

Шаг 5

Установка и настройка агента Zabbix

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

Подключитесь ко второму серверу, который в данной статье будет носить название «контролируемый сервер» (то есть сервер, за которым мы наблюдаем).

$ ssh sammy@ip_адрес_контролируемого сервера

Далее – точно так же, как и на сервере 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

IP-адрес, установленный по умолчанию, нужно изменить на IP-адрес вашего сервера Zabbix:

Server=ip_адрес_вашего_сервера

Теперь найдите часть, которая отвечает за защищенное соединение с сервером Zabbix, и в которой можно включить поддержку ключей PSK. Это TSLConnect часть, она выглядит примерно так:

### 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=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

Для того, чтобы входящие соединения поддерживали ключи шифрования, вам нужно добавить строку ниже:

TLSAccept=psk

Наконец, найдите часть TLSPSKIdentity:

### Option: TLSPSKIdentity
# Unique, case sensitive string used to identify the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKIdentity=

Тут нужно выбрать уникальное имя для того, чтобы идентифицировать ключ:

TLSPSKIdentity=PSK 001

Запомните то, что записали, так как эта информация понадобится вам как PSK ID, когда вы будете добавлять хост, используя веб-интерфейс Zabbix.

Наконец, нужно задать настройку, которая будет указывать на созданный ранее ключ PSK. Найдите часть TLSPSKFile:

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

И добавьте туда вот такую строчку:

TLSPSKFile=/etc/zabbix/zabbix_agentd.psk

Указывать нужно доступ к созданному файлу с данными PSK.

Сохраните и закройте файл. Теперь вы можете запустить агент Zabbix, а также задать его автозапуск при включении системы:

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

Обязательно проверьте, что агент работает корректно:

$ 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://ip_адрес_сервера_zabbix/zabbix/ и введя соответствующие данные.

Теперь нажмите Configuration (Настройки), а затем Hosts (Хосты) в верхнем меню. Нажмите кнопку Create host (Создать хост) – откроется конфигурационное меню хоста.

Заполните графы Host name (Имя хоста) и IP ADDRESS (IP-адрес) согласно данным соответствующей машины. Затем добавьте хост в определенную группу, выбрав одну из них из списка, либо создайте новую группу. При этом один хост может находиться в нескольких группах. Группу Linux Servers хорошо использовать в качестве группы по умолчанию.

После добавления группы нажмите на раздел Templates (Шаблоны). Введите Template OS Linux в строку Search (Поиск) и потом нажмите Add (Добавить) для того, чтобы добавить этот шаблон к хосту.

Переходим к разделу Encryption (шифрование). Выберите PSK для обоих соединений (от/from и к/to хосту). В графе PSK identity задайте PSK 001 (это соответствует той настройке, которую мы внесли в TLSPSIdentity ранее, когда настраивали агент Zabbix). Значение PSK – это ключ, который был сгенерирован для агента Zabbix. Тот самый, который хранится в файле /etc/zabbix/zabbix_agentd.psk.

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

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

Подождав некоторое время, идите в Monitoring (Мониторинг), а затем в Latest data (Последние данные) для того, чтобы увидеть информацию, полученную от вашего агента.

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

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

Заключение

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

Timeweb серверы

Комментарии