Zabbix — различия между версиями

Материал из Rosalab Wiki
Перейти к: навигация, поиск
(Агент Zabbix)
 
(не показано 9 промежуточных версий 1 участника)
Строка 23: Строка 23:
 
В репозитории rosa2021.1 поставляется Zabbix 5.0 LTS.
 
В репозитории rosa2021.1 поставляется Zabbix 5.0 LTS.
  
Развертывание рекомендуется выполнять в отдельной виртуальной машине, которую можно сделать на основе серверного образа ROSA или в контейнере на основе rootfs. Доступные сборки rosa2019.1 здесь: https://abf.io/platforms/rosa2019.1/products
+
Развертывание рекомендуется выполнять в отдельной виртуальной машине, которую можно сделать на основе серверного образа ROSA или в контейнере на основе rootfs. Доступные сборки rosa2021.1 здесь: https://abf.io/platforms/rosa2021.1/products
  
 
== Сервер Zabbix ==
 
== Сервер Zabbix ==
Строка 434: Строка 434:
 
Теперь создадим файл с настройками Zabbix-агента, настройки из которого будут приоритетнее настроек в /etc/zabbix/zabbix_agentd.conf:
 
Теперь создадим файл с настройками Zabbix-агента, настройки из которого будут приоритетнее настроек в /etc/zabbix/zabbix_agentd.conf:
 
   nano /etc/zabbix/zabbix_agentd.d/10-duma.conf
 
   nano /etc/zabbix/zabbix_agentd.d/10-duma.conf
Со следующим содержимым (задайте свои значения параметров):
+
(вместо "10-duma.conf" можете придумать свое имя файла) 
 +
со следующим содержимым (задайте свои значения параметров):
 
<pre>
 
<pre>
 
# уникальное человекопонятное имя узла мониторинга
 
# уникальное человекопонятное имя узла мониторинга
Строка 452: Строка 453:
 
# (не принимаем входящих соединений с сервера)
 
# (не принимаем входящих соединений с сервера)
 
Server=
 
Server=
 +
StartAgents=0
 
# запрещаем выполнение произвольных команд, поступивших с сервера,
 
# запрещаем выполнение произвольных команд, поступивших с сервера,
 
# для защиты от компроментации системы с агентом в случае взлома сервера
 
# для защиты от компроментации системы с агентом в случае взлома сервера
Строка 461: Строка 463:
  
 
Обратите внимание, что выше предложено указать ServerActive IP-адресом, а не DNS-именем, хотя можно и так, и так. Дело в том, что мы запретили подключения к любым серверам, кроме локальной петли и указанных. В зависимости от настроек в /etc/nsswitch.conf и /etc/resolv.conf, для резолва имен DNS может потребоваться доступ к DNS-серверу, который не внесен в список разрешенных. При использовании systemd-resolved (по умолчанию в rosa2021.1) такой проблемы нет, т.к. резолв DNS производится по D-BUS с DNS-сервером на локальной петле в качестве запасного варианта, а значит адрес сервера можно указать именем DNS.
 
Обратите внимание, что выше предложено указать ServerActive IP-адресом, а не DNS-именем, хотя можно и так, и так. Дело в том, что мы запретили подключения к любым серверам, кроме локальной петли и указанных. В зависимости от настроек в /etc/nsswitch.conf и /etc/resolv.conf, для резолва имен DNS может потребоваться доступ к DNS-серверу, который не внесен в список разрешенных. При использовании systemd-resolved (по умолчанию в rosa2021.1) такой проблемы нет, т.к. резолв DNS производится по D-BUS с DNS-сервером на локальной петле в качестве запасного варианта, а значит адрес сервера можно указать именем DNS.
 +
 +
ListenPort не имеет смысла при отключенных пассивных проверках, когда агент сам соединяется с сервером (StartAgents=0).
  
 
Пока не будем запускать агент, сначала добавим узел на сервере.
 
Пока не будем запускать агент, сначала добавим узел на сервере.
Строка 474: Строка 478:
 
[[File:2021-08-07_13-20.png||1000px]]
 
[[File:2021-08-07_13-20.png||1000px]]
  
Заполните имя узла (как Hostname в настройках агента) и добавьте узел в хотя бы одну группу, например, "Linux servers" (тогда будет применен типовой шаблон для Linux-систем с отслеживанием нагрузки на процессор, сеть, занятости дисков и пр.; агент запросит у сервера шаблон, что нужно отслеживать, и будет ему присылать метрики в соответствии с шаблоном).
+
Заполните имя узла (как Hostname в настройках агента) и добавьте узел в хотя бы одну группу, например, "Linux servers".
 +
 
 +
Поменяйте порт на значение ListenPort в настройках агента.
 +
 
 +
[[File:2021-08-07_14-12.png||800px]]
 +
 
 +
Перейдите во вкладку "Шаблоны". Отметьте галкой шаблон "Template OS Linux by Zabbix agent active" и нажмите "Выбрать".
  
[[File:2021-08-07_13-26.png||800px]]
+
[[File:2021-08-07_14-28.png||800px]]
  
 
Перейдите во вкладку "Шифрование". В разделе "Подключения к узлу сети" выберите "PSK" (но мы настроили агент так, чтобы только он сам мог подключаться к серверу, поэтому настройки, как сервер будет подключаться к агенту, в приведенном случае не играют роли). В разделе "Соединения с узла сети" снимите галку "Без шифрования" и поставьте галку "PSK".
 
Перейдите во вкладку "Шифрование". В разделе "Подключения к узлу сети" выберите "PSK" (но мы настроили агент так, чтобы только он сам мог подключаться к серверу, поэтому настройки, как сервер будет подключаться к агенту, в приведенном случае не играют роли). В разделе "Соединения с узла сети" снимите галку "Без шифрования" и поставьте галку "PSK".
Строка 501: Строка 511:
 
можно будет ознакомиться с данными с добавленного узла.
 
можно будет ознакомиться с данными с добавленного узла.
  
[[Категория:ROSA Enterprise Linux Server]]
+
[[Категория:ROSA Server]]

Текущая версия на 14:10, 10 марта 2023

Введение

2021-02-13 22-11.png

Эта статья описывает установку и первоначальную настройку системы Zabbix на дистрибутиве ROSA платформы rosa2021.1 или новее.

Система Zabbix предназначена для организации мониторинга инфраструктуры.

Данная инструкция ставит своей целью привести пример настройки Zabbix в дистрибутиве ROSA, в т.ч. описав специфичные для ROSA нюансы, однако не ставит своей целью описать все возможные сценарии настройки и использования Zabbix. Рекомендуется изучить официальную документацию по Zabbix: https://www.zabbix.com/documentation/5.0/ru/manual

Данная инструкция заменяет раздел "Установка" из официальной документации.

Все описанные в инструкции действия выполняются от root, если не указано иное.

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

  • сервер Zabbix
  • веб-интерфейс через веб-сервер Apache HTTPD
  • база данных MySQL (MariaDB)

Также рассмотрена типовая настройка агента Zabbix.

В репозитории rosa2021.1 поставляется Zabbix 5.0 LTS.

Развертывание рекомендуется выполнять в отдельной виртуальной машине, которую можно сделать на основе серверного образа ROSA или в контейнере на основе rootfs. Доступные сборки rosa2021.1 здесь: https://abf.io/platforms/rosa2021.1/products

Сервер Zabbix

Минимальная настройка сервера

Установите необходимые пакеты:

dnf install zabbix-server zabbix-server-mysql zabbix-web zabbix-web-mysql mariadb locales-ru

Это установит сервер Zabbix, веб-интерфейс Zabbix, компоненты для использованияч MySQL в качестве базы данных и саму базу данных — MariaDB (форк MySQL).

Установите имя хоста (это делать не обязательно, но рекомендуется), например:

hostnamectl set-hostname zabbix.infrastructure.dumalogiya.ru

Можно установить FQDN имя хоста, которое затем будет резолвится через ваш DNS-сервер. В приведенном примере на DNS-сервере, обслуживающем домен dumalogiya.ru, будет добавлена A-запись zabbix.infrastructure.dumalogiya.ru, указывающая на необходимый IP-адрес. Это позволит иметь дсотуп к серверу из внешней сети. Будьте осторожны с открытием дсотупа из внешней сети, возможно, стоит настроить firewall и использовать VPN.

Настройка базы данных MySQL

Произведите тестовый запуск базы данных:

systemctl start mariadb

Убедитесь, что она запустилась без ошибок:

systemctl status mariadb

При ее первом запуске будут созданы файлы в /var/lib/mysql.

Добавьте базу данных в автозапуск:

systemctl enable mariadb

Запустите скрипт первоначальной настройки БД:

mysql_secure_installation

Ниже приведен вывод скрипта с комментариями к задаваемым им вопросам. Для ответа на вопросы нужно ввести Y для утвердительного или N для отрицательного ответа и нажать Enter.

[root@rosa-2019 ~]# /usr/bin/mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Просто нажмите Enter.

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] y

У нас спросили, нужно ли на время первоначальной настройки запретить авторизацию для подключений по сети. Соглашаемся.

Enabled successfully!
Reloading privilege tables..
 ... Success!


You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] 

У нас спросили, хотим ли мы поставить root-пароль MySQL. Обратите внимание, что это пароль пользователя root внутри MySQL, но не в ОС. Соглашаемся.

New password: 
Re-enter new password: 

2 раза вводим придуманный пароль, создать случайный пароль можно, например, так:

head -c 100 /dev/random | base64 | head -c 20

Запишите установленный пароль в безопасное место, например, в базу данных Keepass с помощью доступной в репозиториях ROSA графической программы KeepassXC (пакет keepassxc).

Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y

Предлагается удалить существующего из коробки анонимного пользователя. Он не нужен. Соглашаемся.

 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y

Предлагается запретить входить в MySQL под root по сети. Соглашаемся.

 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y

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

 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y

Предлагается перезагрузить таблицы привелегий, чтобы гарантировать вступление изменений в силу. Соглашаемся.

 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Работа скрипта первоначальной настройки MySQL закончена.

Теперь, согласно документации Zabbix (https://www.zabbix.com/documentation/5.0/ru/manual/appendix/install/db_scripts#mysql), произведем настройки базы данных для него.

Войдем в консоль MySQL под пользователем root:

mysql -uroot -p

Запросит пароль, введите ранее установленный пароль root MySQL.

Создадим базу данных для Zabbix:

create database zabbix character set utf8 collate utf8_bin;

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

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

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

head -c 100 /dev/random | base64 | head -c 20

Сохраните созданный пароль.

Выйдите из консоли MySQL:

quit;

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

cd /usr/share/zabbix-mysql

Импортируйте дамп базы данных:

mysql -uzabbix -p'пароль' zabbix < schema.sql

Вместо "пароль" укажите установленный ранее пароль пользователя MySQL "zabbix".

Аналогично выполните еще 2 SQL-запроса:

mysql -uzabbix -p'пароль' zabbix < images.sql
mysql -uzabbix -p'пароль' zabbix < data.sql

Обратите внимание, что пароль внутри использованных команды сохранился в логах консоли. Очистите историю bash:

history -cw

И историю MySQL:

rm -fv ~/.mysql_history

Если в процессе настройки базы данных что-то пошло не так, можно удалить всё и начать заново:

systemctl stop mariadb
rm -fvr /var/lib/mysql/*
systemctl start mariadb

И далее mysql_secure_installation по инструкции выше.

Создайте резервную копию файла конфигурации:

cp -v /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.orig

Откройте файл в nano или любом другом редакторе:

nano /etc/zabbix/zabbix_server.conf

Замените строку

# DBPassword=

на:

DBPassword=пароль

где вместо "пароль" укажите пароль пользователя MySQL "zabbix".

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

# ListenPort=10051

на:

ListenPort=15889

где вместо 15889 — любое число от 1024 до 32767.

Посмотрите отличия между исходным файлом и тем, что получилось после редактирования:

diff -u --color /etc/zabbix/zabbix_server.conf.orig /etc/zabbix/zabbix_server.conf

Запустите сервер Zabbix в варианте для работы с MySQL:

systemctl start zabbix-server-mysql

Убедитесь, что он запустился успешно:

systemctl status zabbix-server-mysql

Добавьте его в автозапуск:

systemctl enable zabbix-server-mysql

Настройка веб-интерфейса

Разворачивание веб-интерфейса

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

Работа веб-интерфейса обеспечивается с помощью PHP и веб-сервера Apache HTTPD, конфигурационный файл находится по адресу /etc/httpd/conf.d/zabbix.conf. Для работы в типовой конфигурации его править не нужно. То, что необходимо для работы, будет уже установлено по зависимостям пакетов из репозитория.

Проверьте правильность настройки часового пояса на сервере:

timedatectl

Если часовой пояс неверный, то найдите свой в списке

timedatectl list-timezones

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

timedatectl set-timezone Europe/Moscow

(вместо "Europe/Moscow нужный часовой пояс)

Настройте часовой пояс в интерпретаторе PHP, например:

echo "php_value date.timezone $(timedatectl show -p Timezone | awk -F '=' '{print $NF}')" > /etc/httpd/conf.d/timezone.conf

Проверьте, что получилось:

cat /etc/httpd/conf.d/timezone.conf

Пример правильного вывода:

php_value date.timezone Europe/Moscow

Произведите пробный запуск веб-сервера Apache HTTPD:

systemctl start httpd

Убедитесь, что он запустился успешно:

systemctl status httpd

Добавьте его в автозапуск:

systemctl enable httpd

Посмотрите адрес сервера с помощью команды

ip a

И откройте в браузере адрес

http://server/zabbix/setup.php

Например:

http://192.168.122.71/zabbix/setup.php
http://localhost/zabbix/setup.php

До завершения настройки не рекомендуется делать сервер доступным из внешней сети!

Обратите внимание, что поставляемый в составе пакета из репозитория конфигурационный файл для Apache HTTPD /etc/httpd/conf.d/zabbix.conf настраивает Apache HTTPD так, чтобы открывать Zabbix при любом обращении к веб-серверу по адресу "/zabbix", независимо от домена. В конфигурации, по ходу разворачивания которой пишется настоящая инструкция, Zabbix работает в отдельном контейнере systemd-nspawn на базе rootfs rosa2019.1, доступ из внешней сети будет осуществляться через прокси средствами nginx, работающего на другом сервере, благодаря чему правки конфигов не понадобятся.

Ниже приведен скриншот с веб-страницей, которую вы должны увидеть:

2021-02-13 17-18.png

Нажмите синюю кнопку для перехода к следующему шагу. Будет произведена проверка параметров и модулей PHP. Нажмите "Next step" для перехода к настройке соединения с базой данных, показанное на скриншоте ниже:

2021-02-13 20-19.png

В поле "Password" вставьте пароль от пользователя MySQL "zabbix", остальные поля оставьте без изменения и нажмите "Next step".

На шаге "Zabbix server details" рекомендуется изменить порт по умолчанию 10051 на иное значение, указанное ранее в конфиге сервера Zabbix (в этой инструкции было приведено значение 15889 в качестве примера).

По окончанию настройки будет выдано сообщение:

Congratulations! You have successfully installed Zabbix frontend.
Configuration file "/etc/zabbix/web/zabbix.conf.php" created.

Нажмите "Finish" для завершение установки. Вас переадресует на экран входа в систему:

2021-02-13 20-27.png

Войдите с помощью стандартных логина и пароля: Логин: Admin Пароль: zabbix

Откроется веб-интерфейс, показанный на скриншоте:

2021-02-13 20-50.png

Обратите внимание, что напротив "Zabbix server is running" написано "YES". Если "NO", то значит веб-интерфейс не смог соединиться с демоном, возможно, вы перепутали порт. Тогда нужно синхронизировать порты в файлах /etc/zabbix/web/zabbix.conf.php и /etc/zabbix/zabbix_server.conf и перезапустить сервер:

systemctl restart zabbix-server-mysql

Узнать, что на каком порту работает, можно так:

ss -ntulp

Перейдите в раздел "User settings" в левом нижнем углу (см. скриншот ниже) (http://server/zabbix/zabbix.php?action=userprofile.edit) и при необходимости смените язык интерфейса на русский. Обратите внимание, что должен быть установлен пакет locales-ru, аналогично для других языков.

2021-02-13 20-54.png

Нажмите "Update". Интерфейс станет на русском.

2021-02-13 21-03.png

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

  • Перейдите в "Администрирование" — "Пользователи" (http://server/zabbix/zabbix.php?action=user.list)
  • Справа вверху нажмите "Создать пользователя"
  • В открывшемся разделе добавления пользователя перейдите во вкладку "Права доступа"
  • Установите "Тип пользователя" "Zabbix Супер Администратор"
  • Во вкладке "Пользователь" добавьте группу "Zabbix administrators"
  • Заполните остальные поля
  • Нажмите "Добавить"
  • Слева внизу нажмите "Выход". Вас перенаправит на экран входа в систему. Войдите под только что созданным новым пользователем.
  • Перейдите в "Администрирование" — "Пользователи" (http://server/zabbix/zabbix.php?action=user.list)
  • Нажмите на пользователя "Admin"
  • В открывшемся разделе редактирования пользователя в поле "Группы" удалите группу "Zabbix administrators" и добавьте группу "Disabled"
  • Нажмите "Обновить" для сохранения изменений

Теперь под стандартными пользователем и паролем нельзя войти в систему.

При необходимости настройте firewall, VPN.

Теперь сервер Zabbix готов к работе. Следующий шаг — настройка мониторинга узлов. Если веб-интерфейс Zabbix будет доступен из глобальной сети, рекомендуется настроить шифрование трафика (HTTPS) по инструкции ниже.

Настройка HTTPS и сертификата Letsencrypt

В этом разделе описана настройка TLS-шифрования, т.е. работы по протоколу HTTPS, с получением бесплатного сертификата от Letsencrypt. Для этого нужно:

  • иметь настроенный DNS: доменное имя, на которое будет выдаваться сертификат, должно преобразовываться в IP-адрес на публичных DNS
  • корень домена должен быть доступен из внешней сети (при этом путь /zabbix может быть недоступен, его доступность не требуется для получения сертификата)

Установите необходимые пакеты:

dnf install certbot python3-certbot-apache

Создайте файл /etc/httpd/conf.d/zabbix-vhost.conf со следующим текстом:

<VirtualHost *:80>
  ServerName zabbix.infrastructure.dumalogiya.ru
  ServerAlias www.zabbix.infrastructure.dumalogiya.ru
</VirtualHost>

Здесь и далее вместо zabbix.infrastructure.dumalogiya.ru ваш домен.

Перезагрузите конфигурацию Apache HTTPD:

systemctl reload httpd

Проверьте, что по адресу http://zabbix.infrastructure.dumalogiya.ru/zabbix открывается веб-интерфейс Zabbix.

Запустите процесс получения сертификата:

certbot --apache -d zabbix.infrastructure.dumalogiya.ru

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

Если в процессе получения сертификата не возникло ошибок, проверьте, что по адресу https://zabbix.infrastructure.dumalogiya.ru/zabbix открывается веб-интерфейс Zabbix.

certbot настроить автоматическую переадресацию с http:// на https://, дописав соответствующие инструкции в файл /etc/httpd/conf.d/zabbix-vhost.conf, который приобретет следюущий вид:

<VirtualHost *:80>
  ServerName zabbix.infrastructure.dumalogiya.ru
  ServerAlias www.zabbix.infrastructure.dumalogiya.ru
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.zabbix.infrastructure.dumalogiya.ru [OR]
RewriteCond %{SERVER_NAME} =zabbix.infrastructure.dumalogiya.ru
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

Также будет автоматически создан файл /etc/httpd/conf.d/zabbix-vhost-le-ssl.conf следующего вида:

<IfModule mod_ssl.c>
<VirtualHost *:443>
  ServerName zabbix.infrastructure.dumalogiya.ru
  ServerAlias www.zabbix.infrastructure.dumalogiya.ru

SSLCertificateFile /etc/letsencrypt/live/zabbix.infrastructure.dumalogiya.ru/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/zabbix.infrastructure.dumalogiya.ru/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

Включите автоматическое продление сертификата:

systemctl enable --now certbot-renew.timer

Узнать состояние работы службы продления можно так:

systemctl status certbot-renew.timer certbot-renew.service

Веб-сервер Apache HTTPD в ROSA поддерживает работу по ГОСТ TLS (т.е. с шифрованием по ГОСТ). В файле /usr/share/doc/apache-mod_ssl/README.GOST (веб-версия: https://abf.io/import/apache/blob/rosa2021.1/README.GOST) описано, как его настроить. Обратите внимание, что Letsencrypt не поддерживает криптографию по ГОСТ, вам придется выпускать сертификаты иным образом, например, создавая их самостоятельно, как описано в этом файле.

Агент Zabbix

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

Существуют различные способы установки связи между агентом и сервером, автоматические и ручные способы добавления узла с агентом на сервер. Они рассмотрены в официальной документации: https://www.zabbix.com/documentation/5.0/ru/manual/concepts/agent

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

Установка агента Zabbix на Росу

Сервер Zabbix на Росе может использоваться с агентами на других дистрибутивах и ОС, и наоборот. Для установки агента Zabbix на ROSA выполните:

dnf install zabbix-agent openssl

Для установки на другие ОС обратитесь к документации по ОС и ее репозиторию или найдите сборку агента на официальном сайте Zabbix: https://www.zabbix.com/ru/download_agents

Настройка межсетевого экрана для агента Zabbix

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

На системе с установленным агентом Zabbix выполните:

EDITOR=nano systemctl edit zabbix-agent.service

Вставьте следующий текст:

[Service]
IPAccounting=yes
IPAddressDeny=any
IPAddressAllow=81.176.226.156
IPAddressAllow=127.0.0.0/8

Замените 81.176.226.156 на IP-адрес своего сервера Zabbix. Сохраните изменения в файле (Ctrl+O, Enter, Ctrl+X).

Настройка агента

Теперь создадим уникальный для данного агента ключ:

sh -c 'umask 0077 && openssl rand -hex 64 > /etc/zabbix/zabbix_agentd.d/psk'
chown zabbix:zabbix /etc/zabbix/zabbix_agentd.d/psk

Командой

stat /etc/zabbix/zabbix_agentd.d/psk

убедитесь, что файл имеет права 0600 и принадлежит пользователю zabbix, группе zabbix. Таким образом этот секретный ключ не может быть прочитан без root-прав извне Zabbix-агента.

Теперь создадим файл с настройками Zabbix-агента, настройки из которого будут приоритетнее настроек в /etc/zabbix/zabbix_agentd.conf:

 nano /etc/zabbix/zabbix_agentd.d/10-duma.conf

(вместо "10-duma.conf" можете придумать свое имя файла) со следующим содержимым (задайте свои значения параметров):

# уникальное человекопонятное имя узла мониторинга
Hostname=nickel-builder-1.rosalinux.ru
# сетевой порт агента Zabbix
ListenPort=15888
# авторизация по ключу и шифрование трафика
TLSConnect=psk
TLSAccept=psk
# уникальный произвольный текст-пароль (замените на свой!)
TLSPSKIdentity=Change to your text blablabla
TLSPSKFile=/etc/zabbix/zabbix_agentd.d/psk
# адрес и порт сервера Zabbix
#ServerActive=zabbix.infrastructure.dumalogiya.ru:15889
ServerActive=81.176.226.156:15889
# работаем только в активном режиме
# (не принимаем входящих соединений с сервера)
Server=
StartAgents=0
# запрещаем выполнение произвольных команд, поступивших с сервера,
# для защиты от компроментации системы с агентом в случае взлома сервера
DenyKey=system.run[*]

Сделайте файл доступным для чтения агенту Zabbix, работающему от пользователя Zabbix:

chmod 0644 /etc/zabbix/zabbix_agentd.d/10-duma.conf

Обратите внимание, что выше предложено указать ServerActive IP-адресом, а не DNS-именем, хотя можно и так, и так. Дело в том, что мы запретили подключения к любым серверам, кроме локальной петли и указанных. В зависимости от настроек в /etc/nsswitch.conf и /etc/resolv.conf, для резолва имен DNS может потребоваться доступ к DNS-серверу, который не внесен в список разрешенных. При использовании systemd-resolved (по умолчанию в rosa2021.1) такой проблемы нет, т.к. резолв DNS производится по D-BUS с DNS-сервером на локальной петле в качестве запасного варианта, а значит адрес сервера можно указать именем DNS.

ListenPort не имеет смысла при отключенных пассивных проверках, когда агент сам соединяется с сервером (StartAgents=0).

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

Добавление узла мониторинга

Добавим агент на сервер Zabbix. Обратите внимание, что мы рассматриваем лишь один из множества возможных вариантов настройки, Zabbix умеет и автоматически обнаруживать узлы сети (агенты).

В веб-интерфейсе Zabbix под пользователем-администратором или с иными необходимыми правами зайдите в:

Настройка -> Узлы сети

Справа вверху нажмите: "Создать узел сети". Откроется страница https://сервер/zabbix/hosts.php?form=create

2021-08-07 13-20.png

Заполните имя узла (как Hostname в настройках агента) и добавьте узел в хотя бы одну группу, например, "Linux servers".

Поменяйте порт на значение ListenPort в настройках агента.

2021-08-07 14-12.png

Перейдите во вкладку "Шаблоны". Отметьте галкой шаблон "Template OS Linux by Zabbix agent active" и нажмите "Выбрать".

2021-08-07 14-28.png

Перейдите во вкладку "Шифрование". В разделе "Подключения к узлу сети" выберите "PSK" (но мы настроили агент так, чтобы только он сам мог подключаться к серверу, поэтому настройки, как сервер будет подключаться к агенту, в приведенном случае не играют роли). В разделе "Соединения с узла сети" снимите галку "Без шифрования" и поставьте галку "PSK".

В поле "Идентификатор PSK" вставьте значение поля TLSPSKIdentity из настройки агента (своё, уникальное, не копируйте его из этой инструкции). В поле "PSK" вставьте вывод команды:

cat /etc/zabbix/zabbix_agentd.d/psk

(то есть ранее созданный уникальный ключ).

2021-08-07 13-35.png

Нажмите "Добавить" для добавления узла мониторинга.

Теперь запустим и добавим в автозапуск агент Zabbix на нашем узле:

systemctl enable --now zabbix-agent

Убедимся, что он запустился без ошибок:

systemctl status zabbix-agent

Проверим, что в логе не сказано про ошибки соединения с сервером и др.:

tail /var/log/zabbix/zabbix_agentd.log

Через некоторое время в разделе

Мониторинг -> Узлы сети

можно будет ознакомиться с данными с добавленного узла.