Вступление
Zabbix - это программное обеспечение для мониторинга сетей и приложений с открытым исходным кодом. Он предлагает мониторинг в реальном времени тысяч метрик, собранных с серверов, виртуальных машин и любых других сетевых устройств. Эти метрики могут помочь вам определить текущее состояние вашей ИТ-инфраструктуры и обнаружить проблемы с аппаратными или программными компонентами, прежде чем клиенты будут жаловаться. Полезная информация хранится в базе данных, чтобы вы могли со временем анализировать данные и улучшать качество предоставляемых услуг или планировать обновление вашего оборудования.
Zabbix использует архитектуру клиент-сервер и использует небольшой агент на отслеживаемом клиенте для сбора данных и отправки их на Zabbix сервер. Zabbix версии 3 поддерживает зашифрованную связь между сервером и подключенными клиентами, поэтому ваши данные защищены, когда они передаются по незащищенным сетям.
Сервер Zabbix хранит свои данные в реляционной базе данных на базе MySQL, PostgreSQL или Oracle. Он также предоставляет веб-интерфейс, чтобы вы могли просматривать данные и настраивать параметры системы. В этом уроке мы настроим две машины. Один будет настроен как сервер, а другой - как клиент, за которым вы будете следить. Сервер будет использовать базу данных MySQL для записи данных мониторинга и использовать Apache для обслуживания веб-интерфейса.
Предпосылки
Чтобы следовать этому уроку, вам понадобится:
-
Два сервера Ubuntu 16.04, каждый из которых настроен пользователем sudo без полномочий root. Вы можете настроить их, следуя этомуinitial Ubuntu server setup article.
-
Сервер, на котором будет работать Zabbix-сервер, требует установки Apache, MySQL и PHP. Следуйтеthis guide, чтобы настроить их на одном из ваших серверов.
[[step-1 -—- install-the-zabbix-server]] == Шаг 1 - Установка Zabbix сервера
Во-первых, нам нужно установить Zabbix Server на сервере, где мы устанавливаем MySQL, Apache и PHP. Мы будем называть эту машину «Zabbix сервером» в этом руководстве. Войдите на эту машину как пользователь без полномочий root:
ssh sammy@your_zabbix_server_ip_address
Перед установкой Zabbix нам нужно установить несколько модулей PHP, которые нужны Zabbix. Сначала обновите список доступных пакетов вашей системы:
sudo apt-get update
Затем установите модули PHP, необходимые Zabbix:
sudo apt-get install php7.0-xml php7.0-bcmath php7.0-mbstring
Теперь мы можем установить Zabbix.
Zabbix доступен в менеджере пакетов Ubuntu, но он устарел, поэтому мы будем использовать официальный репозиторий 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
Вы увидите следующий вывод:
OutputSelecting 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
Прежде чем мы сможем использовать Zabbix, мы должны настроить базу данных для хранения данных, которые сервер Zabbix будет собирать от своих агентов.
[[step-2 -—- configuring-the-mysql-database-for-zabbix]] == Шаг 2 - Настройка базы данных MySQL для Zabbix
Нам нужно создать новую базу данных MySQL и заполнить ее некоторой базовой информацией, чтобы сделать ее пригодной для Zabbix. Мы также создадим конкретного пользователя для этой базы данных, чтобы Zabbix не входил в MySQL с учетной записьюroot.
Войдите в MySQL как пользователь root, используя пароль root, который вы установили во время установки сервера MySQL:
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;
Это заботится о пользователе и базе данных. Выход из консоли базы данных.
quit;
Далее мы должны импортировать исходную схему и данные. Установка Zabbix предоставила нам файл, который настраивает это для нас.
Выполните следующую команду, чтобы настроить схему и импортировать данные в базу данныхzabbix. Мы будем использоватьzcat, поскольку данные в файле сжаты.
zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix
При появлении запроса введите пароль для пользователя MySQLzabbix, который вы настроили.
Эта команда не выдаст никаких ошибок, если она прошла успешно. Если вы видите ошибкуERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password: YES), убедитесь, что вы использовали пароль для пользователяzabbix, а не для пользователяroot.
Чтобы Zabbix сервер мог использовать эту базу данных, вам необходимо установить пароль базы данных в файле конфигурации Zabbix сервера. Откройте файл конфигурации в вашем редакторе:
sudo nano /etc/zabbix/zabbix_server.conf
Найдите следующий раздел файла:
/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 в файле на пароль для пользователя нашей базы данных. Добавьте эту строку ниже этих комментариев для настройки базы данных:
/etc/zabbix/zabbix_server.conf
DBPassword=your_zabbix_mysql_password
Это касается конфигурации сервера Zabbix, но мы должны внести некоторые изменения в нашу настройку PHP, чтобы веб-интерфейс Zabbix работал должным образом.
[[step-3 -—- configuring-php-for-zabbix]] == Шаг 3 - Настройка PHP для Zabbix
Веб-интерфейс Zabbix написан на PHP и требует некоторых специальных настроек PHP-сервера. В процессе установки Zabbix был создан файл конфигурации Apache, содержащий эти параметры. Он находится в каталоге/etc/zabbix и автоматически загружается Apache. Нам нужно внести небольшое изменение в этот файл, поэтому откройте его.
sudo nano /etc/zabbix/apache.conf
Файл содержит настройки PHP, которые отвечают необходимым требованиям для веб-интерфейса Zabbix. Единственное изменение, которое вам нужно сделать, это установить соответствующий часовой пояс, который закомментирован по умолчанию.
/etc/zabbix/apache.conf
...
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
Раскомментируйте строку часового пояса, выделенную выше, и измените ее на свой часовой пояс. Вы можете использовать этотlist of supported time zones, чтобы найти то, что вам подходит. Затем сохраните и закройте файл.
Теперь перезапустите Apache, чтобы применить эти новые настройки.
sudo systemctl restart apache2
Теперь вы можете запустить Zabbix сервер.
sudo systemctl start zabbix-server
Затем проверьте, правильно ли работает Zabbix сервер:
sudo systemctl status zabbix-server
Вы увидите следующий статус:
Output● 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)
...
Наконец, включите сервер для запуска во время загрузки:
sudo systemctl enable zabbix-server
Сервер настроен и подключен к базе данных. Теперь давайте настроим веб-интерфейс.
[[step-4 -—- configuring-settings-for-the-zabbix-web-interface]] == Шаг 4 - Настройка параметров для веб-интерфейса Zabbix
Веб-интерфейс позволяет нам просматривать отчеты и добавлять хосты, которые мы хотим отслеживать, но для его использования требуется некоторая первоначальная настройка. Запустите браузер и перейдите по адресуhttp://your_zabbix_server_ip_address/zabbix/. На первом экране вы увидите приветственное сообщение. ЩелкнитеNext step, чтобы продолжить.
На следующем экране вы увидите таблицу, в которой перечислены все предварительные условия для запуска Zabbix.

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

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

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

ЩелкнитеNext step, чтобы перейти к последнему экрану.
Настройка веб-интерфейса завершена! Этот процесс создает файл конфигурации/usr/share/zabbix/conf/zabbix.conf.php, который вы можете создать резервную копию и использовать в будущем. ЩелкнитеFinish, чтобы перейти к экрану входа в систему. Пользователь по умолчанию -Admin, пароль -zabbix.
Прежде чем войти в систему, давайте настроим Zabbix агент на нашем другом сервере.
[[step-5 -—- install-and-configuring-the-zabbix-agent]] == Шаг 5 - Установка и настройка Zabbix Agent
Теперь нам нужно настроить программное обеспечение агента, которое будет отправлять данные мониторинга на Zabbix сервер.
Войдите на второй сервер, который мы будем называть «контролируемый сервер».
ssh sammy@your_monitored_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
Ключ будет выглядеть примерно так:
Outputcd12686e166a80aa09a227ae5f97834eaa3d5ae686d2ae39590f17ef85dd6de5
Теперь отредактируйте настройки агента Zabbix, чтобы настроить его безопасное соединение с Zabbix сервером. Откройте файл конфигурации агента в вашем текстовом редакторе:
sudo nano /etc/zabbix/zabbix_agentd.conf
Каждый параметр в этом файле документируется с помощью информативных комментариев по всему файлу, но вам нужно только отредактировать некоторые из них.
Сначала вы должны отредактировать IP-адрес Zabbix сервера. Найдите следующий раздел:
/etc/zabbix/zabbix_agentd.conf
### 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 вашего Zabbix сервера:
/etc/zabbix/zabbix_agentd.conf
Server=your_zabbix_server_ip_address
Затем найдите раздел, который настраивает безопасное соединение с Zabbix сервером и включает поддержку предварительного общего ключа. Найдите разделTSLConnect, который выглядит так:
/etc/zabbix/zabbix_agentd.conf
### 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
Затем добавьте эту строку для настройки поддержки предварительного общего ключа:
/etc/zabbix/zabbix_agentd.conf
TLSConnect=psk
Затем найдите разделTLSAccept, который выглядит так:
/etc/zabbix/zabbix_agentd.conf
### 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
Сконфигурируйте входящие соединения для поддержки общих ключей, добавив следующую строку:
/etc/zabbix/zabbix_agentd.conf
TLSAccept=psk
Затем найдите разделTLSPSKIdentity, который выглядит так:
/etc/zabbix/zabbix_agentd.conf
### Option: TLSPSKIdentity
# Unique, case sensitive string used to identify the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKIdentity=
Выберите уникальное имя, чтобы идентифицировать ваш предварительный общий ключ, добавив следующую строку:
/etc/zabbix/zabbix_agentd.conf
TLSPSKIdentity=PSK 001
Вы будете использовать это какPSK ID при добавлении хоста через веб-интерфейс Zabbix.
Затем установите параметр, который указывает на ранее созданный предварительный общий ключ. Найдите параметрTLSPSKFile:
/etc/zabbix/zabbix_agentd.conf
### Option: TLSPSKFile
# Full pathname of a file containing the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKFile=
Добавьте эту строку, чтобы указать Zabbix агенту на ваш PSK-файл, который вы создали:
/etc/zabbix/zabbix_agentd.conf
TLSPSKFile=/etc/zabbix/zabbix_agentd.psk
Сохраните и закройте файл. Теперь вы можете запустить Zabbix агент и настроить его запуск во время загрузки:
sudo systemctl start zabbix-agent
sudo systemctl enable zabbix-agent
Для правильной оценки убедитесь, что агент Zabbix работает правильно:
sudo systemctl status zabbix-agent
Вы увидите следующее состояние, указывающее, что агент работает:
Output● 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 сервер. Но для того, чтобы использовать его, мы должны связать его с веб-консолью сервера.
[.Примечание]##
Note: Если вы используете UFW, настройте его, чтобы разрешить подключения к порту10050:
sudo ufw allow 10050/tcp
Вы можете узнать больше о UFW вHow To Set Up a Firewall with UFW on Ubuntu 16.04.
[[step-6 -—- add-the-new-host-to-zabbix-server]] == Шаг 6 - Добавление нового хоста на Zabbix Server
Установка агента на сервер, который мы хотим отслеживать, - это только половина процесса. Каждый хост, который мы хотим отслеживать, должен быть зарегистрирован на сервере Zabbix, что мы можем сделать через веб-интерфейс.
Войдите в веб-интерфейс Zabbix Server, перейдя по адресуhttp://your_zabbix_server_ip_address/zabbix/.

После входа в систему щелкнитеConfiguration, а затемHosts на верхней панели навигации. Затем нажмите кнопкуCreate host в правом верхнем углу экрана. Откроется страница конфигурации хоста.

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

ВведитеTemplate OS Linux в полеSearch, а затем щелкнитеAdd, чтобы добавить этот шаблон на хост.
Затем перейдите на вкладкуEncryption. ВыберитеPSK дляConnections to host иConnections from host. Затем установитеPSK identity вPSK 001, что является значением параметраTLSPSKIdentity агента Zabbix, который мы настроили ранее. Затем установите значение
PSK на ключ, который вы сгенерировали для Zabbix агента. Он хранится в файле/etc/zabbix/zabbix_agentd.psk на машине агента.

Наконец, нажмите кнопкуAdd внизу формы, чтобы создать хост.
Вы увидите ваш новый хост с зелеными метками, указывающими, что все работает нормально и соединение зашифровано.

Через несколько секунд вы можете перейти кMonitoring, а затем кLatest data, чтобы увидеть данные от вашего агента.
Чтобы убедиться, что все работает, выключите отслеживаемый сервер, чтобы вы могли видеть, как Zabbix предупреждает вас о проблемах. Когда ваш отслеживаемый сервер отключен, вы увидите предупреждение на главной панели:

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