Вступление
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, настройте агент и добавьте хост в веб-интерфейс, выполнив те же действия, которые вы выполнили, чтобы добавить свой первый хост.
Заключение
Из этого руководства вы узнали, как настроить простое и безопасное решение для мониторинга, которое поможет вам контролировать состояние ваших серверов. Теперь он может предупреждать вас о проблемах, и у вас есть возможность построить некоторые графики на основе полученных данных, чтобы вы могли проанализировать их и спланировать соответственно.