Поиск по сайту:

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


Введение

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

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

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

Предпосылки

Чтобы следовать этому руководству, вам понадобятся:

  • Два сервера Ubuntu 16.04, на каждом из которых настроен пользователь sudo без полномочий root. Вы можете настроить их, следуя этой статье о начальной настройке сервера Ubuntu.
  • На сервере, на котором будет работать сервер Zabbix, должны быть установлены Apache, MySQL и PHP. Следуйте этому руководству, чтобы настроить их на одном из ваших серверов.

Шаг 1 — Установка Zabbix сервера

Во-первых, нам нужно установить Zabbix Server на сервер, где мы установили MySQL, Apache и PHP. В этом руководстве мы будем называть эту машину «сервером Zabbix». Войдите на эту машину как пользователь без полномочий root:

  1. ssh sammy@your_zabbix_server_ip_address

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

  1. sudo apt-get update

Затем установите PHP-модули, необходимые Zabbix:

  1. 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

Вы увидите следующий вывод:

Output
Selecting 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 будет собирать от своих агентов.

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

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

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

mysql -uroot -p

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

  1. create database zabbix character set utf8 collate utf8_bin;

Затем создайте пользователя, которого будет использовать сервер Zabbix, предоставьте ему доступ к новой базе данных и установите пароль для пользователя:

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

Затем примените эти новые разрешения:

  1. flush privileges;

Это заботится о пользователе и базе данных. Выйдите из консоли базы данных.

  1. quit;

Далее нам нужно импортировать исходную схему и данные. Установка Zabbix предоставила нам файл, который настраивает это для нас.

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

zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix

Введите пароль для пользователя zabbix MySQL, которого вы настроили при появлении запроса.

Эта команда не выведет никаких ошибок, если она была выполнена успешно. Если вы видите сообщение об ошибке ОШИБКА 1045 (28000): Отказано в доступе для пользователя zabbix@localhost (с использованием пароля: ДА), убедитесь, что вы использовали пароль для пользователя zabbix и не пользователь root.

Чтобы сервер Zabbix мог использовать эту базу данных, вам необходимо установить пароль базы данных в файле конфигурации сервера Zabbix. Откройте файл конфигурации в вашем редакторе:

sudo nano /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

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

Шаг 3 — Настройка PHP для Zabbix

Веб-интерфейс Zabbix написан на PHP и требует некоторых специальных настроек PHP-сервера. Процесс установки Zabbix создал файл конфигурации Apache, который содержит эти настройки. Он находится в каталоге /etc/zabbix и автоматически загружается Apache. Нам нужно внести небольшое изменение в этот файл, поэтому откройте его.

sudo nano /etc/zabbix/apache.conf

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

...
<IfModule mod_php7.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 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) ...

Наконец, разрешите серверу запускаться во время загрузки:

  1. sudo systemctl enable zabbix-server

Сервер настроен и подключен к базе данных. Теперь давайте настроим веб-интерфейс.

Шаг 4 — Настройка параметров веб-интерфейса Zabbix

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

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

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

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

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

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

Имя не является обязательным; он используется в веб-интерфейсе, чтобы отличить один сервер от другого, если у вас несколько серверов мониторинга. Нажмите Следующий шаг, чтобы продолжить.

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

Нажмите Следующий шаг, чтобы перейти к последнему экрану.

Настройка веб-интерфейса завершена! Этот процесс создает файл конфигурации /usr/share/zabbix/conf/zabbix.conf.php, резервную копию которого вы можете создать и использовать в будущем. Нажмите «Готово», чтобы перейти к экрану входа в систему. Пользователь по умолчанию — Admin, а пароль — zabbix.

Прежде чем мы войдем в систему, давайте настроим агент Zabbix на другом нашем сервере.

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

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

Войдите на второй сервер, который мы назовем «отслеживаемый сервер».

  1. ssh sammy@your_monitored_server_ip_address

Затем, как и на сервере Zabbix, выполните следующие команды для установки пакета конфигурации репозитория:

  1. wget http://repo.zabbix.com/zabbix/3.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.2-1+xenial_all.deb
  2. sudo dpkg -i zabbix-release_3.2-1+xenial_all.deb

Затем обновите индекс пакета:

  1. sudo apt-get update

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

  1. sudo apt-get install zabbix-agent

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

Итак, сначала сгенерируйте PSK:

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

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

  1. cat /etc/zabbix/zabbix_agentd.psk

Ключ будет выглядеть примерно так:

Output
cd12686e166a80aa09a227ae5f97834eaa3d5ae686d2ae39590f17ef85dd6de5

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

  1. sudo nano /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 вашего сервера Zabbix:

Server=your_zabbix_server_ip_address

Далее найдите раздел, который настраивает безопасное соединение с сервером Zabbix и включает поддержку предварительного общего ключа. Найдите раздел 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 при добавлении хоста через веб-интерфейс Zabbix.

Затем установите параметр, который указывает на ранее созданный предварительно общий ключ. Найдите параметр TLSPSKFile:

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

Добавьте эту строку, чтобы указать агенту Zabbix ваш файл PSK, который вы создали:

TLSPSKFile=/etc/zabbix/zabbix_agentd.psk

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

  1. sudo systemctl start zabbix-agent
  2. sudo systemctl enable zabbix-agent

На всякий случай проверьте правильность работы Zabbix агента:

  1. 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. Но чтобы использовать его, мы должны подключиться к нему с веб-консоли сервера.

Примечание:

  1. sudo ufw allow 10050/tcp

Вы можете узнать больше об UFW в разделе Как настроить брандмауэр с UFW в Ubuntu 16.04.

Шаг 6 — Добавление нового хоста на сервер Zabbix

Установка агента на сервер, который мы хотим отслеживать, — это только половина процесса. Каждый хост, который мы хотим отслеживать, должен быть зарегистрирован на сервере Zabbix, что мы можем сделать через веб-интерфейс.

Войдите в веб-интерфейс Zabbix Server, перейдя по адресу http://ваш_zabbix_ip_адрес_сервера/zabbix/.

Когда вы вошли в систему, нажмите «Конфигурация», а затем «Хосты» в верхней панели навигации. Затем нажмите кнопку «Создать хост» в правом верхнем углу экрана. Откроется страница конфигурации хоста.

Настройте имя хоста и IP-АДРЕС, чтобы они отражали имя хоста и IP-адрес вашего клиентского компьютера. Затем добавьте хост в группу, выбрав одну из групп из списка или создав собственную группу. Хост может быть в нескольких группах. Группа серверов Linux — хороший выбор по умолчанию. После добавления группы перейдите на вкладку «Шаблоны».

Введите Template OS Linux в поле поиска и нажмите «Добавить», чтобы добавить этот шаблон на хост.

Далее перейдите на вкладку «Шифрование». Выберите PSK как для подключений к хосту, так и для подключений с хоста. Затем установите идентификатор PSK на PSK 001, который является значением параметра TLSPSKIdentity агента Zabbix, который мы настроили ранее. Затем установите

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

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

Через несколько секунд вы можете перейти к разделу «Мониторинг», а затем «Последние данные», чтобы просмотреть данные от вашего агента.

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

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

Заключение

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