In certain customer environments only windows based servers are allowed on the network. Previously this was a showstopper for zabbix proxy and server implementations. Fortunately with the new windows architectures there is a way to install Zabbix Server or Zabbix Proxy on windows.
In this walkthrough we will install the Zabbix proxy on windows server 2019. Windows Server 2019 and Windows 10 comes with the WSL option which stands for Windows Subsystem for Linux.
Windows Subsystem for Linux (WSL) is a new Windows 10/Windows Server 2019 feature that enables you to run native Linux command-line tools directly on Windows, alongside your traditional Windows desktop and modern store apps.
There are multiple options available for Linux distributions in WSL. We will however pick ubuntu server 18.4 for our demonstration.
First we will need to enable the WLS option on Windows Server 2019 by executing the following command in powershell. Don’t forget to open powershell as administrator.
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Reboot to server to enable the WSL feature. The next step is to download the relevant ubuntu WSL image using the following command:
Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1804 -OutFile Ubuntu.appx -UseBasicParsing
This will download the latest ubuntu 18.04 WSL image.
Once the image is downloaded we created the ubuntu directory and extracted the image file.
PS C:\Users\Administrator> mkdir \ubuntu PS C:\Users\Administrator> mv Ubuntu.appx Ubuntu.zip PS C:\Users\Administrator> Expand-Archive Ubuntu.zip c:\ubuntu PS C:\Users\Administrator> cd \Ubuntu PS C:\ubuntu> dir
Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 5/8/2019 1:35 AM AppxMetadata d----- 5/8/2019 1:35 AM Assets -a---- 8/17/2018 3:15 AM 212438 AppxBlockMap.xml -a---- 8/17/2018 3:15 AM 3835 AppxManifest.xml -a---- 8/17/2018 3:17 AM 11112 AppxSignature.p7x -a---- 8/17/2018 3:15 AM 223983209 install.tar.gz -a---- 8/17/2018 3:15 AM 5400 resources.pri -a---- 5/8/2019 1:30 AM 224629284 Ubuntu.zip -a---- 8/17/2018 3:15 AM 211968 ubuntu1804.exe -a---- 8/17/2018 3:15 AM 744 [Content_Types].xml
Set the user environment variables by executing the following command:
$userenv = System.Environment::GetEnvironmentVariable("Path", "User") [System.Environment]::SetEnvironmentVariable("PATH", $userenv + "C:\ubuntu", "User")
Install the ubuntu instance by executing ubuntu1804.exe from c:\ubuntu. As part of the installation we defined our first ubuntu user as seen below. Once the session is open you can start using your ubuntu instance right away. The ubuntu session will look like a powershell window which is pretty cool. It will be using the same hostname, memory, disks, etc as the windows host. You basically have access to every resource the windows OS has but you are still running a full featured ubuntu server.
PS C:\ubuntu> .\ubuntu1804.exe Installing, this may take a few minutes… Please create a default UNIX user account. The username does not need to match your Windows username. For more information visit: https://aka.ms/wslusers Enter new UNIX username: user Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Installation successful! To run a command as administrator (user "root"), use "sudo ". See "man sudo_root" for details. user@WIN-72UH30KQAK4:~$ sudo su - [sudo] password for user: root@WIN-72UH30KQAK4:~#
We defined the zabbix repo that matches our distribution. We install zabbix 4.0 LTS in this example.
wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-2+bionic_all.deb dpkg -i zabbix-release_4.0-2+bionic_all.deb apt update apt upgrade
After the ubuntu system is on the latest software level we install the zabbix proxy. We used the MySQL based zabbix proxy installation which will install mariadb as part of the proxy installation.
apt install zabbix-proxy-mysql
Once the proxy is installed we create the zabbix database and user with the following commands.
mysql -u root create database zabbix character set utf8 collate utf8_bin; grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'yourpassword'; quit;
We now create the database schemas for the Zabbix Proxy.
zcat /usr/share/doc/zabbix-proxy-mysql/schema.sql.gz | mysql -uzabbix -p [yourpassword]
The next step is to edit the /etc/zabbix/zabbix_proxy.conf file with your parameters. We use an encrypted active connection between the zabbix proxy and the zabbix server. Hence we also use certificates in the configuration file.
We added the database connection settings to the configuration file:
DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=<yourpassword>
We are not going to go into detail on how to set up the rest of the proxy configuration file. Please follow the official instructions to set up your own configuration parameters in the configuration file.
Before we can start the zabbix proxy we need to create the proxy on the zabbix console. Open your zabbix frontend and go to Administration->Proxies and click “Create proxy” on the upper right corner.
We filled in the hostname of the zabbix proxy and picked the relevant Encryption level checkbox. We used “Cerfiticate”.
If all goes well you will see your new proxy connected like this on the zabbix console.
the resource usage of the mysqld, zabbix-proxy and ubuntu processes show up in the windows task manager like a normal windows process.
Whenever we need to interact with the ubuntu server we can open a session using the following icon on taskbar. The server keeps running regardless these sessions are open or closed.
If you have windows firewall enabled on your server, make sure that your proxy port is open across so agents can connect to it.
The next and last step we had to do is to make sure that the mysql and zabbix-proxy service starts when the windows server is rebooted. By default ubuntu init.d services are not respected so we had to do the following:
Add the following lines to the /etc/sudoers file on ubuntu:
%sudo ALL=(ALL) NOPASSWD: /usr/sbin/service zabbix-proxy * %sudo ALL=(ALL) NOPASSWD: /usr/sbin/service mysql *
Create startservices.sh on ubuntu with the following content:
!/bin/bash sudo service mysql start sudo service zabbix-proxy start
Cretate autostart.vbs on the windows server with the following content.
Set WshShell = CreateObject("WScript.Shell") WshShell.Run "C:\Windows\System32\bash.exe -c /app/startservices.sh",0 Set WshShell = Nothing
Schedule this script to run at start up.
Знакомство с системой
Zabbix — популярная система мониторинга IT-инфраструктуры и приложений с открытым исходным кодом, которой пользуются малые, средние и крупные компании по всему миру. В тексте мы расскажем об установке и настройке пятой версии Zabbix, которая вышла в мае 2020 года.
Основное преимущество продукта — большое сообщество пользователей и, как следствие, множество полезной информации о подходах к использованию, настройке, созданию шаблонов мониторинга и многом другом.
Скачать Zabbix можно на официальном сайте. Продукт поддерживает множество актуальных платформ.
Кроме CentOS, установка Zabbix-сервера из бинарного файла возможна на следующие операционные системы:
- Alma Linux,
- Debian,
- Oracle Linux,
- Raspberry Pi OS,
- Red Hat Enterprise Linux;
- Rocky Linux,
- SUSE Linux Enterprise Server;
- Ubuntu,
- Ubuntu (arm64).
Zabbix и его компоненты
Zabbix — это распределенная система мониторинга, которая состоит из компонентов. Рассмотрим ключевые.
- Zabbix-сервер. Этот компонент — ядро системы мониторинга. Он отвечает за визуализацию, агрегацию и аналитику данных, оповещения, управление распределенными компонентами (прокси и агентами). В качестве web-сервера вендор позволяет использовать Apache или Nginx.
- Zabbix-прокси. Компонент отвечает за управление Zabbix-агентами. Использование прокси опционально, но позволяет снизить нагрузку на Zabbix-сервер за счет переноса с него функций управления агентами и предобработки данных. Эта функциональность появилась как раз в пятой версии Zabbix.
- Zabbix-агент. Агент — конечный компонент инфраструктуры мониторинга. Выполняет сбор и отправку данных о производительности на Zabbix-прокси или Zabbix-сервер.
- База данных Zabbix. Хранилище метрик производительности. Вендор поддерживает реляционные базы данных: MySQL, PostgreSQL, SQL Server, Oracle. Обращаем внимание, что с версии 5.0 прекращена поддержка базы данных IBM DB2.
- Web-интерфейс. Компонент предназначен для мониторинга показателей системы. Также при его помощи можно настраивать отслеживаемые компоненты и основную систему Zabbix.
Готовые решения для установки
Установка Zabbix в виде Docker-контейнера
Установка системы из Docker-контейнера — быстрый способ, который займет не более 10 минут.
1. Добавим репозиторий Docker и установим необходимые пакеты.
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yum install docker-ce docker-ce-cli containerd.io docker-compose
Следующий шаг — клонирование репозитория Zabbix с Github:
# git clone https://github.com/zabbix/zabbix-docker.git
2. Перейдем в клонированный репозиторий и просмотрим содержимое командой ls
.
# cd zabbix-docker/
# ls
agent docker-compose_v3_centos_mysql_local.yaml java-gateway snmptraps
agent2 docker-compose_v3_centos_pgsql_latest.yaml kubernetes.yaml web-apache-mysql
build.sh docker-compose_v3_centos_pgsql_local.yaml LICENSE web-apache-pgsql
docker-compose_v3_alpine_mysql_latest.yaml docker-compose_v3_ubuntu_mysql_latest.yaml proxy-mysql web-nginx-mysql
docker-compose_v3_alpine_mysql_local.yaml docker-compose_v3_ubuntu_mysql_local.yaml proxy-sqlite3 web-nginx-pgsql
docker-compose_v3_alpine_pgsql_latest.yaml docker-compose_v3_ubuntu_pgsql_latest.yaml README.md zabbix-appliance
docker-compose_v3_alpine_pgsql_local.yaml docker-compose_v3_ubuntu_pgsql_local.yaml server-mysql zbx_env
docker-compose_v3_centos_mysql_latest.yaml generate-stackbrew-library.sh server-pgsql
3. Запустим демон Docker.
# systemctl start docker
4. Соберем и запустим контейнеры с Zabbix.
# docker-compose -f docker-compose_v3_centos_pgsql_latest.yaml up -d
5. После запуска компонентов Zabbix, перейдем в web-интерфейс.
Установка Zabbix из готовых образов
Самый быстрый тип установки — из готовых образов. Разворачивание займет не более 5 минут. Рассмотрим установку Zabbix-сервера из образа в формате Open virtualization format (OVF).
Для разворачивания OVF-образа на локальной машине предварительно нужно установить VirtualBox. Последний поддерживает множество актуальных платформ и доступен для скачивания на сайте Oracle. После установки ПО и загрузки образа, приступим к установке.
1. В интерфейсе VirtualBox нажмем кнопку Импортировать.
2. Выберем образ zabbix_appliance-5.0.0.ovf (рядом с ним должен находиться zabbix_appliance-5.0.0-disk001.vmdk). Нажмем Продолжить, а на следующем экране все параметры оставим по умолчанию и нажмем Импорт.
3. Теперь мы можем открыть виртуальную машину соответствующей кнопкой Запустить. Обратите внимание, что для корректного подключения к интерфейсу Zabbix или виртуальной машине по SSH в сетевых настройках должен быть указан тип подключения Сетевой мост.
4. Дожидаемся успешного запуска виртуальной машины, входим под учетными данными root / zabbix в консоли VirtualBox и выполняем команду # ip a
. В результате увидим настройки сети на виртуальной машине с установленным Zabbix.
5. Теперь подключимся к Zabbix-серверу через браузер. Учетные данные стандартные — Admin / zabbix. Данные о производительности начнут собираться сразу. Установка завершена!
Ручная установка
Основные отличия установки
Рассмотрим установку системы на CentOS, Ubuntu, Debian и Windows. При этом важно отметить, что установка на дистрибутивы Ubuntu и Debian практически не отличается, поэтому подробнее остановимся на CentOS и Windows.
Подобрать команды под конкретную версию Zabbix и версию ОС можно на официальном сайте. Для этого нужно только выбрать конфигурацию вашего сервера, а утилита автоматически подберет список команд со ссылками на документацию. Например, установка Zabbix-прокси пятой версии на сервер с Ubuntu 24.04 и БД PostgreSQL будет выглядеть так:
Установка Zabbix-сервера на CentOS
В первую очередь установим сервер.
1. В панели управления перейдем во вкладку Облачная платформа → Проекты и нажмем на кнопку Создать проект. В следующем окне заполняем имя проекта и нажимаем Создать.
2. После создания проекта вернемся во вкладку Облачная платформа → Серверы и нажмем Создать сервер.
3. В окне конфигурирования нового сервера выбираем источник — CentOS 8 64-bit, vCPU — 4, RAM — 8.
Конфигурация зависит от метрик мониторинга, которые вы будете использовать, а также от времени их хранения. Подробнее о требованиях к аппаратному и программному обеспечению — в официальной документации Zabbix.
В подразделе Сеть выбираем Новый публичный IP-адрес, чтобы позже мы могли подключиться к серверу через SSH и к web-консоли Zabbix через браузер. Остальные параметры можно оставить по умолчанию или настроить исходя из ваших требований.
4. В подразделе Доступ копируем пароль root. Нажимаем на кнопку Создать сервер. Как только сервер будет создан, во вкладке Облачная платформа →Серверы около него появится статус Active. Теперь мы можем подключиться к внешнему плавающему IP-адресу по протоколу SSH.
Перейдем к установке репозиториев ПО. Это нужно для получения актуального набора пакетов с компонентами Zabbix и PostgreSQL.
1. Выполним команды для установки компонентов.
# yum install https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# yum clean all
Репозитории с актуальными версиями устанавливаемых компонентов для различных платформ можно найти на сайтах производителей Zabbix и PostgreSQL.
2. Установим Zabbix-сервер и Zabbix-агент.
# yum install zabbix-server-pgsql zabbix-agent
3. Внесем изменения в конфигурацию репозитория Zabbix. Для этого включим Zabbix frontend в файле /etc/yum.repos.d/zabbix.repo
, изменив значение ключа enabled со значения 0 на 1.
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/frontend
enabled=1
gpgcheck=1
gpgkey=file://etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
4. Установим Red Hat Software Collections для упрощения дальнейшей настройки, а также PostgreSQL и другие пакеты.
# yum install centos-release-scl
# yum install postgresql12-server zabbix-web-pgsql-scl zabbix-nginx-conf-scl
Обратите внимание, что в инструкции мы работаем с локальным хранилищем на базе PostgreSQL. Если вы используете MySQL, то имя пакета для Zabbix-сервера будет отличаться.
5. Инициализируем и настроим автозапуск, запустим БД PostgreSQL.
# /usr/pgsql-12/bin/postgresql-12-setup initdb
# systemctl enable postgresql-12
# systemctl start postgresql-12
6. После успешного запуска создадим базу данных для Zabbix и пользователя в ней. Первая команда запросит пароль.
# sudo -i -u postgres createuser --pwprompt zabbix
# sudo -i -u postgres createdb -O zabbix zabbix
7. Внесем изменения в конфигурационный файл /var/lib/pgsql/12/data/pg_hba.conf для корректного подключения к БД PostgreSQL с паролем. Метод для обоих подключений должен быть md5.
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
8. После создания пользователя организуем для него схему по умолчанию.
# sudo -i -u postgres psql -U zabbix
# zabbix=> create schema zabbix;
# zabbix=> ALTER ROLE zabbix SET search_path = zabbix;
# zabbix=> \q
9. Установим в БД схемы данных.
# zcat /usr/share/doc/zabbix-server-pgsql*/create.sql.gz | sudo -u zabbix psql zabbix
10. Впишем созданный для БД пароль в конфигурационный файл Zabbix /etc/zabbix/zabbix_server.conf
. На этом шаге нам нужны параметры DBHost, DBName, DBSchema, DBUser и DBPassword.
Далее — настроим Nginx для корректной работы в Zabbix.
1. Перейдем в конфигурационный файл /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
. Раскомментируем две строки и укажем IP-адрес или имя сервера.
listen 80;
server_name ;
2. Перейдем к файлу /etc/opt/rh/rh-php72/php-fpm.d/zabbix.con
и внесем изменения в двух местах.
listen.acl_users = apache,nginx
php_value[date.timezone] = Europe/Moscow
3. Запустим сервисы Zabbix и добавим их в автозапуск.
# systemctl restart zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
# systemctl enable zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
Если все было настроено верно, то при переходе по имени или адресу сервера в браузере откроется начальное окно настройки Zabbix 5.0.
1. Переходим на экран Configure DB connection и указываем реквизиты подключения к БД.
2. В окне Zabbix server details вводим имя хоста, на котором установлен Zabbix. Порт оставляем по умолчанию.
3. Переходим на последний экран и нажимаем Finish. Настройка завершена.
4. Стандартная учетная запись для входа — Admin с паролем zabbix. Установка завершена и система готова к работе, можно приступать к ее настройке.
В некоторых ситуациях для корректной работы системы Zabbix важно отключить SElinux.
Установка Zabbix-сервера с MySQL в Ubuntu и Debian
Установка Zabbix на Ubuntu и Debian практически идентична из-за схожести дистрибутивов. Отличается только первый этап. Рассмотрим пошаговый процесс установки Zabbix с использованием базы данных MySQL, а также web-серверов Apache и Nginx.
1. Скачаем репозиторий Zabbix, установим его и обновим репозитории. В примере используем Ubuntu 20.04 и Debian 10, но вы можете заменить название дистрибутива исходя из версии.
Для Ubuntu:
wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_5.0+ubuntu20.04_all.deb
dpkg -i zabbix-release_latest_5.0+ubuntu20.04_all.deb
apt update
Для Debian:
# wget https://repo.zabbix.com/zabbix/5.0/debian/pool/main/z/zabbix-release/zabbix-release_latest_5.0+debian10_all.deb
# dpkg -i zabbix-release_latest_5.0+debian10_all.deb
# apt update
2. Установим MySQL, web-интерфейс, Zabbix-сервер, а также Zabbix-агент, если не сделали этого ранее.
Для работы с Apache:
apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-agent
Для работы с Nginx:
apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent
3. Создадим базу данных и пользователя для Zabbix, задаем пароль.
sudo mysql -u root -p
4. В консоли MySQL создадим БД с кодировкой, пользователя и пароль для него, а также выдадим ему доступ к базе данных. Обратите внимание, что система Zabbix поддерживает только кодировку UTF-8.
create database zabbix character set utf8 collate utf8_bin;
create user zabbix@localhost identified by пароль для нового пользователя';
grant all privileges on zabbix.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
quit;
5. Импортируем начальную схему и данные на хосте Zabbix. Система запросит пароль — указываем тот, что создали на предыдущем шаге.
zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix
6. В конфигурационном файле Zabbix-сервера /etc/zabbix/zabbix_server.conf
введем после DBPassword=
пароль для подключения к БД. Далее — сохраним изменения и закроем редактор.
7. Для Apache — отредактируем файл /etc/zabbix/apache.conf
. Раскомментируем строку и установим правильный временной пояс, в нашем примере — московский, но вы можете выбрать любой подходящий.
php_value date.timezone Europe/Moscow
Для Nginx — отредактируем файл /etc/zabbix/nginx.conf
. Раскомментируем и настроим директивы listen и server_name.
listen 80;
server_name example.com;
Также при работе с Nginx важно отредактировать файл /etc/zabbix/php-fpm.conf
. Раскомментируем строку и укажем свой часовой пояс.
php_value[date.timezone] = Europe/Moscow
8. Перезапустим web-сервис и настроим автозапуск при загрузке операционной системы.
Для Apache:
# systemctl restart zabbix-server zabbix-agent apache2
# systemctl enable zabbix-server zabbix-agent apache2
Для Nginx:
# systemctl restart zabbix-server zabbix-agent nginx php7.3-fpm
# systemctl enable zabbix-server zabbix-agent nginx php7.3-fpm
Установка завершена!
Установка агента Zabbix на Windows
Перед началом установки создадим в панели управления сервер с ОС Windows.
1. Во вкладке Облачная платформа → Проекты и нажмем на кнопку Создать проект. В следующем окне заполняем имя проекта и нажимаем Создать.
2. Перейдем во вкладку Облачная платформа → Серверы и нажмем Создать сервер.
3. В окне конфигурирования нового сервера выбираем источник — Windows Server 2016 Standard, vCPU — 4, RAM — 8. Остальные настройки оставляем по умолчанию, однако вы можете конфигурировать сервер исходя из ваших требований.
4. В подразделе Сеть выбираем Новый публичный IP-адрес для подключения к серверу через RDP.
5. В подразделе Доступ копируем пароль учетной записи Administrator для дальнейшего доступа к серверу по RDP. Нажимаем на кнопку Создать сервер.
6. Когда сервер будет готов, во вкладке Облачная платформа → Серверы он перейдет в статус Active. Теперь можно подключаться к внешнему плавающему IP-адресу по протоколу RDP.
Установка и настройка Zabbix-агента на Windows-сервер в ручном режиме занимает около 10 минут. Скачать дистрибутив можно на сайте Zabbix.
1. После скачивания архив распакуем в созданную директорию (в нашем примере — C:\Zabbix).
2. Внесем изменение в конфигурационный файл, который хранится в папке conf.
Server=
3. Установим агент в виде сервиса и запустим его. Для этого выполним zabbix_agentd со специальными реквизитами.
> zabbix_agentd.exe -c C:\Zabbix\conf\zabbix_agentd.conf -i
> zabbix_agentd.exe -c C:\Zabbix\conf\zabbix_agentd.conf --start
4. Добавим агента в web-интерфейсе Zabbix. Перейдем во вкладку Configuration → Hosts и в верхнем правом углу нажмем Create Host.
5. Введем данные сервера — имя, группу и сетевой интерфейс, через который будет выполняться подключение к агенту.
6. Перейдем на вкладку Templates. Так как речь идет об ОС Windows, применим к узлу соответствующий шаблон Template OS Windows by Zabbix agent. Сохраним изменения и подождем начала сбора метрик.
7. Собираемые по узлам метрики доступны на представлении Monitoring → Latest Data. Напротив каждой метрики (Item) есть кнопка Graph, при нажатии на которую открывается соответствующий график. Настройка мониторинга узла с ОС Windows завершена!
Настройка и интеграция Zabbix 5
Рассмотрим добавление пользователя, настройку оповещений и изменение шаблонов мониторинга. Также опишем ключевые технологии и элементы инфраструктуры Zabbix.
Настройка web-интерфейса
В web-интерфейсе мы можем настроить отчеты и мониторить работу серверов. Важно отметить, что фронтенд Zabbix написан на PHP, поэтому для запуска нужен сервер с его поддержкой.
1. Откроем в браузере URL-адрес web-интерфейса Zabbix. Для Nginx — http://<server_ip_or_name>
, для Apache — http://<server_ip_or_name>/zabbix
. Так мы попадем на первую страницу установки. Переходим к следующему этапу, нажав кнопку Next step.
2. Во втором окне убедимся, что на всех строках зафиксирован статус OK.
3. Проверяем поля для подключения к БД. Автоматически заполнено все, кроме пароля. Вводим его.
4. Оставляем поля по умолчанию. Поле Name — опциональное, но при указании имени сервера оно будет отображаться в меню и заголовках страниц.
5. Проверяем настройки и переходим далее.
6. Установка завершена. Нажимаем Finish.
7. Переходим на страницу авторизации, вводим имя и пароль для входа в web-интерфейс.
Добавление пользователя
Для каждого пользователя в Zabbix есть имя и пароль — реквизиты, с которыми можно войти в систему. Все пароли в Zabbix хранятся в зашифрованном виде, а при необходимости можно настроить авторизацию пользователей через Active Directory или LDAP. Рассмотрим работу встроенных в Zabbix пользователей.
Важный нюанс: в системе Zabbix каждый пользователь должен входить в группу. На их основе присваиваются соответствующие права. Создадим пользователя и рассмотрим на примере.
1. В web-интерфейсе Zabbix перейдем в раздел Administration, далее — во вкладку Users. В верхнем правом углу нажмем Create User.
2. Укажем имя пользователя, группу и пароль. Остальные поля можно оставить по умолчанию.
3. Для каждого пользователя можно указать его данные для оповещения: электронную почту, аккаунт в Telegram, имя в Slack и т. д. Для этого перейдем на страницу Media, нажмем Add. В качестве примера выберем Type — Email и укажем адрес электронной почты. Также здесь можно задать критичность событий, по которым нужно отправлять уведомления, а также интервал оповещений.
4. После внесения всей информации нажмем Add во вкладке User и сохраним созданного пользователя.
Важно: для любого пользователя мы можем сменить пароль. Для этого в Administration → Users нужно выбрать соответствующую учетную запись, нажать Change password и ввести новый пароль.
Теперь создадим группу пользователей.
1. Переходим во вкладку Administration → User groups. В верхнем правом углу нажимаем Create user group.
2. Указываем имя группы и созданного пользователя.
3. На странице Permissions указываем имя группы хостов, к данным по которой у создаваемой группы будет доступ. Нажимаем Add.
4. Группа создана. Ей предоставлен требуемый уровень прав, а также привязан пользователь.
Также важно отметить, что одно из нововведений пятой версии Zabbix — поддержка SAML (Security Assertion Markup Language), — открытого стандарта обмена данными аутентификации. Он позволяет использовать одни учетные данные для авторизации и получения доступа в нескольких приложениях.
Помимо прочего, SAML упрощает процесс интеграции с многими облачными провайдерами идентификации. Однако стандарт требует отдельного внимания, так что подробнее о его применении еще расскажем в отдельном тексте.
Низкоуровневое обнаружение (Low Level Discovery, LLD)
Низкоуровневое обнаружение позволяет автоматически ставить на мониторинг динамические экземпляры узлов. Например, файловые системы или сетевые интерфейсы, которые добавят администраторы, автоматически обнаружатся и появятся в системе мониторинга. Помимо прочего, в рамках шаблона можно настроить правила автоматического обнаружения.
В качестве примера рассмотрим Discovery Rules (правила обнаружения) для шаблона Windows. Здесь их четыре для следующих сущностей:
- файловых систем,
- сетевых интерфейсов,
- физических дисков,
- сервисов.
Рассмотрим устройство правила обнаружения для файловых систем. В поле Key указан элемент данных vfs.fs.discovery, встроенный в Zabbix. Он возвращает список файловых систем, примонтированных к серверу. Другие встроенные элементы данных собраны на отдельной странице производителя.
Во вкладке Filters перечислены прототипы данных, которые в случае обнаружения новых элементов распознают их и запишут в БД.
Помимо прочего, Zabbix поддерживает добавление собственных элементов данных, фильтров и макросов.
Изменение шаблонов Zabbix
Шаблоны в Zabbix включают в себя следующие компоненты:
- приложения (Applications),
- экземпляры (Items),
- макросы (Macros),
- триггеры (Triggers),
- правила обнаружения (Discovery rules),
- другие элементы данных.
Каждый из элементов отвечает за свои уникальные возможности. Разберем формирование пороговых схем в триггерах на примере шаблона для Windows и его части — шаблона для файловых систем.
В примере ниже мы видим прототипы триггеров, которые соответствуют порогам по файловым системам Windows-серверов. Чтобы изменить пороговую схему, достаточно перейти в нужный шаблон и внести корректировки.
Получить подробную информацию о создании выражений для настройки порогов можно в документации Zabbix.
Zabbix-прокси
Zabbix-прокси (Zabbix proxy) — процесс, который собирает данные мониторинга и позволяет отправлять их Zabbix-серверу. Он обеспечивает буферизацию информации, которая поступает от агентов, а также ее дальнейшую трансляцию в сторону Zabbix-сервера. Zabbix-прокси использует отдельную базу данных и поддерживает SQLite, MySQL и PostgreSQL.
Zabbix proxy можно эффективно использовать для сбора метрик с агентов в выделенных или удаленных сетях (за файерволом), участков инфраструктуры с ненадежной связью, а также для снижения нагрузки на Zabbix-сервер. Начиная с версии 5.0 прокси поддерживает предобработку данных на своей стороне.
Настройка шифрованной передачи данных
Шифрование данных между Zabbix-агентом и Zabbix-сервером — важный аспект безопасности, особенно при передаче данных через интернет без использования защищенного (зашифрованного) канала. Рассмотрим настройку с использованием предварительно согласованных ключей (Pre-Shared Keys, PSK). Это можно сделать, например, с помощью GnuTLS или OpenSSL. Рассмотрим второй вариант.
Генерация Pre-Shared Key (PSK)
Сгенерируем 256-битный (32-байтный) PSK. На хосте с установленным Zabbix-агентом выполним следующую команду в консоли. Она создаст файл с ключом по указанному пути.
openssl rand -hex 32 > /etc/zabbix5/zabbix_agentd.psk
Настройка агента Zabbix
Откроем конфигурационный файл агента zabbix_agentd.conf и добавим параметры.
- TLSConnect — указывает, что агент будет использовать PSK для подключения.
- TLSAccept — разрешает серверу подключаться с использованием PSK.
- TLSPSKFile — путь к файлу с ключом.
- TLSPSKIdentity — уникальный идентификатор ключа.
TLSConnect=psk
TLSAccept=psk
TLSPSKFile=/etc/zabbix/zabbix_agentd.psk
TLSPSKIdentity=PSK 001
После внесения изменений важно перезапустить Zabbix Agent.
systemctl restart zabbix-agent
Настройка шифрования на Zabbix Server
Перейдем в web-интерфейс Zabbix-сервера и выполним следующие действия.
- Откроем свойства хоста, данные от которого передаются через агент.
2. Перейдем во вкладку Шифрование.
3. Укажем следующие настройки:
- в полях Тип подключения и Соединение с узлом сети — PSK,
- идентификатор PSK — PSK 001 (должен совпадать с
TLSPSKIdentity
в конфигурации агента), - сгенерированный ключ из файла
/etc/zabbix/zabbix_agentd.psk
.
Если шифрование настроено корректно, на странице информации о хосте в web-интерфейсе Zabbix Server будет отображена пометка о зашифрованном соединении. Настройка обеспечивает безопасную передачу данных и минимизирует риски утечки конфиденциальной информации.
Интеграция Zabbix с внешними системами
Разберем возможности интеграции Zabbix с системой визуализации Grafana, которую можно использовать для отображения статусов, графиков, значений и других типов данных.
Об инструменте Grafana, его установке и настройке, подключении внешних источников данных и не только — в отдельном обзоре.
1. Установим и запустим Grafana в виде Docker-контейнера.
# docker run -d -p 3000:3000 grafana/grafana
2. После установки убедимся, что контейнер с Grafana выполняется.
# docker ps | grep grafana
1592a00802b5 grafana/grafana "/run.sh" 2 minutes ago Up 21 minutes 0.0.0.0:3000->3000/tcp optimistic_diffie
3. Используя ID контейнера, установим специализированный плагин для Zabbix и перезагрузим контейнер.
# docker exec 1592a00802b5 grafana-cli plugins install alexanderzobnin-zabbix-app
# docker restart 1592a00802b5
4. Войдем в Grafana через браузер (учетные данные по умолчанию — admin / admin).
5. Активируем плагин для Zabbix. Чтобы это сделать, перейдем в Configurations → Plugins и нажмем Enable.
6. Плагин включен, перейдем к конфигурации. Важные поля для заполнения — URL, User, Password. Остальные настройки можно оставить по умолчанию.
7. Настройка завершена. Можно добавлять на дашборды различные элементы данных на основе метрик из Zabbix.
У Grafana есть множество готовых дашбордов. Их можно найти на сайте проекта и импортировать через web-интерфейс.
Сервер с Zabbix в Selectel
Если нет времени на настройку Zabbix с нуля, в панели управления вы можете создать облачный сервер с готовым приложением Zabbix. Для каждого образа с приложением выполнена подготовка рабочего окружения, настройка необходимых параметров и сборка. Важно отметить, что в этом случае вы оплачиваете только ресурсы облачной платформы.
1. Во вкладке Облачная платформа → Серверы нажмем Создать сервер.
2. Введем имя сервера, выберем регион и пул. От сегмента пула зависит список доступных конфигураций сервера и стоимость ресурсов.
3. Откроем раздел Источник и перейдем во вкладку Приложения. Здесь доступно ПО для администрирования, разработки, проведения видеоконференций и обеспечения информационной безопасности. В списке находим Cloud Zabbix.
4. В блоке Конфигурация выберем фиксированную или произвольную конфигурацию сервера, настроим загрузочный диск. Советуем при настройке исходить из количества метрик мониторинга, которые вы хотите использовать, а также от времени их хранения. Подробнее о расчете конфигурации сервера — в официальной документации Zabbix.
5. В блоке Сеть настроим приватную подсеть и подключим публичный IP-адрес.
6. Укажем пользовательские параметры конфигурации операционной системы. В блоке Автоматизация в поле User data вставим скрипт, который выполнится при загрузке системы. В него можно добавить дополнительные параметры.
При создании сервера с выпуском TLS-сертификата:
#cloud-config
write_files:
- path: "/opt/gomplate/values/user-values.yaml"
permissions: "0644"
content: |
pg_password: ""
zabbixDomain:
leEmail:
httpsMethod: redirect
При создании сервера без выпуска TLS-сертификата:
#cloud-config
write_files:
- path: "/opt/gomplate/values/user-values.yaml"
permissions: "0644"
content: |
admin_password: ""
zabbixDomain:
Вместо <bd_user_password>
укажем пароль пользователя базы данных, который должен содержать:
- более восьми символов,
- не менее одной прописной буквы,
- не менее одной строчной буквы,
- не менее одной цифры.
<example.com>
— домен для доступа к Zabbix. Для домена нужно добавить A-запись и указать в значении записи ваш публичный IP-адрес. Если домен добавлен в DNS-хостинг Selectel (actual), используйте инструкцию Добавить ресурсную запись. После создания сервера для домена автоматически выпустится TLS-сертификат от Let’s Encrypt®.
7. Проверим цену облачного сервера и нажмем Создать сервер.
Заключение
В статье мы рассмотрели различные подходы для установки Zabbix и рассмотрели дополнительные настройки. Этого достаточно для конфигурации базового мониторинга, контроля инфраструктуры и приложений.
Для визуализации, например, статусов доступности и производительности мы рекомендуем использовать удобный инструмент Grafana. Он легко устанавливается и настраивается, о чем мы рассказали в обзоре. Кроме того, есть мобильное приложение, в котором можно просматривать «здоровье» инфраструктуры в режиме реального времени.
Читайте также:
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.
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 ключ.
linux
Планируется много клиентов мониторинга на zabbix, у которых шлюз на windows. Каким образом можно организовать сбор для zabbix-server через zabbix-proxy?Hyper-V с vm на Linux не рассматриваю, так как у многих нет поддержки виртуализации.
Как вариант — установка raspberryPi в роли прокси для сбора информации. Таких ресурсов хватит за глаза, да и стоит немного, но возможно есть решение по софту..
-
Вопрос задан
-
6088 просмотров
Комментировать
Подписаться
3
Оценить
Комментировать
Пригласить эксперта
Ответы на вопрос 1
я бы не стал в этой задачи использовать Pi, как то уж очень опасно, хотя не понятно как много клиентов.
А свичи не планируете мониторить ? (с портами)….
+ смотря сколько параметров с одного хоста будете мониторить, у меня в среднем
Группы элементов данных (11) Элементы данных (65) Триггеры (10) умножаем на количество клиентов и получаем что дисковая подсистема системы мониторинга загружена =(, а CPU у pi загнется….
Ваш ответ на вопрос
Войдите, чтобы написать ответ
Похожие вопросы
-
Показать ещё
Загружается…
Минуточку внимания
Реклама