Ответ
Настраивал Zabbix 6 LTS на Ubuntu Server для мониторинга инфраструктуры. Вот ключевые шаги и мои практические заметки:
1. Установка из официальных репозиториев (Ubuntu 22.04):
# Добавление репозитория Zabbix
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu22.04_all.deb
sudo dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb
sudo apt update
# Установка сервера, фронтенда и агента
sudo apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2
2. Подготовка базы данных (использовал MariaDB):
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;
3. Импорт начальной схемы и данных:
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
4. Конфигурация сервера (/etc/zabbix/zabbix_server.conf):
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=StrongPassword123!
# Увеличение количества процессов для обработки данных
StartPollers=20
StartPreprocessors=10
5. Настройка веб-сервера (Nginx + PHP-FPM):
Я предпочитаю Nginx. Важно правильно настроить fastcgi_params и права на директорию /usr/share/zabbix/.
6. Добавление первого хоста:
На мониторируемый сервер устанавливается zabbix-agent2. В его конфиге (/etc/zabbix/zabbix_agent2.conf) указывается IP-адрес Zabbix-сервера:
Server=192.168.1.10
ServerActive=192.168.1.10
Hostname=production-db-01
Почему такая настройка: Использование zabbix-agent2 дает больше возможностей "из коробки" (мониторинг Docker, журналы). Отдельная БД и тюнинг параметров сервера необходимы для стабильной работы под нагрузкой. Все эти шаги я обычно автоматизирую с помощью Ansible-плейбука.
Ответ 18+ 🔞
А, Zabbix, говоришь? Ну это же классика, ёпта! Каждый сисадмин через это проходил, как через обряд посвящения. Сидишь, настраиваешь, а потом бац — графики не грузятся, агенты молчат, и ты уже готов послать всё к чёрту. Но нет, мы же не из таких, мы прорвёмся.
Вот смотри, как я обычно это делаю, чтобы потом не орать «ёб твою мать» посреди ночи из-за алерта, который не сработал.
1. Качаем всё это добро с оффа.
Тут главное — не накосячить с репой, а то потом будет тебе хиросима, а не мониторинг. Для убунты 22.04 делаем так:
# Добавление репозитория Zabbix
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu22.04_all.deb
sudo dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb
sudo apt update
# Установка сервера, фронтенда и агента
sudo apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2
Всё скачалось, установилось — отлично. Если apt начал ругаться, что пакеты не нашлись — проверь, не опечатался ли в ссылке, а то бывает, чих-пых тебя в сраку, и полчаса ищешь ошибку.
2. База данных — святое дело.
Без неё — никуда. Я MariaDB юзаю, она как родная. Заходим в консольку и творим:
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;
Пароль, ясное дело, надо свой, посложнее. Не 123456, а то какой-нибудь пидарас шерстяной залезет и устроит ёперный театр.
3. Накатываем схему.
Тут важно не перепутать базу и пользователя, а то импорт накроется медным тазом, и придётся всё начинать сначала. Волнение, блядь, чувствую каждый раз.
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
Жмёшь энтер, вводишь пароль и ждёшь. Ждать можно долго, особенно на виртуалке. Идёшь чай пить. Возвращаешься — а оно всё ещё идёт. Терпения, блядь, ноль, но делать нечего, ждём.
4. Конфиг сервера — мозги операции.
Открываешь /etc/zabbix/zabbix_server.conf и приводишь к уму. Самое важное — доступ к базе.
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=StrongPassword123!
# Увеличение количества процессов для обработки данных
StartPollers=20
StartPreprocessors=10
StartPollers и StartPreprocessors — это чтобы сервер не тупил, когда хостов станет овердохуища. Выставил по своему опыту, можно потом поиграться.
5. Веб-морда через Nginx.
Apache — это, конечно, классика, но Nginx мне как-то роднее. Настраиваешь его, не забываешь про PHP-FPM. Самое главное — права на папку /usr/share/zabbix/ выставить правильно, а то фронтенд будет тебе показывать не графики, а ошибки доступа. И тогда ты сам от себя охуеешь.
6. Первый подопытный кролик.
Берёшь какой-нибудь сервер и ставишь на него zabbix-agent2. Это агент нового поколения, в нём дохуя всего полезного из коробки: и докер посмотрит, и логи почитает. В его конфиге (/etc/zabbix/zabbix_agent2.conf) пишешь:
Server=192.168.1.10
ServerActive=192.168.1.10
Hostname=production-db-01
Где 192.168.1.10 — это адрес твоего Zabbix-сервера, понятное дело. Hostname должен быть уникальным, иначе в веб-интерфейсе будет каша из хостов, и ты нихуя не разберёшь, где что.
А почему именно так?
Да потому что проверено на собственных шишках, чувак. zabbix-agent2 — это сила. Отдельная база, тюнинг параметров — это чтобы система не легла в самый неподходящий момент, когда нагрузка подскочит. А все эти шаги я, естественно, в Ansible-плейбук загоняю, чтобы в следующий раз не делать это вручную, как лох. Один раз настроил, запустил плейбук — и спи спокойно. Ну, почти спокойно, мониторинг же.