Zabbix proxy установка на windows

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 можно на официальном сайте. Продукт поддерживает множество актуальных платформ. 

Поддерживаемые платформы Zabbix 5.

Поддерживаемые платформы Zabbix 5.

Кроме 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-интерфейс.

Web-интерфейс Zabbix.

Web-интерфейс Zabbix.

Установка Zabbix из готовых образов

Самый быстрый тип установки — из готовых образов. Разворачивание займет не более 5 минут. Рассмотрим установку Zabbix-сервера из образа в формате Open virtualization format (OVF). 

Готовые образы Zabbix.

Для разворачивания OVF-образа на локальной машине предварительно нужно установить VirtualBox. Последний поддерживает множество актуальных платформ и доступен для скачивания на сайте Oracle. После установки ПО и загрузки образа, приступим к установке. 

1. В интерфейсе VirtualBox нажмем кнопку Импортировать.

Стартовая страница Oracle VM VirtualBox.

2. Выберем образ zabbix_appliance-5.0.0.ovf (рядом с ним должен находиться zabbix_appliance-5.0.0-disk001.vmdk). Нажмем Продолжить, а на следующем экране все параметры оставим по умолчанию и нажмем Импорт.

Выбор конфигурации.

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

Виртуальная машина в Oracle VM VirtualBox.

4. Дожидаемся успешного запуска виртуальной машины, входим под учетными данными root / zabbix в консоли VirtualBox и выполняем команду # ip a. В результате увидим настройки сети на виртуальной машине с установленным Zabbix.

Настройки сети на виртуальной машине.

5. Теперь подключимся к Zabbix-серверу через браузер. Учетные данные стандартные — Admin / zabbix. Данные о производительности начнут собираться сразу. Установка завершена! 

Экран авторизации Zabbix.

Страница авторизации.
Страница сбора данных о производительности в Zabbix.

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

Ручная установка

Основные отличия установки

Рассмотрим установку системы на CentOS, Ubuntu, Debian и Windows. При этом важно отметить, что установка на дистрибутивы Ubuntu и Debian практически не отличается, поэтому подробнее остановимся на CentOS и Windows. 

Подобрать команды под конкретную версию Zabbix и версию ОС можно на официальном сайте. Для этого нужно только выбрать конфигурацию вашего сервера, а утилита автоматически подберет список команд со ссылками на документацию. Например, установка Zabbix-прокси пятой версии на сервер с Ubuntu 24.04 и БД PostgreSQL будет выглядеть так:

Скриншот официального сайта Zabbix. Утилита для подбора команд.

Установка Zabbix-сервера на CentOS

В первую очередь установим сервер. 

1. В панели управления перейдем во вкладку Облачная платформа → Проекты и нажмем на кнопку Создать проект. В следующем окне заполняем имя проекта и нажимаем Создать.

Создание проекта в панели управления Selectel.

Создание проекта в панели управления Selectel.

2. После создания проекта вернемся во вкладку Облачная платформа → Серверы и нажмем Создать сервер

Создание сервера в панели управления Selectel.

3. В окне конфигурирования нового сервера выбираем источник — CentOS 8 64-bit, vCPU — 4, RAM — 8. 

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

В подразделе Сеть выбираем Новый публичный IP-адрес, чтобы позже мы могли подключиться к серверу через SSH и к web-консоли Zabbix через браузер. Остальные параметры можно оставить по умолчанию или настроить исходя из ваших требований.

Конфигурация нового сервера в панели управления Selectel.

4. В подразделе Доступ копируем пароль root. Нажимаем на кнопку Создать сервер. Как только сервер будет создан, во вкладке Облачная платформа →Серверы около него появится статус Active. Теперь мы можем подключиться к внешнему плавающему IP-адресу по протоколу SSH.

Cозданный сервер во вкладке «Серверы».

Перейдем к установке репозиториев ПО. Это нужно для получения актуального набора пакетов с компонентами 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=&gt; create schema zabbix;
# zabbix=&gt; ALTER ROLE zabbix SET search_path = zabbix;
# zabbix=&gt; \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.

Начальное окно настройки Zabbix 5.0.

1. Переходим на экран Configure DB connection и указываем реквизиты подключения к БД.

Экран Configure DB connection.

2. В окне Zabbix server details вводим имя хоста, на котором установлен Zabbix. Порт оставляем по умолчанию.

Страница Zabbix server details.

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. Во вкладке Облачная платформа → Проекты и нажмем на кнопку Создать проект. В следующем окне заполняем имя проекта и нажимаем Создать.

Создание проекта в панели управления Selectel.

Создание проекта в панели управления Selectel.

2. Перейдем во вкладку Облачная платформа → Серверы и нажмем Создать сервер

Создание сервера в панели управления Selectel.

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

Директория C:\Zabbix.

2. Внесем изменение в конфигурационный файл, который хранится в папке conf.

    Server=

3. Установим агент в виде сервиса и запустим его. Для этого выполним zabbix_agentd со специальными реквизитами.

    &gt; zabbix_agentd.exe -c C:\Zabbix\conf\zabbix_agentd.conf -i
&gt; zabbix_agentd.exe -c C:\Zabbix\conf\zabbix_agentd.conf --start
Скриншот консоли.

4. Добавим агента в web-интерфейсе Zabbix. Перейдем во вкладку Configuration Hosts и в верхнем правом углу нажмем Create Host.

Вкладка Hosts в web-интерфейсе Zabbix.

5. Введем данные сервера — имя, группу и сетевой интерфейс, через который будет выполняться подключение к агенту.

Настройка сервера.

6. Перейдем на вкладку Templates. Так как речь идет об ОС Windows, применим к узлу соответствующий шаблон Template OS Windows by Zabbix agent. Сохраним изменения и подождем начала сбора метрик.

Вкладка Templates.

7. Собираемые по узлам метрики доступны на представлении Monitoring → Latest Data. Напротив каждой метрики (Item) есть кнопка Graph, при нажатии на которую открывается соответствующий график. Настройка мониторинга узла с ОС Windows завершена!

Вкладка Latest Data.

Вкладка Latest Data.
Отображение графика в web-интерфейсе.

Отображение графика.

Настройка и интеграция 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

Страница Check of pre-requisites.

3. Проверяем поля для подключения к БД. Автоматически заполнено все, кроме пароля. Вводим его.

Страница Configure DB connection.

4. Оставляем поля по умолчанию. Поле Name — опциональное, но при указании имени сервера оно будет отображаться в меню и заголовках страниц.

Страница Zabbix server details.

5. Проверяем настройки и переходим далее.

Страница Pre-installation summary.

6. Установка завершена. Нажимаем Finish.

Завершающая страница установки.

7. Переходим на страницу авторизации, вводим имя и пароль для входа в web-интерфейс. 

Добавление пользователя

Для каждого пользователя в Zabbix есть имя и пароль — реквизиты, с которыми можно войти в систему. Все пароли в Zabbix хранятся в зашифрованном виде, а при необходимости можно настроить авторизацию пользователей через Active Directory или LDAP. Рассмотрим работу встроенных в Zabbix пользователей.

Важный нюанс: в системе Zabbix каждый пользователь должен входить в группу. На их основе присваиваются соответствующие права. Создадим пользователя и рассмотрим на примере.

1. В web-интерфейсе Zabbix перейдем в раздел Administration, далее — во вкладку Users. В верхнем правом углу нажмем Create User.

Вкладка Users.

2. Укажем имя пользователя, группу и пароль. Остальные поля можно оставить по умолчанию.

Настройка пользователя.

3. Для каждого пользователя можно указать его данные для оповещения: электронную почту, аккаунт в Telegram, имя в Slack и т. д. Для этого перейдем на страницу Media, нажмем Add. В качестве примера выберем TypeEmail и укажем адрес электронной почты. Также здесь можно задать критичность событий, по которым нужно отправлять уведомления, а также интервал оповещений.

Страница Media.

4. После внесения всей информации нажмем Add во вкладке User и сохраним созданного пользователя.

Важно: для любого пользователя мы можем сменить пароль. Для этого в Administration → Users нужно выбрать соответствующую учетную запись, нажать Change password и ввести новый пароль.

Смена пароля в web-интерфейсе.

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

1. Переходим во вкладку Administration → User groups. В верхнем правом углу нажимаем Create user group.

Вкладка User Groups.

2. Указываем имя группы и созданного пользователя.

Создание новой группы.

3. На странице Permissions указываем имя группы хостов, к данным по которой у создаваемой группы будет доступ. Нажимаем Add.

Страница Permissions.

4. Группа создана. Ей предоставлен требуемый уровень прав, а также привязан пользователь.

Также важно отметить, что одно из нововведений пятой версии Zabbix — поддержка SAML (Security Assertion Markup Language), — открытого стандарта обмена данными аутентификации. Он позволяет использовать одни учетные данные для авторизации и получения доступа в нескольких приложениях. 

Помимо прочего, SAML упрощает процесс интеграции с многими облачными провайдерами идентификации. Однако стандарт требует отдельного внимания, так что подробнее о его применении еще расскажем в отдельном тексте.

Низкоуровневое обнаружение (Low Level Discovery, LLD)

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

В качестве примера рассмотрим Discovery Rules (правила обнаружения) для шаблона Windows. Здесь их четыре для следующих сущностей:

  • файловых систем,
  • сетевых интерфейсов,
  • физических дисков,
  • сервисов.
Страница Discovery Rules (правила обнаружения) в web-интерфейсе.

Раздел Discovery rules в web-интерфейсе.

Рассмотрим устройство правила обнаружения для файловых систем. В поле Key указан элемент данных vfs.fs.discovery, встроенный в Zabbix. Он возвращает список файловых систем, примонтированных к серверу. Другие встроенные элементы данных собраны на отдельной странице производителя.

Настройка правил обнаружения.

Настройка правил обнаружения.

Во вкладке Filters перечислены прототипы данных, которые в случае обнаружения новых элементов распознают их и запишут в БД.

Вкладка Filters.

Вкладка Filters.

Помимо прочего, Zabbix поддерживает добавление собственных элементов данных, фильтров и макросов.

Изменение шаблонов Zabbix

Шаблоны в Zabbix включают в себя следующие компоненты:

  • приложения (Applications),
  • экземпляры (Items),
  • макросы (Macros),
  • триггеры (Triggers),
  • правила обнаружения (Discovery rules),
  • другие элементы данных.

Каждый из элементов отвечает за свои уникальные возможности. Разберем формирование пороговых схем в триггерах на примере шаблона для Windows и его части — шаблона для файловых систем.

Страница Discovery Rules (правила обнаружения) в web-интерфейсе.

В примере ниже мы видим прототипы триггеров, которые соответствуют порогам по файловым системам Windows-серверов. Чтобы изменить пороговую схему, достаточно перейти в нужный шаблон и внести корректировки.

Страница Trigger prototypes.

Получить подробную информацию о создании выражений для настройки порогов можно в документации 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 &gt; /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-сервера и выполним следующие действия.

  1. Откроем свойства хоста, данные от которого передаются через агент.

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-&gt;3000/tcp optimistic_diffie

3. Используя ID контейнера, установим специализированный плагин для Zabbix и перезагрузим контейнер.

    # docker exec 1592a00802b5 grafana-cli plugins install alexanderzobnin-zabbix-app
# docker restart 1592a00802b5

4. Войдем в Grafana через браузер (учетные данные по умолчанию — admin / admin).

Стартовая страница web-интерфейса Grafana.

Web-интерфейс Grafana.

5. Активируем плагин для Zabbix. Чтобы это сделать, перейдем в Configurations → Plugins и нажмем Enable.

Страница Plugins.

6. Плагин включен, перейдем к конфигурации. Важные поля для заполнения — URL, User, Password. Остальные настройки можно оставить по умолчанию.

Конфигурирование Zabbix.

7. Настройка завершена. Можно добавлять на дашборды различные элементы данных на основе метрик из Zabbix.

Дашборд Zabbix Server.

У Grafana есть множество готовых дашбордов. Их можно найти на сайте проекта и импортировать через web-интерфейс.

Сервер с Zabbix в Selectel

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

1. Во вкладке Облачная платформа → Серверы нажмем Создать сервер

Создание сервера в панели управления Selectel.

2. Введем имя сервера, выберем регион и пул. От сегмента пула зависит список доступных конфигураций сервера и стоимость ресурсов. 

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

3. Откроем раздел Источник и перейдем во вкладку Приложения. Здесь доступно ПО для администрирования, разработки, проведения видеоконференций и обеспечения информационной безопасности. В списке находим Cloud Zabbix.

Страница выбора источника в панели управления.

4. В блоке Конфигурация выберем фиксированную или произвольную конфигурацию сервера, настроим загрузочный диск. Советуем при настройке исходить из количества метрик мониторинга, которые вы хотите использовать, а также от времени их хранения. Подробнее о расчете конфигурации сервера — в официальной документации Zabbix.

5. В блоке Сеть настроим приватную подсеть и подключим публичный IP-адрес. 

Настройка сети в панели управления.

6. Укажем пользовательские параметры конфигурации операционной системы. В блоке Автоматизация в поле User data вставим скрипт, который выполнится при загрузке системы. В него можно добавить дополнительные параметры.

Настройка автоматизации в панели управления Selectel.

При создании сервера с выпуском 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. Проверим цену облачного сервера и нажмем Создать сервер

Создание сервера в панели управления Selectel.

Заключение

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

Из оф. документации:

Пассивная проверка:

  1. Сервер открывает TCP соединение
  2. Сервер отправляет agent.ping\n
  3. Агент получает запрос и отвечает <HEADER><DATALEN>1
  4. Серверные процессы обрабатывают данные полученного значения, в нашем случае «1».
  5. TCP соединение закрывается

Активная проверка:

  1. Агент открывает TCP соединение
  2. Агент запрашивает список элементов данных
  3. Сервер отвечает списком элементов данных (ключ элемента, задержка)
  4. Агент обрабатывает ответ
  5. TCP соединение закрывается
  6. Агент начинает периодический сбор данных

…далее:

  1. Агент открывает TCP соединение
  2. Агент отправляет список значений
  3. Сервер обрабатывает полученные данные и отправляет обратно результат обработки
  4. 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
  1. ProxyMode=0
  2. Server=server.example.com:51051 # если порт не указывать, прокси будет пытаться подключиться на 10051, этот порт отличается от порта WEB интерфейса сервера и должен быть проброшен на сервер отдельно
  3. Hostname=Proxy1
  4. DBPassword=password
  5. AllowRoot=1 # ставлю от рута, поэтому надо разрешить проксе работать также от рута
  6. TLSConnect=psk
  7. TLSPSKIdentity=Proxy_psk_identity # это значение укажем при настройке прокси на сервере Zabbix
  8. 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 ключ.

Добавить zabbix прокси агент

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,

wget https://repo.zabbix.com/zabbix/7.0/raspbian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb

Note

Remember that if you are not a root user, then prefix your commands with sudo

dpkg -i zabbix-release_latest+debian12_all.deb
apt install zabbix-proxy-sqlite3

Other database options for Zabbix proxy are MySQL and PostgreSQL.

They can be installed by using

apt install zabbix-proxy-mysql

or

apt install zabbix-proxy-pgsql

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.

nano /etc/zabbix/zabbix_proxy.conf

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

service zabbix-proxy start

To ensure that Zabbix Proxy auto starts after reboot then enter,

systemctl enable zabbix-proxy.service

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

service zabbix-proxy status

Check the output of

tail -f /var/log/zabbix/zabbix_proxy.log

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

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Computer management windows 10 cmd
  • Не группировать папки на панели задач windows 10
  • Drweb for windows server
  • Как перекинуть iso файл на флешку windows 10
  • Программы для создания образа системы windows 10 для восстановления