Zabbix proxy for 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. Он легко устанавливается и настраивается, о чем мы рассказали в обзоре. Кроме того, есть мобильное приложение, в котором можно просматривать «здоровье» инфраструктуры в режиме реального времени.

Читайте также:

There are some cases where monitoring with the Zabbix server and agents …. is not enough.
Imagine monitoring external clients, different VLANs or just monitoring a DMZ where you don’t want to open for every agent a port in the firewall for the agent, SNMP, IPMI, …
Here Zabbix proxies come to the rescue.
A Zabbix proxy is a small remote Zabbix server that supports the collection of data. With Zabbix 7 it’s now even possible to run Zabbix proxies in HA.
Proxies will also become important in larger environments to simplify the management and most importantly to offload the Zabbix server. Our proxies can do pre-processing and it will also limit the number of connections from devices to the Zabbix server.

So in short a Zabbix proxy can be used to :
— Monitor remote locations
— Monitor locations that have unreliable connections
— Offload the Zabbix server when monitoring thousands of devices
— Simplify the maintenance and management

Proxy requirements¶

If you like to setup a few proxies for test or in your environment you will need a few Linux hosts to install the Proxies on.
Proxies are also available in containers so a full VM is not needed. However here we will use a VM so we can show you how to install a proxy.
When it comes to proxies they are very lightweight however since Zabbix 4.2 Proxies are able to do Item value preprocessing and this can use a lot of CPU power.
So the number of CPUs and memory will depends on how many machines you will monitor and how many preprocessing rules you have on your hosts.

Note

Imagine that you need to restart your Zabbix server and that all proxies start to push the data they have gathered during the downtime of the Zabbix server. This would create ahuge amount of data being sent at once to the Zabbix server and bring it to its knees in no time.
Since Zabbix 6 Zabbix has added protection for overload. When Zabbix server history cache is full the history cache write access is being throttled. Zabbix server will stop accepting data from proxies when history cache usage reaches 80%. Instead those proxies will be put on a throttling list.
This will continue until the cache usage falls down to 60%. Now server will start accepting data from proxies one by one, defined by the throttling list. This means the first proxy that attempted to upload data during the throttling period will be served first and until it’s done the server will not accept data from other proxies.

History write cache usage Zabbix server mode Zabbix server action
Reaches 80% Wait Stops accepting proxy data, but maintains a throttling list (prioritized list of proxies to be contacted later).
Drops to 60% Throttled Starts processing throttling list, but still not accepting proxy data.
Drops to 20% Normal Drops the throttling list and starts accepting proxy data normally.

Configuration¶

Zabbix actually has 2 proxy modes it supports. A Zabbix proxy can be Active or Passive just like the Zabbix agent with this exception that the agent can be both on the same time.
So our first problem will be choose the Zabbix proxy that fits us. When we talk about active / passive we always talk about the proxy being active or passive.
Active means the Proxy will initiate the connection to the Zabbix server, passive means it will be the Zabbix server taking contact with the proxy to gather the data.

Active vs Passive proxy¶

Zabbix proxies have been available since Zabbix 1.6, at that time they where available only as what we know today as Active proxies. Active means that the proxy would initiate the connection by itself to the Zabbix Server.
Since version 1.8.3 passive proxies where introduced. This allowed the server to connect to the proxy. As mentioned before Zabbix agents can be both active and passive however proxies cannot be both so whe have to choose the way of the communication when we install a proxy.
Just remember that choosing the proxy mode active or passive has no impact on how Zabbix agents can communicate with our proxy. It’s perfectly fine to have an active proxy and a passive agent working together.

Active proxy¶

Let’s first start with the setup of an active Proxy.
Things should be very simple just make sure you have a VM that you can use to install a proxy.

Zabbix Gui config¶

First we will have to add the config in our Zabbix server frontend. From our Administration menu choose the menu Proxies.

Go to the upper right corner of the screen and press Create proxy
You will now get a pop-up like shown here. Fill in the proxy name. I have chosen for ProxyA as it will be our active proxy.
In case you like to configure the Passive proxy use the name ProxyP.

You can use for yourself whatever you like. In production I would suggest to use names that make it easy for you to see it’s a proxy and where the proxy belongs to. Ex: what vlan or what division ….

Choose Proxy mode Active and fill in the IP of your virtualmachine if you like to install an active proxy.
or
Choose Proxy mode Passive and fill in the IP of your virtualmachine if you like to install a passive proxy.

proxya

When done press Add at the bottom.

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 прокси агент

linux

Планируется много клиентов мониторинга на zabbix, у которых шлюз на windows. Каким образом можно организовать сбор для zabbix-server через zabbix-proxy?Hyper-V с vm на Linux не рассматриваю, так как у многих нет поддержки виртуализации.
Как вариант — установка raspberryPi в роли прокси для сбора информации. Таких ресурсов хватит за глаза, да и стоит немного, но возможно есть решение по софту..


  • Вопрос задан

  • 6088 просмотров


Комментировать


Подписаться

3



Оценить


Комментировать

Пригласить эксперта


Ответы на вопрос 1

я бы не стал в этой задачи использовать Pi, как то уж очень опасно, хотя не понятно как много клиентов.
А свичи не планируете мониторить ? (с портами)….
+ смотря сколько параметров с одного хоста будете мониторить, у меня в среднем
Группы элементов данных (11) Элементы данных (65) Триггеры (10) умножаем на количество клиентов и получаем что дисковая подсистема системы мониторинга загружена =(, а CPU у pi загнется….


Ваш ответ на вопрос

Войдите, чтобы написать ответ


Похожие вопросы


  • Показать ещё
    Загружается…

Минуточку внимания

Реклама

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

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Windows 7 embedded перезагружается каждый час
  • Windows 10 firefox тормозит
  • Считыватель qr кодов windows
  • Dfu driver windows 10
  • Удаление ненужных процессов windows 10