In certain customer environments only windows based servers are allowed on the network. Previously this was a showstopper for zabbix proxy and server implementations. Fortunately with the new windows architectures there is a way to install Zabbix Server or Zabbix Proxy on windows.
In this walkthrough we will install the Zabbix proxy on windows server 2019. Windows Server 2019 and Windows 10 comes with the WSL option which stands for Windows Subsystem for Linux.
Windows Subsystem for Linux (WSL) is a new Windows 10/Windows Server 2019 feature that enables you to run native Linux command-line tools directly on Windows, alongside your traditional Windows desktop and modern store apps.
There are multiple options available for Linux distributions in WSL. We will however pick ubuntu server 18.4 for our demonstration.
First we will need to enable the WLS option on Windows Server 2019 by executing the following command in powershell. Don’t forget to open powershell as administrator.
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Reboot to server to enable the WSL feature. The next step is to download the relevant ubuntu WSL image using the following command:
Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1804 -OutFile Ubuntu.appx -UseBasicParsing
This will download the latest ubuntu 18.04 WSL image.
Once the image is downloaded we created the ubuntu directory and extracted the image file.
PS C:\Users\Administrator> mkdir \ubuntu PS C:\Users\Administrator> mv Ubuntu.appx Ubuntu.zip PS C:\Users\Administrator> Expand-Archive Ubuntu.zip c:\ubuntu PS C:\Users\Administrator> cd \Ubuntu PS C:\ubuntu> dir
Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 5/8/2019 1:35 AM AppxMetadata d----- 5/8/2019 1:35 AM Assets -a---- 8/17/2018 3:15 AM 212438 AppxBlockMap.xml -a---- 8/17/2018 3:15 AM 3835 AppxManifest.xml -a---- 8/17/2018 3:17 AM 11112 AppxSignature.p7x -a---- 8/17/2018 3:15 AM 223983209 install.tar.gz -a---- 8/17/2018 3:15 AM 5400 resources.pri -a---- 5/8/2019 1:30 AM 224629284 Ubuntu.zip -a---- 8/17/2018 3:15 AM 211968 ubuntu1804.exe -a---- 8/17/2018 3:15 AM 744 [Content_Types].xml
Set the user environment variables by executing the following command:
$userenv = System.Environment::GetEnvironmentVariable("Path", "User") [System.Environment]::SetEnvironmentVariable("PATH", $userenv + "C:\ubuntu", "User")
Install the ubuntu instance by executing ubuntu1804.exe from c:\ubuntu. As part of the installation we defined our first ubuntu user as seen below. Once the session is open you can start using your ubuntu instance right away. The ubuntu session will look like a powershell window which is pretty cool. It will be using the same hostname, memory, disks, etc as the windows host. You basically have access to every resource the windows OS has but you are still running a full featured ubuntu server.
PS C:\ubuntu> .\ubuntu1804.exe Installing, this may take a few minutes… Please create a default UNIX user account. The username does not need to match your Windows username. For more information visit: https://aka.ms/wslusers Enter new UNIX username: user Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Installation successful! To run a command as administrator (user "root"), use "sudo ". See "man sudo_root" for details. user@WIN-72UH30KQAK4:~$ sudo su - [sudo] password for user: root@WIN-72UH30KQAK4:~#
We defined the zabbix repo that matches our distribution. We install zabbix 4.0 LTS in this example.
wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-2+bionic_all.deb dpkg -i zabbix-release_4.0-2+bionic_all.deb apt update apt upgrade
After the ubuntu system is on the latest software level we install the zabbix proxy. We used the MySQL based zabbix proxy installation which will install mariadb as part of the proxy installation.
apt install zabbix-proxy-mysql
Once the proxy is installed we create the zabbix database and user with the following commands.
mysql -u root create database zabbix character set utf8 collate utf8_bin; grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'yourpassword'; quit;
We now create the database schemas for the Zabbix Proxy.
zcat /usr/share/doc/zabbix-proxy-mysql/schema.sql.gz | mysql -uzabbix -p [yourpassword]
The next step is to edit the /etc/zabbix/zabbix_proxy.conf file with your parameters. We use an encrypted active connection between the zabbix proxy and the zabbix server. Hence we also use certificates in the configuration file.
We added the database connection settings to the configuration file:
DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=<yourpassword>
We are not going to go into detail on how to set up the rest of the proxy configuration file. Please follow the official instructions to set up your own configuration parameters in the configuration file.
Before we can start the zabbix proxy we need to create the proxy on the zabbix console. Open your zabbix frontend and go to Administration->Proxies and click “Create proxy” on the upper right corner.
We filled in the hostname of the zabbix proxy and picked the relevant Encryption level checkbox. We used “Cerfiticate”.
If all goes well you will see your new proxy connected like this on the zabbix console.
the resource usage of the mysqld, zabbix-proxy and ubuntu processes show up in the windows task manager like a normal windows process.
Whenever we need to interact with the ubuntu server we can open a session using the following icon on taskbar. The server keeps running regardless these sessions are open or closed.
If you have windows firewall enabled on your server, make sure that your proxy port is open across so agents can connect to it.
The next and last step we had to do is to make sure that the mysql and zabbix-proxy service starts when the windows server is rebooted. By default ubuntu init.d services are not respected so we had to do the following:
Add the following lines to the /etc/sudoers file on ubuntu:
%sudo ALL=(ALL) NOPASSWD: /usr/sbin/service zabbix-proxy * %sudo ALL=(ALL) NOPASSWD: /usr/sbin/service mysql *
Create startservices.sh on ubuntu with the following content:
!/bin/bash sudo service mysql start sudo service zabbix-proxy start
Cretate autostart.vbs on the windows server with the following content.
Set WshShell = CreateObject("WScript.Shell") WshShell.Run "C:\Windows\System32\bash.exe -c /app/startservices.sh",0 Set WshShell = Nothing
Schedule this script to run at start up.
Знакомство с системой
Zabbix — популярная система мониторинга IT-инфраструктуры и приложений с открытым исходным кодом, которой пользуются малые, средние и крупные компании по всему миру. В тексте мы расскажем об установке и настройке пятой версии Zabbix, которая вышла в мае 2020 года.
Основное преимущество продукта — большое сообщество пользователей и, как следствие, множество полезной информации о подходах к использованию, настройке, созданию шаблонов мониторинга и многом другом.
Скачать Zabbix можно на официальном сайте. Продукт поддерживает множество актуальных платформ.
Кроме CentOS, установка Zabbix-сервера из бинарного файла возможна на следующие операционные системы:
- Alma Linux,
- Debian,
- Oracle Linux,
- Raspberry Pi OS,
- Red Hat Enterprise Linux;
- Rocky Linux,
- SUSE Linux Enterprise Server;
- Ubuntu,
- Ubuntu (arm64).
Zabbix и его компоненты
Zabbix — это распределенная система мониторинга, которая состоит из компонентов. Рассмотрим ключевые.
- Zabbix-сервер. Этот компонент — ядро системы мониторинга. Он отвечает за визуализацию, агрегацию и аналитику данных, оповещения, управление распределенными компонентами (прокси и агентами). В качестве web-сервера вендор позволяет использовать Apache или Nginx.
- Zabbix-прокси. Компонент отвечает за управление Zabbix-агентами. Использование прокси опционально, но позволяет снизить нагрузку на Zabbix-сервер за счет переноса с него функций управления агентами и предобработки данных. Эта функциональность появилась как раз в пятой версии Zabbix.
- Zabbix-агент. Агент — конечный компонент инфраструктуры мониторинга. Выполняет сбор и отправку данных о производительности на Zabbix-прокси или Zabbix-сервер.
- База данных Zabbix. Хранилище метрик производительности. Вендор поддерживает реляционные базы данных: MySQL, PostgreSQL, SQL Server, Oracle. Обращаем внимание, что с версии 5.0 прекращена поддержка базы данных IBM DB2.
- Web-интерфейс. Компонент предназначен для мониторинга показателей системы. Также при его помощи можно настраивать отслеживаемые компоненты и основную систему Zabbix.
Готовые решения для установки
Установка Zabbix в виде Docker-контейнера
Установка системы из Docker-контейнера — быстрый способ, который займет не более 10 минут.
1. Добавим репозиторий Docker и установим необходимые пакеты.
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yum install docker-ce docker-ce-cli containerd.io docker-compose
Следующий шаг — клонирование репозитория Zabbix с Github:
# git clone https://github.com/zabbix/zabbix-docker.git
2. Перейдем в клонированный репозиторий и просмотрим содержимое командой ls
.
# cd zabbix-docker/
# ls
agent docker-compose_v3_centos_mysql_local.yaml java-gateway snmptraps
agent2 docker-compose_v3_centos_pgsql_latest.yaml kubernetes.yaml web-apache-mysql
build.sh docker-compose_v3_centos_pgsql_local.yaml LICENSE web-apache-pgsql
docker-compose_v3_alpine_mysql_latest.yaml docker-compose_v3_ubuntu_mysql_latest.yaml proxy-mysql web-nginx-mysql
docker-compose_v3_alpine_mysql_local.yaml docker-compose_v3_ubuntu_mysql_local.yaml proxy-sqlite3 web-nginx-pgsql
docker-compose_v3_alpine_pgsql_latest.yaml docker-compose_v3_ubuntu_pgsql_latest.yaml README.md zabbix-appliance
docker-compose_v3_alpine_pgsql_local.yaml docker-compose_v3_ubuntu_pgsql_local.yaml server-mysql zbx_env
docker-compose_v3_centos_mysql_latest.yaml generate-stackbrew-library.sh server-pgsql
3. Запустим демон Docker.
# systemctl start docker
4. Соберем и запустим контейнеры с Zabbix.
# docker-compose -f docker-compose_v3_centos_pgsql_latest.yaml up -d
5. После запуска компонентов Zabbix, перейдем в web-интерфейс.
Установка Zabbix из готовых образов
Самый быстрый тип установки — из готовых образов. Разворачивание займет не более 5 минут. Рассмотрим установку Zabbix-сервера из образа в формате Open virtualization format (OVF).
Для разворачивания OVF-образа на локальной машине предварительно нужно установить VirtualBox. Последний поддерживает множество актуальных платформ и доступен для скачивания на сайте Oracle. После установки ПО и загрузки образа, приступим к установке.
1. В интерфейсе VirtualBox нажмем кнопку Импортировать.
2. Выберем образ zabbix_appliance-5.0.0.ovf (рядом с ним должен находиться zabbix_appliance-5.0.0-disk001.vmdk). Нажмем Продолжить, а на следующем экране все параметры оставим по умолчанию и нажмем Импорт.
3. Теперь мы можем открыть виртуальную машину соответствующей кнопкой Запустить. Обратите внимание, что для корректного подключения к интерфейсу Zabbix или виртуальной машине по SSH в сетевых настройках должен быть указан тип подключения Сетевой мост.
4. Дожидаемся успешного запуска виртуальной машины, входим под учетными данными root / zabbix в консоли VirtualBox и выполняем команду # ip a
. В результате увидим настройки сети на виртуальной машине с установленным Zabbix.
5. Теперь подключимся к Zabbix-серверу через браузер. Учетные данные стандартные — Admin / zabbix. Данные о производительности начнут собираться сразу. Установка завершена!
Ручная установка
Основные отличия установки
Рассмотрим установку системы на CentOS, Ubuntu, Debian и Windows. При этом важно отметить, что установка на дистрибутивы Ubuntu и Debian практически не отличается, поэтому подробнее остановимся на CentOS и Windows.
Подобрать команды под конкретную версию Zabbix и версию ОС можно на официальном сайте. Для этого нужно только выбрать конфигурацию вашего сервера, а утилита автоматически подберет список команд со ссылками на документацию. Например, установка Zabbix-прокси пятой версии на сервер с Ubuntu 24.04 и БД PostgreSQL будет выглядеть так:
Установка Zabbix-сервера на CentOS
В первую очередь установим сервер.
1. В панели управления перейдем во вкладку Облачная платформа → Проекты и нажмем на кнопку Создать проект. В следующем окне заполняем имя проекта и нажимаем Создать.
2. После создания проекта вернемся во вкладку Облачная платформа → Серверы и нажмем Создать сервер.
3. В окне конфигурирования нового сервера выбираем источник — CentOS 8 64-bit, vCPU — 4, RAM — 8.
Конфигурация зависит от метрик мониторинга, которые вы будете использовать, а также от времени их хранения. Подробнее о требованиях к аппаратному и программному обеспечению — в официальной документации Zabbix.
В подразделе Сеть выбираем Новый публичный IP-адрес, чтобы позже мы могли подключиться к серверу через SSH и к web-консоли Zabbix через браузер. Остальные параметры можно оставить по умолчанию или настроить исходя из ваших требований.
4. В подразделе Доступ копируем пароль root. Нажимаем на кнопку Создать сервер. Как только сервер будет создан, во вкладке Облачная платформа →Серверы около него появится статус Active. Теперь мы можем подключиться к внешнему плавающему IP-адресу по протоколу SSH.
Перейдем к установке репозиториев ПО. Это нужно для получения актуального набора пакетов с компонентами Zabbix и PostgreSQL.
1. Выполним команды для установки компонентов.
# yum install https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# yum clean all
Репозитории с актуальными версиями устанавливаемых компонентов для различных платформ можно найти на сайтах производителей Zabbix и PostgreSQL.
2. Установим Zabbix-сервер и Zabbix-агент.
# yum install zabbix-server-pgsql zabbix-agent
3. Внесем изменения в конфигурацию репозитория Zabbix. Для этого включим Zabbix frontend в файле /etc/yum.repos.d/zabbix.repo
, изменив значение ключа enabled со значения 0 на 1.
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/frontend
enabled=1
gpgcheck=1
gpgkey=file://etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
4. Установим Red Hat Software Collections для упрощения дальнейшей настройки, а также PostgreSQL и другие пакеты.
# yum install centos-release-scl
# yum install postgresql12-server zabbix-web-pgsql-scl zabbix-nginx-conf-scl
Обратите внимание, что в инструкции мы работаем с локальным хранилищем на базе PostgreSQL. Если вы используете MySQL, то имя пакета для Zabbix-сервера будет отличаться.
5. Инициализируем и настроим автозапуск, запустим БД PostgreSQL.
# /usr/pgsql-12/bin/postgresql-12-setup initdb
# systemctl enable postgresql-12
# systemctl start postgresql-12
6. После успешного запуска создадим базу данных для Zabbix и пользователя в ней. Первая команда запросит пароль.
# sudo -i -u postgres createuser --pwprompt zabbix
# sudo -i -u postgres createdb -O zabbix zabbix
7. Внесем изменения в конфигурационный файл /var/lib/pgsql/12/data/pg_hba.conf для корректного подключения к БД PostgreSQL с паролем. Метод для обоих подключений должен быть md5.
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
8. После создания пользователя организуем для него схему по умолчанию.
# sudo -i -u postgres psql -U zabbix
# zabbix=> create schema zabbix;
# zabbix=> ALTER ROLE zabbix SET search_path = zabbix;
# zabbix=> \q
9. Установим в БД схемы данных.
# zcat /usr/share/doc/zabbix-server-pgsql*/create.sql.gz | sudo -u zabbix psql zabbix
10. Впишем созданный для БД пароль в конфигурационный файл Zabbix /etc/zabbix/zabbix_server.conf
. На этом шаге нам нужны параметры DBHost, DBName, DBSchema, DBUser и DBPassword.
Далее — настроим Nginx для корректной работы в Zabbix.
1. Перейдем в конфигурационный файл /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
. Раскомментируем две строки и укажем IP-адрес или имя сервера.
listen 80;
server_name ;
2. Перейдем к файлу /etc/opt/rh/rh-php72/php-fpm.d/zabbix.con
и внесем изменения в двух местах.
listen.acl_users = apache,nginx
php_value[date.timezone] = Europe/Moscow
3. Запустим сервисы Zabbix и добавим их в автозапуск.
# systemctl restart zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
# systemctl enable zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
Если все было настроено верно, то при переходе по имени или адресу сервера в браузере откроется начальное окно настройки Zabbix 5.0.
1. Переходим на экран Configure DB connection и указываем реквизиты подключения к БД.
2. В окне Zabbix server details вводим имя хоста, на котором установлен Zabbix. Порт оставляем по умолчанию.
3. Переходим на последний экран и нажимаем Finish. Настройка завершена.
4. Стандартная учетная запись для входа — Admin с паролем zabbix. Установка завершена и система готова к работе, можно приступать к ее настройке.
В некоторых ситуациях для корректной работы системы Zabbix важно отключить SElinux.
Установка Zabbix-сервера с MySQL в Ubuntu и Debian
Установка Zabbix на Ubuntu и Debian практически идентична из-за схожести дистрибутивов. Отличается только первый этап. Рассмотрим пошаговый процесс установки Zabbix с использованием базы данных MySQL, а также web-серверов Apache и Nginx.
1. Скачаем репозиторий Zabbix, установим его и обновим репозитории. В примере используем Ubuntu 20.04 и Debian 10, но вы можете заменить название дистрибутива исходя из версии.
Для Ubuntu:
wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_5.0+ubuntu20.04_all.deb
dpkg -i zabbix-release_latest_5.0+ubuntu20.04_all.deb
apt update
Для Debian:
# wget https://repo.zabbix.com/zabbix/5.0/debian/pool/main/z/zabbix-release/zabbix-release_latest_5.0+debian10_all.deb
# dpkg -i zabbix-release_latest_5.0+debian10_all.deb
# apt update
2. Установим MySQL, web-интерфейс, Zabbix-сервер, а также Zabbix-агент, если не сделали этого ранее.
Для работы с Apache:
apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-agent
Для работы с Nginx:
apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent
3. Создадим базу данных и пользователя для Zabbix, задаем пароль.
sudo mysql -u root -p
4. В консоли MySQL создадим БД с кодировкой, пользователя и пароль для него, а также выдадим ему доступ к базе данных. Обратите внимание, что система Zabbix поддерживает только кодировку UTF-8.
create database zabbix character set utf8 collate utf8_bin;
create user zabbix@localhost identified by пароль для нового пользователя';
grant all privileges on zabbix.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
quit;
5. Импортируем начальную схему и данные на хосте Zabbix. Система запросит пароль — указываем тот, что создали на предыдущем шаге.
zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix
6. В конфигурационном файле Zabbix-сервера /etc/zabbix/zabbix_server.conf
введем после DBPassword=
пароль для подключения к БД. Далее — сохраним изменения и закроем редактор.
7. Для Apache — отредактируем файл /etc/zabbix/apache.conf
. Раскомментируем строку и установим правильный временной пояс, в нашем примере — московский, но вы можете выбрать любой подходящий.
php_value date.timezone Europe/Moscow
Для Nginx — отредактируем файл /etc/zabbix/nginx.conf
. Раскомментируем и настроим директивы listen и server_name.
listen 80;
server_name example.com;
Также при работе с Nginx важно отредактировать файл /etc/zabbix/php-fpm.conf
. Раскомментируем строку и укажем свой часовой пояс.
php_value[date.timezone] = Europe/Moscow
8. Перезапустим web-сервис и настроим автозапуск при загрузке операционной системы.
Для Apache:
# systemctl restart zabbix-server zabbix-agent apache2
# systemctl enable zabbix-server zabbix-agent apache2
Для Nginx:
# systemctl restart zabbix-server zabbix-agent nginx php7.3-fpm
# systemctl enable zabbix-server zabbix-agent nginx php7.3-fpm
Установка завершена!
Установка агента Zabbix на Windows
Перед началом установки создадим в панели управления сервер с ОС Windows.
1. Во вкладке Облачная платформа → Проекты и нажмем на кнопку Создать проект. В следующем окне заполняем имя проекта и нажимаем Создать.
2. Перейдем во вкладку Облачная платформа → Серверы и нажмем Создать сервер.
3. В окне конфигурирования нового сервера выбираем источник — Windows Server 2016 Standard, vCPU — 4, RAM — 8. Остальные настройки оставляем по умолчанию, однако вы можете конфигурировать сервер исходя из ваших требований.
4. В подразделе Сеть выбираем Новый публичный IP-адрес для подключения к серверу через RDP.
5. В подразделе Доступ копируем пароль учетной записи Administrator для дальнейшего доступа к серверу по RDP. Нажимаем на кнопку Создать сервер.
6. Когда сервер будет готов, во вкладке Облачная платформа → Серверы он перейдет в статус Active. Теперь можно подключаться к внешнему плавающему IP-адресу по протоколу RDP.
Установка и настройка Zabbix-агента на Windows-сервер в ручном режиме занимает около 10 минут. Скачать дистрибутив можно на сайте Zabbix.
1. После скачивания архив распакуем в созданную директорию (в нашем примере — C:\Zabbix).
2. Внесем изменение в конфигурационный файл, который хранится в папке conf.
Server=
3. Установим агент в виде сервиса и запустим его. Для этого выполним zabbix_agentd со специальными реквизитами.
> zabbix_agentd.exe -c C:\Zabbix\conf\zabbix_agentd.conf -i
> zabbix_agentd.exe -c C:\Zabbix\conf\zabbix_agentd.conf --start
4. Добавим агента в web-интерфейсе Zabbix. Перейдем во вкладку Configuration → Hosts и в верхнем правом углу нажмем Create Host.
5. Введем данные сервера — имя, группу и сетевой интерфейс, через который будет выполняться подключение к агенту.
6. Перейдем на вкладку Templates. Так как речь идет об ОС Windows, применим к узлу соответствующий шаблон Template OS Windows by Zabbix agent. Сохраним изменения и подождем начала сбора метрик.
7. Собираемые по узлам метрики доступны на представлении Monitoring → Latest Data. Напротив каждой метрики (Item) есть кнопка Graph, при нажатии на которую открывается соответствующий график. Настройка мониторинга узла с ОС Windows завершена!
Настройка и интеграция Zabbix 5
Рассмотрим добавление пользователя, настройку оповещений и изменение шаблонов мониторинга. Также опишем ключевые технологии и элементы инфраструктуры Zabbix.
Настройка web-интерфейса
В web-интерфейсе мы можем настроить отчеты и мониторить работу серверов. Важно отметить, что фронтенд Zabbix написан на PHP, поэтому для запуска нужен сервер с его поддержкой.
1. Откроем в браузере URL-адрес web-интерфейса Zabbix. Для Nginx — http://<server_ip_or_name>
, для Apache — http://<server_ip_or_name>/zabbix
. Так мы попадем на первую страницу установки. Переходим к следующему этапу, нажав кнопку Next step.
2. Во втором окне убедимся, что на всех строках зафиксирован статус OK.
3. Проверяем поля для подключения к БД. Автоматически заполнено все, кроме пароля. Вводим его.
4. Оставляем поля по умолчанию. Поле Name — опциональное, но при указании имени сервера оно будет отображаться в меню и заголовках страниц.
5. Проверяем настройки и переходим далее.
6. Установка завершена. Нажимаем Finish.
7. Переходим на страницу авторизации, вводим имя и пароль для входа в web-интерфейс.
Добавление пользователя
Для каждого пользователя в Zabbix есть имя и пароль — реквизиты, с которыми можно войти в систему. Все пароли в Zabbix хранятся в зашифрованном виде, а при необходимости можно настроить авторизацию пользователей через Active Directory или LDAP. Рассмотрим работу встроенных в Zabbix пользователей.
Важный нюанс: в системе Zabbix каждый пользователь должен входить в группу. На их основе присваиваются соответствующие права. Создадим пользователя и рассмотрим на примере.
1. В web-интерфейсе Zabbix перейдем в раздел Administration, далее — во вкладку Users. В верхнем правом углу нажмем Create User.
2. Укажем имя пользователя, группу и пароль. Остальные поля можно оставить по умолчанию.
3. Для каждого пользователя можно указать его данные для оповещения: электронную почту, аккаунт в Telegram, имя в Slack и т. д. Для этого перейдем на страницу Media, нажмем Add. В качестве примера выберем Type — Email и укажем адрес электронной почты. Также здесь можно задать критичность событий, по которым нужно отправлять уведомления, а также интервал оповещений.
4. После внесения всей информации нажмем Add во вкладке User и сохраним созданного пользователя.
Важно: для любого пользователя мы можем сменить пароль. Для этого в Administration → Users нужно выбрать соответствующую учетную запись, нажать Change password и ввести новый пароль.
Теперь создадим группу пользователей.
1. Переходим во вкладку Administration → User groups. В верхнем правом углу нажимаем Create user group.
2. Указываем имя группы и созданного пользователя.
3. На странице Permissions указываем имя группы хостов, к данным по которой у создаваемой группы будет доступ. Нажимаем Add.
4. Группа создана. Ей предоставлен требуемый уровень прав, а также привязан пользователь.
Также важно отметить, что одно из нововведений пятой версии Zabbix — поддержка SAML (Security Assertion Markup Language), — открытого стандарта обмена данными аутентификации. Он позволяет использовать одни учетные данные для авторизации и получения доступа в нескольких приложениях.
Помимо прочего, SAML упрощает процесс интеграции с многими облачными провайдерами идентификации. Однако стандарт требует отдельного внимания, так что подробнее о его применении еще расскажем в отдельном тексте.
Низкоуровневое обнаружение (Low Level Discovery, LLD)
Низкоуровневое обнаружение позволяет автоматически ставить на мониторинг динамические экземпляры узлов. Например, файловые системы или сетевые интерфейсы, которые добавят администраторы, автоматически обнаружатся и появятся в системе мониторинга. Помимо прочего, в рамках шаблона можно настроить правила автоматического обнаружения.
В качестве примера рассмотрим Discovery Rules (правила обнаружения) для шаблона Windows. Здесь их четыре для следующих сущностей:
- файловых систем,
- сетевых интерфейсов,
- физических дисков,
- сервисов.
Рассмотрим устройство правила обнаружения для файловых систем. В поле Key указан элемент данных vfs.fs.discovery, встроенный в Zabbix. Он возвращает список файловых систем, примонтированных к серверу. Другие встроенные элементы данных собраны на отдельной странице производителя.
Во вкладке Filters перечислены прототипы данных, которые в случае обнаружения новых элементов распознают их и запишут в БД.
Помимо прочего, Zabbix поддерживает добавление собственных элементов данных, фильтров и макросов.
Изменение шаблонов Zabbix
Шаблоны в Zabbix включают в себя следующие компоненты:
- приложения (Applications),
- экземпляры (Items),
- макросы (Macros),
- триггеры (Triggers),
- правила обнаружения (Discovery rules),
- другие элементы данных.
Каждый из элементов отвечает за свои уникальные возможности. Разберем формирование пороговых схем в триггерах на примере шаблона для Windows и его части — шаблона для файловых систем.
В примере ниже мы видим прототипы триггеров, которые соответствуют порогам по файловым системам Windows-серверов. Чтобы изменить пороговую схему, достаточно перейти в нужный шаблон и внести корректировки.
Получить подробную информацию о создании выражений для настройки порогов можно в документации Zabbix.
Zabbix-прокси
Zabbix-прокси (Zabbix proxy) — процесс, который собирает данные мониторинга и позволяет отправлять их Zabbix-серверу. Он обеспечивает буферизацию информации, которая поступает от агентов, а также ее дальнейшую трансляцию в сторону Zabbix-сервера. Zabbix-прокси использует отдельную базу данных и поддерживает SQLite, MySQL и PostgreSQL.
Zabbix proxy можно эффективно использовать для сбора метрик с агентов в выделенных или удаленных сетях (за файерволом), участков инфраструктуры с ненадежной связью, а также для снижения нагрузки на Zabbix-сервер. Начиная с версии 5.0 прокси поддерживает предобработку данных на своей стороне.
Настройка шифрованной передачи данных
Шифрование данных между Zabbix-агентом и Zabbix-сервером — важный аспект безопасности, особенно при передаче данных через интернет без использования защищенного (зашифрованного) канала. Рассмотрим настройку с использованием предварительно согласованных ключей (Pre-Shared Keys, PSK). Это можно сделать, например, с помощью GnuTLS или OpenSSL. Рассмотрим второй вариант.
Генерация Pre-Shared Key (PSK)
Сгенерируем 256-битный (32-байтный) PSK. На хосте с установленным Zabbix-агентом выполним следующую команду в консоли. Она создаст файл с ключом по указанному пути.
openssl rand -hex 32 > /etc/zabbix5/zabbix_agentd.psk
Настройка агента Zabbix
Откроем конфигурационный файл агента zabbix_agentd.conf и добавим параметры.
- TLSConnect — указывает, что агент будет использовать PSK для подключения.
- TLSAccept — разрешает серверу подключаться с использованием PSK.
- TLSPSKFile — путь к файлу с ключом.
- TLSPSKIdentity — уникальный идентификатор ключа.
TLSConnect=psk
TLSAccept=psk
TLSPSKFile=/etc/zabbix/zabbix_agentd.psk
TLSPSKIdentity=PSK 001
После внесения изменений важно перезапустить Zabbix Agent.
systemctl restart zabbix-agent
Настройка шифрования на Zabbix Server
Перейдем в web-интерфейс Zabbix-сервера и выполним следующие действия.
- Откроем свойства хоста, данные от которого передаются через агент.
2. Перейдем во вкладку Шифрование.
3. Укажем следующие настройки:
- в полях Тип подключения и Соединение с узлом сети — PSK,
- идентификатор PSK — PSK 001 (должен совпадать с
TLSPSKIdentity
в конфигурации агента), - сгенерированный ключ из файла
/etc/zabbix/zabbix_agentd.psk
.
Если шифрование настроено корректно, на странице информации о хосте в web-интерфейсе Zabbix Server будет отображена пометка о зашифрованном соединении. Настройка обеспечивает безопасную передачу данных и минимизирует риски утечки конфиденциальной информации.
Интеграция Zabbix с внешними системами
Разберем возможности интеграции Zabbix с системой визуализации Grafana, которую можно использовать для отображения статусов, графиков, значений и других типов данных.
Об инструменте Grafana, его установке и настройке, подключении внешних источников данных и не только — в отдельном обзоре.
1. Установим и запустим Grafana в виде Docker-контейнера.
# docker run -d -p 3000:3000 grafana/grafana
2. После установки убедимся, что контейнер с Grafana выполняется.
# docker ps | grep grafana
1592a00802b5 grafana/grafana "/run.sh" 2 minutes ago Up 21 minutes 0.0.0.0:3000->3000/tcp optimistic_diffie
3. Используя ID контейнера, установим специализированный плагин для Zabbix и перезагрузим контейнер.
# docker exec 1592a00802b5 grafana-cli plugins install alexanderzobnin-zabbix-app
# docker restart 1592a00802b5
4. Войдем в Grafana через браузер (учетные данные по умолчанию — admin / admin).
5. Активируем плагин для Zabbix. Чтобы это сделать, перейдем в Configurations → Plugins и нажмем Enable.
6. Плагин включен, перейдем к конфигурации. Важные поля для заполнения — URL, User, Password. Остальные настройки можно оставить по умолчанию.
7. Настройка завершена. Можно добавлять на дашборды различные элементы данных на основе метрик из Zabbix.
У Grafana есть множество готовых дашбордов. Их можно найти на сайте проекта и импортировать через web-интерфейс.
Сервер с Zabbix в Selectel
Если нет времени на настройку Zabbix с нуля, в панели управления вы можете создать облачный сервер с готовым приложением Zabbix. Для каждого образа с приложением выполнена подготовка рабочего окружения, настройка необходимых параметров и сборка. Важно отметить, что в этом случае вы оплачиваете только ресурсы облачной платформы.
1. Во вкладке Облачная платформа → Серверы нажмем Создать сервер.
2. Введем имя сервера, выберем регион и пул. От сегмента пула зависит список доступных конфигураций сервера и стоимость ресурсов.
3. Откроем раздел Источник и перейдем во вкладку Приложения. Здесь доступно ПО для администрирования, разработки, проведения видеоконференций и обеспечения информационной безопасности. В списке находим Cloud Zabbix.
4. В блоке Конфигурация выберем фиксированную или произвольную конфигурацию сервера, настроим загрузочный диск. Советуем при настройке исходить из количества метрик мониторинга, которые вы хотите использовать, а также от времени их хранения. Подробнее о расчете конфигурации сервера — в официальной документации Zabbix.
5. В блоке Сеть настроим приватную подсеть и подключим публичный IP-адрес.
6. Укажем пользовательские параметры конфигурации операционной системы. В блоке Автоматизация в поле User data вставим скрипт, который выполнится при загрузке системы. В него можно добавить дополнительные параметры.
При создании сервера с выпуском TLS-сертификата:
#cloud-config
write_files:
- path: "/opt/gomplate/values/user-values.yaml"
permissions: "0644"
content: |
pg_password: ""
zabbixDomain:
leEmail:
httpsMethod: redirect
При создании сервера без выпуска TLS-сертификата:
#cloud-config
write_files:
- path: "/opt/gomplate/values/user-values.yaml"
permissions: "0644"
content: |
admin_password: ""
zabbixDomain:
Вместо <bd_user_password>
укажем пароль пользователя базы данных, который должен содержать:
- более восьми символов,
- не менее одной прописной буквы,
- не менее одной строчной буквы,
- не менее одной цифры.
<example.com>
— домен для доступа к Zabbix. Для домена нужно добавить A-запись и указать в значении записи ваш публичный IP-адрес. Если домен добавлен в DNS-хостинг Selectel (actual), используйте инструкцию Добавить ресурсную запись. После создания сервера для домена автоматически выпустится TLS-сертификат от Let’s Encrypt®.
7. Проверим цену облачного сервера и нажмем Создать сервер.
Заключение
В статье мы рассмотрели различные подходы для установки Zabbix и рассмотрели дополнительные настройки. Этого достаточно для конфигурации базового мониторинга, контроля инфраструктуры и приложений.
Для визуализации, например, статусов доступности и производительности мы рекомендуем использовать удобный инструмент Grafana. Он легко устанавливается и настраивается, о чем мы рассказали в обзоре. Кроме того, есть мобильное приложение, в котором можно просматривать «здоровье» инфраструктуры в режиме реального времени.
Читайте также:
Установка Zabbix сервера, агента и прокси
Мамкин АдминНа днях разворачивал с нуля новую копию Zabbix сервера, т.к. мой старый сервер, который отработал верой и правдой несколько лет и пережил кучу экспериментов, покрылся кучей ошибок и в итоге после очередного обновления благополучно сдох.
Это послужило стимулом все начать сначала.
Приведу выжимку из команд с минимальными комментариями по установке самого сервера, клиентов и разворачиванию активного прокси сервера Zabbix.
Установку всех компонентов буду выполнять на Debian 11 «bullseye».
1.Установка и настройка Zabbix сервера
Установка Mariadb
- apt update -y
- apt install wget curl apt-transport-https mc
- wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
- echo «d4e4635eeb79b0e96483bd70703209c63da55a236eadd7397f769ee434d92ca8 mariadb_repo_setup» | sha256sum -c —
- chmod +x mariadb_repo_setup
- ./mariadb_repo_setup
- apt update -y
- apt install mariadb-server mariadb-client
- systemctl start mariadb
- systemctl enable mariadb
- mysql_secure_installation
mysql_secure_installation
Enter current password for root (enter for none): OK, successfully used password, moving on... Switch to unix_socket authentication [Y/n] y Enabled successfully! Reloading privilege tables.. ... Success! Change the root password? [Y/n] n ... skipping. Remove anonymous users? [Y/n] y ... Success! Disallow root login remotely? [Y/n] y ... Success! Remove test database and access to it? [Y/n] y - Dropping test database... ... Success! - Removing privileges on test database... ... Success! 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.
Установка Zabbix
- wget https://repo.zabbix.com/zabbix/6.2/debian/pool/main/z/zabbix-release/zabbix-release_6.2-1+debian11_all.deb
- dpkg -i zabbix-release_6.2-1+debian11_all.deb
- apt update -y
- apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
Настройка БД
- mysql -uroot -p
- create database zabbix character set utf8mb4 collate utf8mb4_bin;
- create user zabbix@localhost identified by ‘password’;
- grant all privileges on zabbix.* to zabbix@localhost;
- SET GLOBAL log_bin_trust_function_creators = 1;
- quit;
- zcat /usr/share/doc/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix
- mysql -uroot -p
- SET GLOBAL log_bin_trust_function_creators = 0;
- quit;
Минимальная настройка Конфигов
- mcedit /etc/zabbix/zabbix_server.conf
- DBPassword=password
- mcedit /etc/zabbix/nginx.conf
- listen 8080;
- #server_name server.example.com;
Раскомментировать, если сервер смотрит наружу напрямую.
Я использую перед ним прокси сервер Nginx, который смотрит в мир и управляет доменами. Порт и домен выбираете на свой вкус.
Также строку с доменом можно оставить закомментированной, если планируется использование сервера только в локальной сети.
Финишные штрихи
- systemctl stop apache2
- systemctl disable apache2
- systemctl restart zabbix-server zabbix-agent nginx
- systemctl enable zabbix-server zabbix-agent
Доступ к веб интерфейсу
Дальше нужно несколько раз нажать далее-далее-далее в WEB интерфейсе, чтобы завершить настройку.
http://LAN_IP:8080/setup.php Admin zabbix
2.Установка и настройка Zabbix-proxy
Zabbix-proxy очень полезная штука.
Как известно, Zabbix сервер может соединяться с агентами в двух режимах — активном и пассивном (стандартном).
Различие этих режимов в том, что в стандартном режиме сервер подключается к агенту, запрашивает данные, и агент отправляет результат обратно серверу.
В активном режиме сначала агент должен запросить с сервера список элементов данных для независимой обработки, т.е. подключение идет в обратную сторону, от агента к серверу.
Из оф. документации:
Пассивная проверка:
- Сервер открывает TCP соединение
- Сервер отправляет agent.ping\n
- Агент получает запрос и отвечает <HEADER><DATALEN>1
- Серверные процессы обрабатывают данные полученного значения, в нашем случае «1».
- TCP соединение закрывается
Активная проверка:
- Агент открывает TCP соединение
- Агент запрашивает список элементов данных
- Сервер отвечает списком элементов данных (ключ элемента, задержка)
- Агент обрабатывает ответ
- TCP соединение закрывается
- Агент начинает периодический сбор данных
…далее:
- Агент открывает TCP соединение
- Агент отправляет список значений
- Сервер обрабатывает полученные данные и отправляет обратно результат обработки
- TCP соединение закрывается
Отсюда можно сделать вывод, что для пассивного подключения у сервера должен быть доступ к агенту, это не составляет никаких неудобств, если например, и сервер и агенты находятся в одной локальной сети.
Но если агенты находятся по разные стороны интернета, тогда придется на каждого агента пробрасывать свой порт, прописывать агенты вручную на сервер, а в настройках агентов в веб интерфейсе сервера указывать внешний статический адрес, за которым они находятся, и каждому свой порт для подключения — неудобно.
Для этого и существует второй способ — активный, когда только сервер должен иметь статику и один проброшенный на сервер порт (по-умолчанию 10051).
В таком случае все агенты смогут спокойно подключаться к серверу из-за ната через интернет.
Так в чем проблема?
В шаблонах, большинство шаблонов написаны для использования с пассивным (стандартным) агентом, а также в отслеживании состояния самого агента, пассивный агент отслеживается методом опроса самого агента, активный же по косвенным признакам.
Решение есть — Zabbix-proxy.
Zabbix-proxy можно установить непосредственной в сети, где работают агенты, и тогда уже он будет подключаться к серверу в активном режиме, а также к агентам в сети в обычном режиме, что позволит к ним применять все шаблоны для пассиных агентов, а также отслеживать их состояние, опрашивая сам агент.
Также преимущество Zabbix-proxy в том, что можно через инетрнет с помощью него проводить не только опросы агентов, но и опросы любого оборудования, которое находится за натом в удаленной частной локальной сети, к которому доступа извне нет.
Например, это могут быть различные коммутаторы и маршрутизаторы, железные серверы видеонаблюдения, да хоть принтеры, которые поддерживают SNMP.
Список поддерживаемых проверок в таком режиме большой, вплоть до отслеживания отдельных процессов и автоматизации с подключением к устройству для автоматического выполнения действий при возникновении проблем.
Установка Zabbix-proxy
- apt update -y
- apt install wget curl apt-transport-https mc
- wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
- echo «d4e4635eeb79b0e96483bd70703209c63da55a236eadd7397f769ee434d92ca8 mariadb_repo_setup» | sha256sum -c —
- chmod +x mariadb_repo_setup
- ./mariadb_repo_setup
- apt update -y
- apt install mariadb-server mariadb-client
- systemctl start mariadb
- systemctl enable mariadb
- mysql_secure_installation
- wget https://repo.zabbix.com/zabbix/6.2/debian/pool/main/z/zabbix-release/zabbix-release_6.2-1+debian11_all.deb
- dpkg -i zabbix-release_6.2-1+debian11_all.deb
- apt update -y
- apt install zabbix-proxy-mysql zabbix-sql-scripts
- mysql -uroot -p
- create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin;
- create user zabbix@localhost identified by ‘password’;
- grant all privileges on zabbix_proxy.* to zabbix@localhost;
- SET GLOBAL log_bin_trust_function_creators = 1;
- quit;
- cat /usr/share/doc/zabbix-sql-scripts/mysql/proxy.sql | mysql -uroot zabbix_proxy
- mysql -uroot -p
- SET GLOBAL log_bin_trust_function_creators = 0;
- quit;
- systemctl start zabbix-proxy
- systemctl enable zabbix-proxy
Настройка Zabbix-proxy
- mcedit /etc/zabbix/zabbix_proxy.conf
- ProxyMode=0
- Server=server.example.com:51051 # если порт не указывать, прокси будет пытаться подключиться на 10051, этот порт отличается от порта WEB интерфейса сервера и должен быть проброшен на сервер отдельно
- Hostname=Proxy1
- DBPassword=password
- AllowRoot=1 # ставлю от рута, поэтому надо разрешить проксе работать также от рута
- TLSConnect=psk
- TLSPSKIdentity=Proxy_psk_identity # это значение укажем при настройке прокси на сервере Zabbix
- TLSPSKFile=/etc/zabbix/key2.psk
- echo «passphrase2» > /etc/zabbix/key2.psk
passphrase2 — результат вывода команды: openssl rand -hex 256
чтобы включить шифрование для передачи данных через интернет,
это значение также укажем при настройке прокси на сервере Zabbix
- systemctl restart zabbix-proxy
- systemctl enable zabbix-proxy
Настройка Прокси на сервере Zabbix
В веб интерфейсе сервера переходим в:
Администрирование —> Прокси —> Создать прокси.
Выбираем «Активный», имя прокси вводим такое же, как указали в конфиге «Proxy1», в шифровании оставляем только галочку «PSK» и вводим значения:
«Proxy_psk_identity» —> «Идентификатор PSK» и «passphrase2» —> «PSK».
3.Установка и настройка Zabbix-agent2
Существует две версии агентов, Zabbix-agent и Zabbix-agent2.
Если вкратце, то Zabbix-agent2 новее, продвинутее и имеет больше возможностей.
Но бывали случаи, когда на старые версии Windows ставился только Zabbix-agent.
Ставится он уже привычным нам способом:
Установка Zabbix-agent2 на Debian
- apt update -y
- wget https://repo.zabbix.com/zabbix/6.2/debian/pool/main/z/zabbix-release/zabbix-release_6.2-1+debian11_all.deb
- dpkg -i zabbix-release_6.2-1+debian11_all.deb
- apt update -y
- apt install zabbix-agent2 mc
- echo «passphrase» > /etc/zabbix/key.psk
passphrase — результат вывода команды: openssl rand -hex 256
чтобы включить шифрование для передачи данных через интернет, а также иметь возможность авторегистрации агентов (мы же не собираемся все 100500 агентов вбивать руками на сервере) даже подключенных через Zabbix-proxy.
Это значение отличается от passphrase2.
Установка Zabbix-agent2 на Windows
Качаем агента по ссылке.
Запускаем .msi файл, вбиваем настройки нашего сервера или прокси, ставим галочку PSK и указываем данные ключа passphrase
и данные идентификации ключа, например Agent_psk_identity
.
Настройка Zabbix-agent2
Настройка в общем виде сводится к изменению конфига, и одинакова что для Windows, что для Linux, за исключением пути к key.psk
Опишу настройку в Linux
- mcedit /etc/zabbix/zabbix_agent2.conf
- Server=server.example.com,LAN_IP_PROXY # можно указать несколько адресов серверов или прокси, с которых агент будет принимать соединения в пассивном режиме
- ServerActive=server.example.com:51051,LAN_IP_PROXY
- Hostname=PC # Так наш агент будет отображаться на Zabbix сервере
- TLSConnect=psk
- TLSAccept=psk
- TLSPSKIdentity=Agent_psk_identity
- TLSPSKFile=/etc/zabbix/key.psk
для Windows пути будут:
TLSPSKFile=C:\Program Files\Zabbix Agent 2\key.psk
или
TLSPSKFile=C:\Program Files\Zabbix Agent\key.psk - systemctl restart zabbix-agent2
- systemctl enable zabbix-agent2
Авторегистрация активных агентов или агентов, подключенных через прокси
В веб интерфейсе сервера переходим в:
Администрирование —> Общие —> Авторегистрация
Оставляем только галочку «PSK» и вводим значения:
«Agent_psk_identity» —> «Идентификатор PSK» и «passphrase» —> «PSK».
Далее переходим в:
Настройка —> Действия —> Действия авторегистрации
На вкладке «Дейстия» даем любое имя, на вкладке «Операции» выбираем «Добавить» и из списка выбираем «Добавить узел сети».
Теперь наши агенты будут автоматически регистрироваться на сервере под теми именами, которые мы укажем в конфиге агентов в строчке «Hostname=PC».
Агенты будут попадать в группу узлов «Discovered hosts», им нужно будет присоединить в настройках необходимые шаблоны и дождаться обновления данных.
В действиях авторегистрации можно полностью автоматизировать, в какую группу будут помещаться новые агенты, какие шаблоны им будут автоматически назначены и т.д.
В том числе это можно автоматизировать с помощью настроек метаданных «HostMetadata» в конфигах агентов, а также указанием, из каких прокси пришли агенты и т.д.
Возможно, когда-нибудь я напишу о более тонкой настройке Zabbix сервера и возможностях автоматизации с помощью него.
Если вы захотите прокомментировать написанное, будем рады увидеть вас в нашем Telegram канале.
Zabbix прокси – это один из компонентов инфраструктуры Zabbix, который позволяет собирать данные мониторинга с нескольких устройств и отправлять данные на Zabbix Server. Zabbix Proxy можно использовать для сбора данных мониторинга в удаленных локациях, с хостов за межсетевым экраном, или для уменьшения нагрузки на центральный Zabbix Server в больших корпоративных сетях.
В этой статье мы покажем, как установить и настроить Zabbix Proxy на Linux (на примере Rocky Linux/ Oracle/RHEL 8).
Подключите репозиторий zabbix:
$ sudo rpm -Uvh https://repo.zabbix.com/zabbix/5.4/rhel/8/x86_64/zabbix-release-5.4-1.el8.noarch.rpm
$ sudo dnf clean all
Установите пакеты:
$ sudo dnf install -y zabbix-proxy-sqlite3 zabbix-agent policycoreutils-python-utils nano
Создайте каталог для базы данных SQLite:
$ sudo mkdir /var/lib/zabbix/
$ sudo chown -R zabbix. /var/lib/zabbix/
Отредактируйте конфигурационный файл:
$sudo nano /etc/zabbix/zabbix_proxy.conf
Server=10.1.15.10 #адрес Zabbix Server Hostname=sp-zbprx1 # имя Zabbix Proxy LogFile=/var/log/zabbix/zabbix_proxy.log LogFileSize=1024 PidFile=/var/run/zabbix/zabbix_proxy.pid SocketDir=/var/run/zabbix DBName=/var/lib/zabbix/zabbix_proxy DBUser=zabbix SNMPTrapperFile=/var/log/snmptrap/snmptrap.log Timeout=4 LogSlowQueries=3000 StatsAllowedIP=127.0.0.1
Запустите zabbix-proxy (обязательно, т.к. это создаст правила для selinux):
$ sudo systemctl start zabbix-proxy
Если на хосте включен Selinux, нужно добавить разрешающие правила:
$ cd /tmp
$ sudo grep zabbix_proxy /var/log/audit/audit.log | grep denied | audit2allow -m zabbix_proxy > zabbix_proxy.te
$ sudo grep zabbix_proxy /var/log/audit/audit.log | grep denied | audit2allow -M zabbix_proxy
$ sudo semodule -i zabbix_proxy.pp
Включите службу zabbix-proxy:
$ sudo systemctl start zabbix-proxy
$ sudo systemctl enable zabbix-proxy
$ sudo systemctl status zabbix-proxy
Логи Zabbix прокси можно вывести так:
$ sudo tail -f /var/log/zabbix/zabbix_proxy.log
Для защиты подключений между прокси и сервером Zabbix с помощью шифрования, мы дополнительно установим pre-shared key (PSK).
Сгенерируйте PSK ключ:
$ openssl rand -hex 32 | sudo tee /var/lib/zabbix/proxy.psk
$ sudo chown zabbix. /var/lib/zabbix/proxy.psk
Добавьте информацию о PSK в конфигурационный файл zabbix proxy:
$ sudo nano /etc/zabbix/zabbix_proxy.conf
####### TLS-RELATED PARAMETERS ####### TLSConnect=psk TLSPSKIdentity=sp-zbprx1 TLSPSKFile=/var/lib/zabbix/proxy.psk
Перезапустите сервис:
$ sudo systemctl restart zabbix-proxy
Зарегистрируйте ваш прокси в веб-интерфейсе Zabbix Server и укажите ваш PSK ключ.
Video Lecture
Description
I start with a brand-new installation of Raspberry Pi OS Lite. I use the 64 Bit version without the Desktop GUI.
You can get the installer from https://www.raspberrypi.com/software/
Raspberry Pi OS Lite doesn’t enable SSH by default so it is important to enable it using the installer interface before you continue.
After creating the install media, I insert it into my Raspberry Pi, power it up and then SSH onto it.
Next,
I install Zabbix Proxy to manage communication between the Server and Agents on my local network.
Note
It is important to know which operating system you intend to use for your proxy.
To find which operating system you are using, at the prompt, type one of these commands,
hostnamectl
cat /etc/os-release
lsb_release -a
On my raspberry pi, hostnamectl returns Operating System: Debian GNU/Linux 12 (bookworm)
I select Raspberry Pi OS
for the OS distribution and 12 (Bookworm)
for the OS version on the Zabbix download page.
My Raspberry Pi is running Raspbian PI OS Lite (64 Bit) (No desktop GUI).
The commands used in this lecture are,
|
Note
Remember that if you are not a root
user, then prefix your commands with sudo
|
|
Other database options for Zabbix proxy are MySQL and PostgreSQL.
They can be installed by using
|
or
|
Note that with the sqlite3
version, you won’t need to install the database schema since it will be automatically created if it doesn’t already exist.
If you use MySQL or PostgreSQL then you also need to install the schema.
Edit Proxy Configuration file
Edit the Server, Hostname and DBName parameters.
|
zabbix_proxy.conf
Key | Value | Notes |
---|---|---|
Proxymode | 0 | 0 = Active. This is the default already. |
Server | domain name or IP | The DNS name or IP address of your Zabbix server. |
Hostname | raspberrypi | Use whatever hostname you desire. |
DBName | /tmp/zabbix_proxy.db | I am using the SQLite3 database option. |
I save, then I enter
|
To ensure that Zabbix Proxy auto starts after reboot then enter,
|
Add Proxy to Zabbix Server UI
I then create the proxy in Zabbix Server UI, then after several seconds, I refresh the proxy config screen and it will show that the proxy is now in communication with the server.
Zabbix UI ⇾ Administration ⇾ Proxies
Key | Value | Notes |
---|---|---|
Proxy name | raspberrypi | (see notes below) |
Proxy mode | Active | The is the same as is set on the configuration file on the proxy server. |
Note
The Proxy name must be the same name you configured in the Hostname parameter in the proxy configuration file /etc/zabbix/zabbix_proxy.conf on your proxy server.
In my example, it doesn’t matter that my Zabbix server is on a different network than the proxy. All messages received on the Zabbix Server from the external Proxy will contain this hostname in the payload, so the Zabbix Server process will reject anything that doesn’t match.
Also note that the Proxy name is the only required parameter on this form. You don’t need anything else to make it work.
For extra security also use PSK encryption, but that is discussed later on the course in the section Enable PSK Encryption. The process is conceptually the same for the Proxy, except, you add your PSK values to the /etc/zabbix/zabbix_proxy.conf on your proxy server, rather than the agent configs /etc/zabbix/zabbix_agentd.conf as discussed in the example. You also configure this on the Zabbix UI in the Administration ⇾ proxies ⇾ [Your proxy] ⇾ Encryption. This method is for communications between the Zabbix server and the Proxy only. I advise doing the Agent example of setting up PSK before trying to do PSK encryption for the Zabbix Server<—>Proxy communications unless you are totally confident you know what you are doing. Make sure all your communications between all your hosts, proxies, server are working before adding encryption to any parts of the communications between any components, since it wil make problem solving much harder. Solve one problem at a time.
Troubleshooting
Proxy Configuration
Check the output of
|
Check the output of
|
Also be sure that the name of your proxy in the Zabbix User Interface, Administration ⇾ Proxies
is the same as your Hostname
setting in the Zabbix proxy config in /etc/zabbix/zabbix_proxy.conf
Useful Links
Proxies