Встановлення Zabbix Server на VPS: Комплексний моніторинг та алертинг
TL;DR
У цьому докладному посібнику ми крок за кроком налаштуємо Zabbix Server версії 7.0 LTS на операційній системі Ubuntu Server 24.04 LTS, використовуючи PostgreSQL 16, Nginx та PHP 8.3. Ви навчитеся встановлювати всі необхідні компоненти, конфігурувати їх для оптимальної роботи, забезпечувати безпеку та налаштовувати базовий моніторинг, щоб отримати потужну та гнучку систему для відстеження стану ваших серверів та застосунків.
- Встановимо Zabbix Server 7.0 LTS на Ubuntu Server 24.04 LTS.
- Налаштуємо базу даних PostgreSQL 16 для зберігання даних Zabbix.
- Розгорнемо веб-інтерфейс Zabbix з використанням Nginx та PHP 8.3.
- Забезпечимо базову безпеку сервера за допомогою UFW та Fail2ban.
- Налаштуємо автоматичні бекапи ключових даних Zabbix.
- Розберемо типові проблеми та способи їх усунення.
Що ми налаштовуємо і навіщо
Ми будемо встановлювати Zabbix Server — потужну, універсальну та повністю безкоштовну систему моніторингу з відкритим вихідним кодом. Zabbix дозволяє збирати дані про продуктивність та доступність практично будь-яких мережевих пристроїв, серверів, віртуальних машин, хмарних сервісів та застосунків. Він може відстежувати тисячі різних метрик, таких як завантаження CPU, використання пам'яті, дисковий простір, мережевий трафік, стан процесів, логи застосунків та багато іншого.
У підсумку читач отримає повністю функціональну систему моніторингу, здатну збирати дані, візуалізувати їх на дашбордах, аналізувати тренди і, найголовніше, генерувати сповіщення при виході параметрів за задані межі. Це дозволить оперативно реагувати на проблеми до того, як вони зачеплять кінцевих користувачів, та підтримувати високий рівень доступності ваших сервісів.
Існують різні підходи до моніторингу. Можна використовувати хмарні керовані рішення (наприклад, AWS CloudWatch, Google Cloud Monitoring, Datadog), які пропонують зручність та масштабованість за абонентську плату. Однак, розгортання Zabbix на власному VPS або виділеному сервері має низку переваг:
- Повний контроль: Ви повністю контролюєте дані, конфігурацію та безпеку.
- Економія: Відсутність щомісячних платежів за моніторинг, оплачується лише сам сервер.
- Гнучкість: Можливість глибокої кастомізації під специфічні потреби вашої інфраструктури.
- Приватність: Ваші дані моніторингу не покидають вашу інфраструктуру, що критично для деяких проєктів.
Таким чином, Zabbix на VPS — це ідеальне рішення для тих, хто шукає потужний, гнучкий та економічно ефективний інструмент моніторингу з повним контролем над даними.
Який VPS-конфіг потрібен для цього завдання
Вибір конфігурації VPS для Zabbix Server залежить від масштабу моніторингу. Чим більше пристроїв, елементів даних (items) та тригерів ви плануєте відстежувати, тим потужнішим має бути сервер. Zabbix досить ресурсоємний, особливо його база даних, тому не варто економити на ресурсах.
Мінімальні вимоги для Zabbix Server (для невеликої інфраструктури, до 50 пристроїв):
- CPU: 2 vCPU. Zabbix Server активно використовує процесор для обробки даних та виконання перевірок.
- RAM: 4 ГБ. Оперативна пам'ять критична для бази даних (PostgreSQL або MySQL) та процесів Zabbix Server.
- Диск: 80 ГБ SSD. SSD значно прискорює роботу бази даних, що важливо для продуктивності Zabbix. Об'єм залежить від глибини зберігання історії даних.
- Мережа: 100 Мбіт/с або 1 Гбіт/с. Для передачі даних від агентів та доступу до веб-інтерфейсу.
Рекомендований VPS-план для середніх завдань (до 200 пристроїв, кілька тисяч метрик):
Для більш серйозних завдань, де потрібен моніторинг до 200 пристроїв з частим збором даних, необхідні більш продуктивні ресурси. Наприклад, можна взяти VPS з 4 vCPU, 8 ГБ RAM та 200 ГБ SSD. Це забезпечить стабільну роботу Zabbix, дозволить зберігати більше історичної інформації та обробляти більше запитів без затримок. Переконайтеся, що ваш провайдер пропонує стабільний та швидкий SSD-диск (NVMe краще) та достатню пропускну здатність мережі.
Коли потрібен dedicated, а не VPS
Виділений сервер стає кращим, коли:
- Дуже велика інфраструктура: Моніторинг сотень або тисяч пристроїв, збір мільйонів метрик за хвилину.
- Тривале зберігання даних: Необхідність зберігати історію даних роками, що вимагає терабайтів дискового простору.
- Висока продуктивність бази даних: VPS може мати обмеження щодо IOPS, що критично для високонавантажених баз даних Zabbix. Виділений сервер дає гарантовану продуктивність дискової підсистеми.
- Вимоги до ізоляції: Повна фізична ізоляція від інших клієнтів провайдера.
Для більшості завдань, особливо на початковому етапі, потужний VPS буде достатнім, але при зростанні інфраструктури варто розглянути перехід на dedicated.
Локація: на що впливає
Вибір локації VPS також важливий:
- Затримка (Latency): Розміщуйте Zabbix Server якомога ближче до об'єктів моніторингу (агентів), щоб мінімізувати затримки при зборі даних. Висока затримка може призводити до хибних спрацьовувань тригерів або пропусків збору метрик.
- Географічний розподіл: Якщо ваша інфраструктура розподілена по різних континентах, розгляньте можливість розміщення кількох Zabbix Proxy в регіонах для збору даних та їх подальшої передачі на центральний Zabbix Server.
- Законодавство: Враховуйте закони про зберігання даних у вибраній локації, якщо це критично для вашого проєкту.
Підготовка сервера
Перш ніж встановлювати Zabbix, необхідно провести базове налаштування безпеки та оновити операційну систему. Ми будемо використовувати Ubuntu Server 24.04 LTS.
1. Підключення по SSH та створення користувача
Підключіться до вашого VPS по SSH під користувачем root або тим користувачем, якого надав хостинг-провайдер. Потім створіть нового користувача з обмеженими правами для повсякденної роботи та додайте його до групи sudo.
# Створюємо нового користувача (замініть 'youruser' на бажане ім'я)
sudo adduser youruser
# Додаємо користувача до групи sudo
sudo usermod -aG sudo youruser
# Переключаємося на нового користувача
su - youruser
Надалі всі команди будуть виконуватися від імені цього користувача з використанням sudo.
2. Оновлення системи
Завжди починайте з оновлення списку пакетів та самої системи, щоб переконатися, що у вас встановлені останні версії всіх компонентів та виправлень безпеки.
# Оновлюємо список пакетів
sudo apt update
# Оновлюємо встановлені пакети
sudo apt upgrade -y
# Перезавантажуємо сервер, якщо потрібне оновлення ядра
sudo reboot
Після перезавантаження знову підключіться по SSH.
3. Налаштування файрволу (UFW)
Увімкніть Uncomplicated Firewall (UFW) та дозвольте лише необхідні порти. Для Zabbix нам знадобляться SSH (порт 22), HTTP (порт 80) та HTTPS (порт 443), а також порт Zabbix Server (10051) та Zabbix Agent (10050) для взаємодії з самим сервером та агентами.
# Дозволяємо SSH (порт 22)
sudo ufw allow ssh
# Дозволяємо HTTP (порт 80)
sudo ufw allow http
# Дозволяємо HTTPS (порт 443)
sudo ufw allow https
# Дозволяємо порт Zabbix Server (для вхідних з'єднань від агентів/проксі)
sudo ufw allow 10051/tcp
# Дозволяємо порт Zabbix Agent (якщо Zabbix Agent буде встановлений на цьому ж сервері та моніторитиме його)
sudo ufw allow 10050/tcp
# Вмикаємо UFW
sudo ufw enable
Підтвердіть увімкнення файрволу, набравши y. Перевірити статус UFW можна командою sudo ufw status.
4. Встановлення Fail2ban
Fail2ban допомагає захистити сервер від атак методом підбору паролів, блокуючи IP-адреси, які здійснюють занадто багато невдалих спроб входу.
# Встановлюємо Fail2ban
sudo apt install fail2ban -y
# Вмикаємо та запускаємо сервіс Fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Fail2ban за замовчуванням налаштований на захист SSH. Ви можете додати додаткові правила, якщо буде потрібно.
5. Встановлення базових утиліт
Встановіть кілька корисних утиліт, які стануть у пригоді в процесі налаштування та адміністрування.
# Встановлюємо curl, wget, git, htop, nano
sudo apt install curl wget git htop nano -y
Встановлення ПЗ — покроково
У цьому розділі ми встановимо всі необхідні компоненти для роботи Zabbix Server 7.0 LTS: сервер бази даних PostgreSQL 16, веб-сервер Nginx, PHP 8.3 і, власне, сам Zabbix Server.
1. Встановлення PostgreSQL Server 16
Zabbix може використовувати різні бази даних, але PostgreSQL є чудовим вибором для продуктивності та надійності. Ubuntu 24.04 LTS постачається з PostgreSQL 16.
# Встановлюємо PostgreSQL 16 та додаткові модулі
sudo apt install postgresql postgresql-contrib -y
# Перевіряємо статус сервісу PostgreSQL
sudo systemctl status postgresql
Переконайтеся, що сервіс запущений та активний.
2. Створення бази даних та користувача Zabbix
Створимо нову базу даних та користувача PostgreSQL спеціально для Zabbix, а також встановимо пароль для цього користувача. Використовуйте надійний пароль!
# Перемикаємося на користувача postgres для роботи з БД
sudo -u postgres psql
# Створюємо базу даних zabbix
CREATE DATABASE zabbix ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8' TEMPLATE template0;
# Створюємо користувача zabbix та встановлюємо пароль (замініть 'your_db_password' на надійний пароль)
CREATE USER zabbix WITH PASSWORD 'your_db_password';
# Надаємо всі привілеї користувачу zabbix для бази даних zabbix
GRANT ALL PRIVILEGES ON DATABASE zabbix TO zabbix;
# Виходимо з psql
\q
3. Встановлення Zabbix Server 7.0 LTS
Додамо офіційний репозиторій Zabbix для Ubuntu 24.04 та встановимо необхідні пакети.
# Завантажуємо та встановлюємо репозиторій Zabbix 7.0 LTS для Ubuntu 24.04
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_7.0-1+ubuntu24.04_all.deb
# Оновлюємо список пакетів після додавання репозиторію
sudo apt update
# Встановлюємо Zabbix Server з підтримкою PostgreSQL, Zabbix Frontend з Nginx та Zabbix Agent
sudo apt install zabbix-server-pgsql zabbix-frontend-php zabbix-nginx-conf zabbix-agent -y
Ця команда встановить Zabbix Server, веб-інтерфейс, конфігурацію Nginx для Zabbix та Zabbix Agent (який моніторитиме сам сервер Zabbix).
4. Імпорт початкової схеми бази даних
Тепер необхідно імпортувати початкову схему та дані Zabbix у створену базу даних. При запиті пароля введіть пароль для користувача zabbix, який ви встановили раніше.
# Імпортуємо схему та дані (пароль для користувача zabbix буде запитано)
sudo -u zabbix psql -h localhost zabbix < /usr/share/zabbix-sql-scripts/postgresql/server.sql
Якщо команда виконається без помилок, схема бази даних Zabbix буде успішно імпортована.
5. Налаштування PHP для Zabbix Frontend
Zabbix Frontend вимагає певних налаштувань PHP. За замовчуванням Zabbix-Nginx-Conf встановлює PHP-FPM, але нам потрібно переконатися, що всі параметри відповідають вимогам.
# Відкриваємо файл конфігурації PHP-FPM (для PHP 8.3)
sudo nano /etc/php/8.3/fpm/php.ini
Знайдіть та змініть (або додайте, якщо відсутні) наступні параметри:
max_execution_time = 300
max_input_time = 300
memory_limit = 256M
post_max_size = 16M
upload_max_filesize = 16M
date.timezone = Europe/Moscow ; Замініть на вашу часову зону
Збережіть зміни (Ctrl+O, Enter, Ctrl+X).
6. Налаштування Nginx
Пакет zabbix-nginx-conf вже надав конфігураційний файл для Nginx. Зазвичай він знаходиться в /etc/nginx/conf.d/zabbix.conf або /etc/nginx/sites-available/zabbix.conf. Переконайтеся, що Nginx налаштований на прослуховування правильного порту PHP-FPM.
# Перевіряємо конфігураційний файл Nginx для Zabbix
sudo nano /etc/nginx/conf.d/zabbix.conf
Переконайтеся, що секція location ~ \.php$ вказує на правильний сокет PHP-FPM (для PHP 8.3 це зазвичай /run/php/php8.3-fpm.sock):
# Приклад вмісту zabbix.conf (переконайтеся, що fastcgi_pass відповідає вашій версії PHP)
server {
listen 80;
server_name your_domain_or_ip; # Замініть на IP вашого VPS або доменне ім'я
root /usr/share/zabbix;
index index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ /\.ht {
deny all;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.3-fpm.sock; # Переконайтеся, що це відповідає вашій версії PHP-FPM
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
}
}
Збережіть зміни, якщо вони були внесені.