Versions Compared

Key

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

...

Операционная система: 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:

  1. Templates → Link new template
  2. Выбрать Abills
  3. 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.

...