...
Операционная система: Ubuntu 24.04
Zabbix: 6.4 LTS
ABillS: 1.60.25 (рекомендация, не критично)
СУБД: MariaDB/MySQL (уже установлена с ABillS)
Доступы: root на сервере
...
Архитектура решения
Решение построено на одном Zabbix Agent с логическим разделением метрик по хостам в Zabbix.
...
- Agent работает от пользователя
zabbix - Скрипты должны быть executable для группы
zabbix - Agent слушает только
127.0.0.1(закрыт от сети)
...
1. Установка Zabbix Server
...
1.1. Добавление репозитория
| Code Block |
|---|
wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu24.04_all.deb dpkg -i zabbix-release_6.4-1+ubuntu24.04_all.deb apt update |
...
1.2. Установка компонентов
apt install -y zabbix-server-mysql zabbix-sql-scripts zabbix-agent zabbix-frontend-php php8.3-mysql
...
1.3. Создание БД для Zabbix
mysql
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'STRONG_PASSWORD_HERE';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
SET GLOBAL log_bin_trust_function_creators = 1;
FLUSH PRIVILEGES;
EXIT;
⚠️ Замените STRONG_PASSWORD_HERE на реальный пароль.
...
1.4. Импорт схемы
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -u zabbix -p zabbix
...
Ожидаемо: импорт занимает 1-2 минуты, предупреждения Using a password — норма.
...
1.5. Конфигурация Zabbix Server
nano /etc/zabbix/zabbix_server.conf
...
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=STRONG_PASSWORD_HERE
...
1.6. Запуск сервисов
systemctl restart zabbix-server zabbix-agent
systemctl enable zabbix-server zabbix-agent
systemctl status zabbix-server
Ожидаемо: active (running)
...
2. Настройка Apache для Web-интерфейса
...
2.1. Конфигурация порта
nano /etc/apache2/ports.conf
Добавить (если нет):
Listen 8080
...
2.2. VirtualHost для Zabbix
nano /etc/apache2/sites-available/zabbix.conf
<VirtualHost *:8080>
ServerName zabbix.local
DocumentRoot /usr/share/zabbix
<Directory /usr/share/zabbix>
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<Directory /usr/share/zabbix/conf>
Require all denied
</Directory>
ErrorLog ${APACHE_LOG_DIR}/zabbix_error.log
CustomLog ${APACHE_LOG_DIR}/zabbix_access.log combined
</VirtualHost>
...
2.3. Включение PHP-FPM
a2enmod proxy_fcgi setenvif rewrite
a2enconf php8.3-fpm
a2ensite zabbix
systemctl restart php8.3-fpm
systemctl reload apache2
...
2.4. Настройка PHP
nano /etc/php/8.3/fpm/php.ini
...
systemctl restart php8.3-fpm
...
2.5. Генерация locale (если нужно)
locale-gen en_US.UTF-8
update-locale LANG=en_US.UTF-8
systemctl reload apache2
...
3. Web Setup Wizard
Открыть в браузере: http://YOUR_SERVER_IP:8080
...
⚠️ КРИТИЧНО: сразу после входа сменить пароль Admin:User settings → Change password
...
4. Защита Zabbix Agent
...
4.1. Ограничение сетевого доступа
nano /etc/zabbix/zabbix_agentd.conf
ListenIP=127.0.0.1
Server=127.0.0.1
ServerActive=127.0.0.1
EnableRemoteCommands=0
...
4.2. Запрет небезопасных команд
nano /etc/zabbix/zabbix_agentd.conf
...
systemctl restart zabbix-agent
...
4.3. Проверка
ss -tulpn | grep 10050
Ожидаемо: 127.0.0.1:10050 (НЕ 0.0.0.0)
...
5. Интеграция с ABillS
...
5.1. Проверка наличия скриптов
ls -l /usr/abills/misc/zabbix/
...
...
5.2. Установка прав доступа (КРИТИЧНО)
Проблема: по умолчанию скрипты принадлежат root:root с правами 644 — Zabbix Agent не может их выполнить.
...
Ожидаемо: -rwxr-x--- root zabbix
...
5.3. Создание UserParameter
Создать файл:
bash
nano
/etc/zabbix/zabbix_agentd.d/abills_users.conf...
⚠️ Примечание: это не стандартная конфигурация ABillS, добавляется вручную.
...
5.4. Разрешение выполнения (только если был установлен DenyKey)
Если в zabbix_agentd.conf явно запрещены все команды:
...
⚠️ Внимание: порядок важен — AllowKey должен быть ДО DenyKey.
...
5.5. Перезапуск агента
systemctl restart zabbix-agent
...
5.6. Локальная проверка
sudo -u zabbix /usr/abills/misc/zabbix/zabbix_users.pl total
...
Ожидаемо: abills.UserAll.value [t|17100]
...
6. Настройка в Zabbix Web
...
6.1. Импорт шаблона
Файл zbx_export_abills.yaml
...
Результат: появится шаблон Abills.
...
6.2. Создание отдельного хоста для ABillS
Configuration → Hosts → Create host
...
⚠️ Критично: IP должен быть 127.0.0.1 (локальный агент).
...
6.3. Привязка шаблона
В настройках хоста Abills:
Templates → Link new template- Выбрать
Abills Add → Update
...
6.4. Проверка данных
Через 1-2 минуты:
Monitoring → Latest data → Host: Abills
...
User Total— числоUser Debt— числоUser Credit— числоUser Disabled— числоUser Online— число- Все items в статусе
Supported
...
Критичные моменты
...
1. Права доступа к скриптам
Симптом: Permission denied в значениях items.
Причина: скрипты не executable для пользователя zabbix.
Решение: см. раздел 8.2.
...
2. Проверка всего пути к скриптам
Если sudo -u zabbix не работает, проверить права на каталоги:
...
Все каталоги должны иметь x (execute) для group или others.
...
3. Type mismatch (string вместо numeric)
Симптом: Value of type "string" is not suitable for value type "Numeric (unsigned)"
...
Решение: исправить права (см. 8.2), затем перепроверить локально (см. 8.6).
...
4. AllowKey vs DenyKey
Если в zabbix_agentd.conf есть DenyKey=system.run[*] без предшествующих AllowKey, агент не сможет выполнять скрипты ABillS.
Решение: см. раздел 8.4 (добавить AllowKey ДО DenyKey).
11. Безопасность
11.1. Пароли БД
НЕ публиковать в wiki:
- Пароль пользователя
zabbixдля MariaDB
Использовать placeholder: STRONG_PASSWORD_HERE
11.2. Файлы с паролями
Файл /etc/zabbix/zabbix_server.conf содержит пароль БД → права 640:
chmod 640 /etc/zabbix/zabbix_server.conf
chown root:zabbix /etc/zabbix/zabbix_server.conf
...
выполнять скрипты ABillS.
Решение: см. раздел 8.4 (добавить AllowKey ДО DenyKey).
...
Безопасность
Доступ к Web-интерфейсу
- Сразу после установки сменить пароль
Admin - Создать отдельного пользователя для работы (не использовать
Adminпостоянно) - Рассмотреть добавление
Require ip X.X.X.X/24в VirtualHost для ограничения доступа
...
Скрипты ABillS
Скрипты должны быть доступны только root и zabbix:
...
НЕ использовать 777 или 755.
...
Troubleshooting
...
1. Zabbix Server не стартует
Проверка:
systemctl status zabbix-server
journalctl -u zabbix-server -n 50
...
- Неверный пароль БД в
/etc/zabbix/zabbix_server.conf - БД не создана или схема не импортирована
...
2. Items в статусе "Unsupported"
Проверка в Web: Monitoring → Hosts → Abills → Items → смотреть Error.
...
- UserParameter не создан (
/etc/zabbix/zabbix_agentd.d/abills_users.conf) - Агент не перезапущен после изменений
- Права доступа к скриптам (см. 8.2)
...
3. Web-интерфейс не открывается
Проверка:
ss -tulpn | grep 8080
systemctl status apache2
systemctl status php8.3-fpm
...
- Apache не слушает 8080 (см. 5.1)
- VirtualHost не включен (
a2ensite zabbix) - PHP-FPM не запущен
...
4. Логи
- Zabbix Server:
/var/log/zabbix/zabbix_server.log - Zabbix Agent:
/var/log/zabbix/zabbix_agentd.log - Apache:
/var/log/apache2/zabbix_error.log
...
Что НЕ делать
...
1. Не давать SUPER привилегии пользователю zabbix в MariaDB
Используйте SET GLOBAL log_bin_trust_function_creators = 1 вместо SUPER.
...
2. Не использовать chmod 777 на скрипты
Это создает угрозу безопасности. Используйте 750 с группой zabbix.
...
3. Не оставлять Agent доступным из сети
ListenIP должен быть 127.0.0.1, НЕ 0.0.0.0.
...
4. Не оставлять стандартный пароль Admin
Это главная причина компрометации Zabbix.
...
5. Не использовать EnableRemoteCommands=1
Это устаревший и небезопасный параметр. Используйте AllowKey/DenyKey.
...