Я сторонник всего что лично сам развернул/переделал что было до меня в организациях, за что отвечаю и обслуживаю, а потому мне захотелось посмотреть, как разворачивается релиз системы мониторинга 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."
Шаг №13:
Т.к. Установка завершена, то есть смысл выполнить авторизацию в развернутой системе мониторинга на базе Zabbix 6.2
через браузер посредством URL
строки: http://172.33.33.112/index.php
Username: Admin
Password: zabbix
Remember me for 30 days: Отмечаю галочкой
И нажимаю Sign in
Вход выполнен успешно и снова привычные элементы управления, да конечно будут различия, но в плане что не нужно сильно привыкать к интерфейсу все вспомнится довольно быстро.
Шаг №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.