Обеспечить мониторинг ключевых метрик ABillS через Zabbix:
Операционная система: Ubuntu 24.04
Zabbix: 6.4 LTS
ABillS: 1.60.25 (рекомендация, не критично)
СУБД: MariaDB/MySQL (уже установлена с ABillS)
Доступы: root на сервере
Решение построено на одном Zabbix Agent с логическим разделением метрик по хостам в Zabbix.
Zabbix Server
↓ запрос через localhost:10051
Zabbix Agent (127.0.0.1:10050)
↓ выполняет UserParameter
Perl-скрипты ABillS (/usr/abills/misc/zabbix/*.pl)
↓ читают данные
БД ABillS (MariaDB)
Критично:
zabbixzabbix127.0.0.1 (закрыт от сети)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 |
apt install -y zabbix-server-mysql zabbix-sql-scripts zabbix-agent zabbix-frontend-php php8.3-mysql
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 на реальный пароль.
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -u zabbix -p zabbix
Введите пароль пользователя zabbix.
Ожидаемо: импорт занимает 1-2 минуты, предупреждения Using a password — норма.
nano /etc/zabbix/zabbix_server.conf
Найти и задать:
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=STRONG_PASSWORD_HERE
systemctl restart zabbix-server zabbix-agent
systemctl enable zabbix-server zabbix-agent
systemctl status zabbix-server
Ожидаемо: active (running)
nano /etc/apache2/ports.conf
Добавить (если нет):
Listen 8080
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>
a2enmod proxy_fcgi setenvif rewrite
a2enconf php8.3-fpm
a2ensite zabbix
systemctl restart php8.3-fpm
systemctl reload apache2
nano /etc/php/8.3/fpm/php.ini
Изменить:
post_max_size = 16M
upload_max_filesize = 16M
max_execution_time = 300
max_input_time = 300
systemctl restart php8.3-fpm
locale-gen en_US.UTF-8
update-locale LANG=en_US.UTF-8
systemctl reload apache2
Открыть в браузере: http://YOUR_SERVER_IP:8080
STRONG_PASSWORD_HERE → NextAbills Monitoring → NextLogin: Admin
Password: zabbix
⚠️ КРИТИЧНО: сразу после входа сменить пароль Admin:User settings → Change password
nano /etc/zabbix/zabbix_agentd.conf
ListenIP=127.0.0.1
Server=127.0.0.1
ServerActive=127.0.0.1
EnableRemoteCommands=0
nano /etc/zabbix/zabbix_agentd.conf
Убедиться:
DenyKey=system.run[*]
Или явно разрешить только для ABillS (см. раздел 8.3).
systemctl restart zabbix-agent
ss -tulpn | grep 10050
Ожидаемо: 127.0.0.1:10050 (НЕ 0.0.0.0)
ls -l /usr/abills/misc/zabbix/
Ожидаемо:
Проблема: по умолчанию скрипты принадлежат root:root с правами 644 — Zabbix Agent не может их выполнить.
Решение:
chgrp zabbix /usr/abills/misc/zabbix/*.pl
chmod 750 /usr/abills/misc/zabbix/*.pl
Проверка:
ls -l /usr/abills/misc/zabbix/zabbix_users.pl
Ожидаемо: -rwxr-x--- root zabbix
Создать файл:
bash
nano
/etc/zabbix/zabbix_agentd.d/abills_users.confВставить:
UserParameter=abills.UserAll.value,/usr/abills/misc/zabbix/zabbix_users.pl total UserParameter=abills.UserDisabled.value,/usr/abills/misc/zabbix/zabbix_users.pl disabled UserParameter=abills.UserDebt.value,/usr/abills/misc/zabbix/zabbix_users.pl debt UserParameter=abills.UserCredit.value,/usr/abills/misc/zabbix/zabbix_users.pl credit UserParameter=abills.UserOnline.value,/usr/abills/misc/zabbix/zabbix_internet_online.pl online UserParameter=abills.UserReconnect.value,/usr/abills/misc/zabbix/zabbix_internet_online.pl reconnect UserParameter=abills.UserRecovery.value,/usr/abills/misc/zabbix/zabbix_internet_online.pl recovery UserParameter=abills.UserZapped.value,/usr/abills/misc/zabbix/zabbix_internet_online.pl zapped
⚠️ Примечание: это не стандартная конфигурация ABillS, добавляется вручную.
Если в zabbix_agentd.conf явно запрещены все команды:
nano /etc/zabbix/zabbix_agentd.conf
Добавить ДО строки DenyKey=system.run[*]:
AllowKey=system.run[/usr/abills/misc/zabbix/*.pl *]
⚠️ Внимание: порядок важен — AllowKey должен быть ДО DenyKey.
systemctl restart zabbix-agent
sudo -u zabbix /usr/abills/misc/zabbix/zabbix_users.pl total
Ожидаемо: число (например, 17100)
zabbix_agentd -t abills.UserAll.value
Ожидаемо: abills.UserAll.value [t|17100]
Файл zbx_export_abills.yaml
zabbix_export: |
В Zabbix Web:
Configuration → Templates → Importzbx_export_abills.yamlImportРезультат: появится шаблон Abills.
Configuration → Hosts → Create host
AbillsLinux servers (или создать свою)Agent127.0.0.110050⚠️ Критично: IP должен быть 127.0.0.1 (локальный агент).
В настройках хоста Abills:
Templates → Link new templateAbillsAdd → UpdateЧерез 1-2 минуты:
Monitoring → Latest data → Host: Abills
Ожидаемо:
User Total — числоUser Debt — числоUser Credit — числоUser Disabled — числоUser Online — числоSupportedСимптом: Permission denied в значениях items.
Причина: скрипты не executable для пользователя zabbix.
Решение: см. раздел 8.2.
Если sudo -u zabbix не работает, проверить права на каталоги:
namei -l /usr/abills/misc/zabbix/zabbix_users.pl
Все каталоги должны иметь x (execute) для group или others.
Симптом: Value of type "string" is not suitable for value type "Numeric (unsigned)"
Причина: скрипт не может выполниться → возвращает текст ошибки вместо числа.
Решение: исправить права (см. 8.2), затем перепроверить локально (см. 8.6).
Если в zabbix_agentd.conf есть DenyKey=system.run[*] без предшествующих AllowKey, агент не сможет выполнять скрипты ABillS.
Решение: см. раздел 8.4 (добавить AllowKey ДО DenyKey).
НЕ публиковать в wiki:
zabbix для MariaDBИспользовать placeholder: STRONG_PASSWORD_HERE
Файл /etc/zabbix/zabbix_server.conf содержит пароль БД → права 640:
chmod 640 /etc/zabbix/zabbix_server.conf
chown root:zabbix /etc/zabbix/zabbix_server.conf
AdminAdmin постоянно)Require ip X.X.X.X/24 в VirtualHost для ограничения доступаСкрипты должны быть доступны только root и zabbix:
chmod 750 /usr/abills/misc/zabbix/*.pl
chown root:zabbix /usr/abills/misc/zabbix/*.pl
НЕ использовать 777 или 755.
Проверка:
systemctl status zabbix-server
journalctl -u zabbix-server -n 50
Частые причины:
/etc/zabbix/zabbix_server.confПроверка в Web: Monitoring → Hosts → Abills → Items → смотреть Error.
Локальная проверка:
zabbix_agentd -t abills.UserAll.value
Частые причины:
/etc/zabbix/zabbix_agentd.d/abills_users.conf)Проверка:
ss -tulpn | grep 8080
systemctl status apache2
systemctl status php8.3-fpm
Частые причины:
a2ensite zabbix)/var/log/zabbix/zabbix_server.log/var/log/zabbix/zabbix_agentd.log/var/log/apache2/zabbix_error.logИспользуйте SET GLOBAL log_bin_trust_function_creators = 1 вместо SUPER.
Это создает угрозу безопасности. Используйте 750 с группой zabbix.
ListenIP должен быть 127.0.0.1, НЕ 0.0.0.0.
Это главная причина компрометации Zabbix.
Это устаревший и небезопасный параметр. Используйте AllowKey/DenyKey.