Я сторонник всего что лично сам развернул/переделал что было до меня в организациях, за что отвечаю и обслуживаю, а потому мне захотелось посмотреть, как разворачивается релиз системы мониторинга Zabbix на самом последнем релизе Ubuntu LTS. Да и к тому же сейчас уже релиз Zabbix 6.2, а я все еще на Zabbix 5.0 LTS, правда мне и того функционала хватает и излишне будет что-то менять, но все же лучше попробовать что-то новое, составить пошаговый план и внедрить, раз есть квалификация и практический опыт. Как всегда, все обкатываю на тестовом полигоне под управлением Debian 10 + Proxmox 6 сервера (Supermicro SYS-5019S-M: Debian 10 + Proxmox 6, ZFS разделы, 64Gb оперативной памяти (2 модуля 378A4G43MB1-CTD))

  • Советую всегда собрать максимум информации по интересуемому/задуманному, составить план
  • Создаем виртуальную машину на Proxmox 6.4
  • Устанавливаем операционную систему Ubuntu 22.04
  • Устанавливаем необходимые пакеты перед инсталляцией
  • Настраиваем MySQL
  • Устанавливаем Zabbix

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

Шаг №1: Обновляю установленную систему Ubuntu 22.04 Server до самого актуального состояния в рамках LTS релиза:

ekzorchik@srv-us2204a:~$ sudo rm -Rf /var/lib/apt/lists
ekzorchik@srv-us2204a:~$ sudo apt-get update && sudo apt-get upgrade -y && sudo apt dist-upgrade –y
ekzorchik@srv-us2204a:~$ sudo nano /etc/hosts
172.33.33.112   srv-us2204a.polygon.local       srv-us2204a
ekzorchik@srv-us2204a:~$ sudo nano /etc/hostname
srv-us2204a
ekzorchik@srv-us2204a:~$ sudo reboot
ekzorchik@srv-us2204a:~$ uname -a && lsb_release -a
Linux srv-us2204a 5.15.0-43-generic #46-Ubuntu SMP Tue Jul 12 10:30:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.1 LTS
Release:        22.04
Codename:       jammy
ekzorchik@srv-us2204a:~$

Шаг №2: Устанавливаем Nginx и базу данных MySQL и сопутствующие пакеты нужные в общей картине данной заметки:

ekzorchik@srv-us2204a:~$ sudo apt-get install -y nginx mysql-server mysql-client php-fpm php-mysql snmp libnet-snmp-perl snmp-mibs-downloader net-tools
ekzorchik@srv-us2204a:~$ sudo rm /var/www/html/index.nginx-debian.html
ekzorchik@srv-us2204a:~$ nginx -V | head -n1
nginx version: nginx/1.18.0 (Ubuntu)
built with OpenSSL 3.0.2 15 Mar 2022
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -ffile-prefix-map=/build/nginx-9P0wNJ/nginx-1.18.0=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -flto=auto -Wl,-z,relro -Wl,-z,now -fPIC' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-compat --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --add-dynamic-module=/build/nginx-9P0wNJ/nginx-1.18.0/debian/modules/http-geoip2 --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_sub_module
ekzorchik@srv-us2204a:~$
ekzorchik@srv-us2204a:~$ sudo nano /etc/php/8.1/fpm/php.ini
max_execution_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
max_input_time = 300
date.timezone = Europe/Moscow
ekzorchik@srv-us2204a:~$ sudo nano /etc/nginx/nginx.conf
        #include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*; 

Шаг №3: Создаю сайт под Zabbix для конфигурации Webсервиса nginx:

ekzorchik@srv-us2204a:~$ sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup
ekzorchik@srv-us2204a:~$ sudo unlink /etc/nginx/sites-available/default
ekzorchik@srv-us2204a:~$ sudo unlink /etc/nginx/sites-enabled/default
ekzorchik@srv-us2204a:~$ sudo nano /etc/nginx/sites-available/zabbix.conf
server {
        listen 80;
        root /usr/share/zabbix;
        index index.php;
        server_name 172.33.33.112;

location / {
        try_files $uri $uri/ =404;
        }

location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        }
}
ekzorchik@srv-us2204a:~$ sudo ln -s /etc/nginx/sites-available/zabbix.conf /etc/nginx/sites-enabled/zabbix.conf
ekzorchik@srv-us2204a:~$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
ekzorchik@srv-us2204a:~$ sudo pkill php8.1-fpm
ekzorchik@srv-us2204a:~$ sudo systemctl restart nginx php8.1-fpm

Шаг №4: Меняю схему авторизации в Mysql на mysql_native_password:

ekzorchik@srv-us2204a:~$ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
default-authentication-plugin=mysql_native_password
ekzorchik@srv-us2204a:~$ sudo systemctl restart mysql && sudo systemctl status mysql | head -n5
● mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-08-05 12:52:25 MSK; 14ms ago
    Process: 2377 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
   Main PID: 2386 (mysqld)
ekzorchik@srv-us2204a:~$

Шаг №5: Задаю пароль на учетную запись root сервиса MySQL с учетом измененной схемы авторизации:

ekzorchik@srv-us2204a:~$ sudo mysql -u root -e "alter user 'root'@'localhost' identified with mysql_native_password by '712mbddr@';"

Шаг №6: Создаем под сервис Zabbix, пользователя MySQL, пароль и пустую базу:

sudo mysql -u root -p712mbddr@ -e "create database db_zabbix
character set utf8 collate utf8_bin"
sudo mysql -u root -p712mbddr@ -e "create user 'us_zabbix'@'localhost' identified by '612mbddr@'"
sudo mysql -u root -p712mbddr@ -e "grant all on db_zabbix.* to 'us_zabbix'@'localhost';"
ekzorchik@srv-us2204a:~$ sudo mysql -u root -p712mbddr@ -e "set global log_bin_trust_function_creators = 1"
ekzorchik@srv-us2204a:~$

Шаг №7: Прописываю репозитарии на установку Zabbix 6.2 в систему:

ekzorchik@srv-us2204a:~$ wget https://repo.zabbix.com/zabbix/6.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.2-1+ubuntu22.04_all.deb
ekzorchik@srv-us2204a:~$ sudo dpkg -i zabbix-release_6.2-1+ubuntu22.04_all.deb
ekzorchik@srv-us2204a:~$ cat /etc/apt/sources.list.d/zabbix.list
deb https://repo.zabbix.com/zabbix/6.2/ubuntu jammy main
deb-src https://repo.zabbix.com/zabbix/6.2/ubuntu jammy main
ekzorchik@srv-us2204a:~$
ekzorchik@srv-us2204a:~$ sudo apt-get update
ekzorchik@srv-us2204a:~$ sudo apt-get  install -y zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent

Шаг №8: На хосте Zabbix сервера импортируйте начальную схему и данные:

ekzorchik@srv-us2204a:~$ sudo zcat /usr/share/doc/zabbix-sql-scripts/mysql/server.sql.gz | sudo mysql -u us_zabbix -p612mbddr@ db_zabbix

и выключаем опцию log_bin_trust_function_creators после импорта схемы базы данных:

ekzorchik@srv-us2204a:~$ sudo mysql -u root -p712mbddr@ -e "set global log_bin_trust_function_creators = 0"
mysql: [Warning] Using a password on the command line interface can be insecure.
ekzorchik@srv-us2204a:~$

Шаг №9: Прописываю настройки базы данных для Zabbix Server:

ekzorchik@srv-us2204a:~$ sudo cp /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.backup
ekzorchik@srv-us2204a:~$ sudo rm /etc/zabbix/zabbix_server.conf
ekzorchik@srv-us2204a:~$ sudo nano /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBHost=localhost
DBName=db_zabbix
DBUser=us_zabbix
DBPassword=612mbddr@
DBPort=3306
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=30
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
FpingLocation=/usr/bin/fping
Fping6Location=/usr/bin/fping6
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
CacheSize=64M
HousekeepingFrequency=24
MaxHousekeeperDelete=10500

Шаг №10: Настраиваю конфигурационный файл Zabbix Agent:

ekzorchik@srv-us2204a:~$ sudo mv /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf.backup
ekzorchik@srv-us2204a:~$ sudo nano /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
#EnableRemoteCommands=1
AllowKey=system.run[*]
LogRemoteCommands=1
Server=127.0.0.1, 172.33.33.112
ServerActive=127.0.0.1,172.33.33.112
Timeout=5
Hostname=Zabbix server
Include=/etc/zabbix/zabbix_agentd.d/*.conf
UnsafeUserParameters=1

Шаг №11: Запускаю Zabbix сервер, и Zabbix агент дабы после последующих если нужны будет перезагрузки сервера службы поднимались автоматически:

ekzorchik@srv-us2204a:~$ sudo systemctl enable zabbix-server.service zabbix-agent
Synchronizing state of zabbix-server.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable zabbix-server
Synchronizing state of zabbix-agent.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable zabbix-agent
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-server.service → /lib/systemd/system/zabbix-server.service.
ekzorchik@srv-us2204a:~$ sudo systemctl restart zabbix-server.service zabbix-agent.service

Шаг №12: Перехожу к первоначальной настройке Zabbix через Webинтерфейс:

http://IP&DNS/ - (http://172.33.33.112) после URL адрес становится вида http://172.33.33.112/setup.php

  • Default language: English (en_US)

и нажимаю Next Step, проверяю что на этапе "Check of pre-requisites" все рекомендуемые настройки в статусе OK и только после этого нажимаю "Next Step", далее заполняю настройки взаимодействия будущего сервиса Zabbix с базой, пользователем и паролем:

  • Database type: MySQL
  • Database host: localhost
  • Database port: 0 (use default port)
  • Database name: db_zabbix
  • Store credentials in: Plain text
  • User: us_zabbix
  • Password: 612mbddr@
  • Database TLS encryption: вижу надпись Connection will not be encrypted because it uses a socket file (on Unix) or shared memory (Windows)

И нажимаю Next step

  • Zabbix server name: 172.33.33.112
  • Default time zone: System: (UTC+03:00) Europe/Moscow
  • Default theme: Blue

И нажимаю Next step, Next step и если все выше ОК вы должны получить текст, выделенный зеленым цветом "Configurations! You have successfully installed Zabbix frontend."

Zabbix 6.2 успешно установлен на Ubuntu 22.04 Server

Шаг №13: Т.к. Установка завершена, то есть смысл выполнить авторизацию в развернутой системе мониторинга на базе Zabbix 6.2 через браузер посредством URL строки: http://172.33.33.112/index.php

  • Username: Admin
  • Password: zabbix
  • Remember me for 30 days: Отмечаю галочкой

И нажимаю Sign in

Вход в установленный Zabbix 6.2 успешно выполнен

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

Шаг №14: Но вот, что еще нужно сделать – это дать возможность через Webинтерфейс менять язык интерфейса, чтобы если пишутся личные мануалы не забывать для себя же в первую очередь указывать именование, как на русском, так и на английском:

sudo locale-gen en_US.UTF-8
sudo sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen && sudo locale-gen
echo "LC_ALL="en_US.UTF-8"" | sudo -s tee /etc/default/locale
echo "LANG="en_US.UTF-8"" | sudo tee -a /etc/default/locale
echo "LANGUAGE="en.US.UTF-8"" | sudo tee -a /etc/default/locale
sudo locale-gen ru_RU.UTF-8
ekzorchik@srv-us2204a:~$ sudo systemctl restart nginx php8.1-fpm

После в Web-интефрейсе Zabbix

http://172.33.33.112 – User&Pass (Admin&zabbix) – User settings – Profile – вкладка User

Language появляется возможность выбрать вместо System default -> Russian (ru_RU) и нажав Update, интерфейс и все элементы меню поменяют свой язык с Английского на привычный Русский. Также можно поменять в обратном режиме

http://172.33.33.112 – User&pass (Admin&zabbix) – Настройки пользователя – Профиль – вкладка Пользователь Язык выбрать в место Русский (ru_RU) –> Английский (en_US) и нажав Обновить.

Итак, я для себя подготовил шпаргалку на тему как вместо внедрить сервис корпоративного мониторинга за инфраструктурой базирующегося на связке Ubuntu 22.04 Server LTS + Nginx + Zabbix 6.2. Лично я пока использую другой релиз, а именно Zabbix 5.0 LTS и мне его хватает за глаза, а тут уже 6 вышла, так что в скором времени произведу апгрейд или выполню развертывание с нуля и заново заведу все что нужно контролировать.

На этом заметка завершена, с уважением автор блога Олло Александр aka ekzorchik.