Как установить и настроить Zabbix для безопасного мониторинга удаленных серверов в Ubuntu 16.04

Вступление

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.

Prerequisites

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

На следующем экране запрашивается информация о подключении к базе данных.

DB Connection

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

На следующем экране вы можете оставить параметры по умолчанию.

Zabbix Server Details

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

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

Summary

Щелкните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/.

The Zabbix login screen

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

Creating a host

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

Adding a template to the host

Введите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 на машине агента.

Setting up the encryption.

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

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

Zabbix shows your new host.

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

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

Zabbix shows you a warning about the host that’s offline.

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

Заключение

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

Related