Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Решение построено на одном Zabbix Agent с логическим разделением метрик по хостам в Zabbix.

Info
Zabbix Server
    ↓ запрос через localhost:10051
Zabbix Agent (127.0.0.1:10050)
    ↓ выполняет UserParameter
Perl-скрипты ABillS (/usr/abills/misc/zabbix/*.pl)
    ↓ читают данные
БД ABillS (MariaDB)

...


Критично:

  • Agent работает от пользователя zabbix
  • Скрипты должны быть executable для группы zabbix
  • Agent слушает только 127.0.0.1 (закрыт от сети)

...

1.2. Установка компонентов

Code Block
apt install -y zabbix-server-mysql zabbix-sql-scripts zabbix-agent zabbix-frontend-php php8.3-mysql

...


1.3. Создание БД для Zabbix

mysql
Code Block
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. Импорт схемы

Code Block
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -u zabbix -p zabbix

...

Введите пароль пользователя zabbix.

...

1.5. Конфигурация Zabbix Server

Code Block
nano /etc/zabbix/zabbix_server.conf

...

Найти и задать:

Code Block
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=STRONG_PASSWORD_HERE

...

1.6. Запуск сервисов

Code Block
systemctl restart zabbix-server zabbix-agent
systemctl enable zabbix-server zabbix-agent
systemctl status zabbix-server

...

Ожидаемо: active (running)

...

2. Настройка Apache для Web-интерфейса

2.1. Конфигурация порта

Code Block
nano /etc/apache2/ports.conf

...

Добавить (если нет):

Code Block
Listen 8080

...

2.2. VirtualHost для Zabbix

Code Block
nano /etc/apache2/sites-available/zabbix.conf

...


Code Block
<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

Code Block
a2enmod proxy_fcgi setenvif rewrite
a2enconf php8.3-fpm
a2ensite zabbix
systemctl restart php8.3-fpm
systemctl reload apache2

...

2.4. Настройка PHP

Code Block
nano /etc/php/8.3/fpm/php.ini

...

Изменить:

post_max_size

...

=

...

16M

...

upload_max_filesize

...

=

...

16M

...

max_execution_time

...

=

...

300

...

max_input_time

...

=

...

300

...


Code Block
systemctl restart php8.3-fpm

...

2.5. Генерация locale (если нужно)

Code Block
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

...

4.1. Ограничение сетевого доступа

Code Block
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. Запрет небезопасных команд

Code Block
nano /etc/zabbix/zabbix_agentd.conf

...

Убедиться:

DenyKey=system.run[*]

Или явно разрешить только для ABillS (см. раздел 8.3).

Code Block
systemctl restart zabbix-agent

...

4.3. Проверка

Code Block
ss -tulpn | grep 10050

...

Ожидаемо: 127.0.0.1:10050 (НЕ 0.0.0.0)

...

5.1. Проверка наличия скриптов

Code Block
ls -l /usr/abills/misc/zabbix/

...

Ожидаемо:

zabbix_users.pl

zabbix_internet_online.pl

zabbix_payments_types.pl

5.2. Установка прав доступа (КРИТИЧНО)

Проблема: по умолчанию скрипты принадлежат root:root с правами 644 — Zabbix Agent не может их выполнить.

Решение:

Code Block
chgrp zabbix /usr/abills/misc/zabbix/*.pl
chmod 750 /usr/abills/misc/zabbix/*.pl

...

Проверка:

Code Block
ls -l /usr/abills/misc/zabbix/zabbix_users.pl

...

Ожидаемо: -rwxr-x--- root zabbix

5.3. Создание UserParameter

Создать файл:

bash

Code Block
nano

...

 /etc/zabbix/zabbix_agentd.d/abills_users.conf

Вставить:

Code Block
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 явно запрещены все команды:

Code Block
nano /etc/zabbix/zabbix_agentd.conf

...

Добавить ДО строки DenyKey=system.run[*]:

...

⚠️ Внимание: порядок важен — AllowKey должен быть ДО DenyKey.

5.5. Перезапуск агента

Code Block
systemctl restart zabbix-agent

...

5.6. Локальная проверка

Code Block
sudo -u zabbix /usr/abills/misc/zabbix/zabbix_users.pl total

...

Ожидаемо: число (например, 17100)

...

Если sudo -u zabbix не работает, проверить права на каталоги:

Code Block
namei -l /usr/abills/misc/zabbix/zabbix_users.pl

...

Все каталоги должны иметь x (execute) для group или others.

...

Скрипты должны быть доступны только root и zabbix:

Code Block
chmod 750 /usr/abills/misc/zabbix/*.pl
chown root:zabbix /usr/abills/misc/zabbix/*.pl

...

НЕ использовать 777 или 755.

...

1. Zabbix Server не стартует

Проверка:

Code Block
systemctl status zabbix-server
journalctl -u zabbix-server -n 50

...

Частые причины:

  • Неверный пароль БД в /etc/zabbix/zabbix_server.conf
  • БД не создана или схема не импортирована

...

Проверка в Web: Monitoring → Hosts → Abills → Items → смотреть Error.

Локальная проверка:

Code Block
zabbix_agentd -t abills.UserAll.value

...

Частые причины:

  • UserParameter не создан (/etc/zabbix/zabbix_agentd.d/abills_users.conf)
  • Агент не перезапущен после изменений
  • Права доступа к скриптам (см. 8.2)

3. Web-интерфейс не открывается

Проверка:

Code Block
ss -tulpn | grep 8080
systemctl status apache2
systemctl status php8.3-fpm

...

Частые причины:

  • Apache не слушает 8080 (см. 5.1)
  • VirtualHost не включен (a2ensite zabbix)
  • PHP-FPM не запущен

...