Обеспечить мониторинг ключевых метрик ABillS через Zabbix:
Операционная система: Ubuntu 24.04
Zabbix: 6.4 LTS
ABillS: 1.60.25 (рекомендация, не критично)
СУБД: MariaDB/MySQL (уже установлена с ABillS)
Доступы: root на сервере
Решение построено на одном Zabbix Agent с логическим разделением метрик по хостам в Zabbix.
|
Критично:
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/ |
Ожидаемо:
zabbix_users.pl
zabbix_internet_online.pl
zabbix_payments_types.pl
Проблема: по умолчанию скрипты принадлежат 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).
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.