Zabbix
Коллектор Zabbix⚓︎
Коллектор данных об использовании вычислительных ресурсов, размещённых в любой IaaS/PaaS инфраструктуре, предназначенный для ежедневного:
-
сбора данных из API Zabbix,
-
генерации нагрузочных (метрики) отчётов за прошедшие сутки в виде CSV-файлов,
-
загрузки этих CSV-файлов в заданный бакет объектного (S3) хранилища.
Системные требования⚓︎
Коллектор представляет собой одно Java-приложение. Поэтому для его работы подойдёт любое уже имеющееся Java-окружение версии 21 и старше на основе Ubuntu версии 24.
Возможно использование выделенной виртуальной машины со следующими минимальными техническими характеристиками:
-
ОС: Ubuntu 24.04 LTS
-
CPU: 1 ядро 2GHz
-
RAM: 1 GB
-
Диск: 10 GB
-
Сеть: 1Gbit интерфейс, доступ к API Zabbix и S3-хранилищу
Предварительные требования⚓︎
Для создания подключения в Cloudmaster и настройки коллектора вам потребуется:
- Создать и настроить доступ к бакету.
- Настроить подключение бакета в Cloudmaster. Инструкция здесь.
- Получить URL Zabbix, а также логин и пароль от учетной записи. Учетная запись должна иметь доступ на чтение к группам хостов, по которым будет производиться анализ.
- Создать виртуальную машину и установить коллектор Zabbix.
Бакет может быть размещен в любом S3-совместимом объектном хранилище в любом облаке (провайдере) по вашему выбору. Cloudmaster и коллектор Zabbix должны иметь сетевой доступ по HTTPS-протоколу (TCP, 443 порт) к этому бакету.
Можно использовать один и тот же сервисный аккаунт и для коллектора Zabbix, и для настройки подключения к Cloudmaster (в этом случае у аккаунта должны быть права на чтение, листинг и запись).
По мере следования инструкциям рекомендуем записывать данные, которые потребуются для заполнения файла конфигурации.
Параметры для файла конфигурации⚓︎
| Поле в application.yml | Где взять значение | Описание | Пример значения |
|---|---|---|---|
| zabbix.api.url | Администратор Zabbix | Cетевой адрес (URL) API вашего мониторинга Zabbix | https://zbx.mycompany.ru/api_jsonrpc.php |
| zabbix.api.username | Администратор Zabbix | Логин учетной записи в Zabbix | user |
| zabbix.api.password | Администратор Zabbix | Пароль учетной записи в Zabbix | p@S6w0rd |
| s3.path-style-access-enabled | Облако по выбору | По умолчанию: true. Большинство провайдеров автоматически определяют формат адреса: virtual host или path-style | true |
| s3.bucket | Облако по выбору | Имя бакета | cloudmaster-0987654321bc |
| s3.access-key | Облако по выбору | Идентификатор ключа доступа сервисного аккаунта с правами на запись в бакет | ajeY73McSRicJS53TEJe7MSoX |
| s3.secret-key | Облако по выбору | Секрет ключа доступа сервисного аккаунта с правами на запись в бакет | wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY |
| s3.region | Облако по выбору | Регион бакета из документации провайдера, часто присутствует в эндпоинте | ru-moscow-1 |
| s3.endpoint | Облако по выбору | Эндпоинт S3-совместимого сервиса хранилища из документации провайдера | https://obs.ru-moscow-1.hc.sbercloud.ru |
| app.customer-id | Cloudmaster | Идентификатор компании из профиля пользователя | 0987654a-ffff-1111-dddd-0987654321bc |
| app.сonnection-id | Cloudmaster | ID вашего подключения в Cloudmaster из раздела Мои подключения | 1234 |
Установка⚓︎
Примерное время загрузки и установки ― 2 минуты (в зависимости от ширины интернет-канала).
- Загрузите скрипт для подключения необходимого репозитория Cloudmaster внутри целевой ВМ:
chmod 755 setup_cloudmaster_repo.sh
sudo ./setup_cloudmaster_repo.sh
# После завершения выполнения команды подключения репозитория терминал направит уведомление:
#
# Подключение публичного репозитория CloudMaster успешно завершено.
sudo apt update
# В итоговом отчёте убедитесь, что присутствует строка для репозитория Cloudmaster примерного вида:
# Hit:4 https://repo.demo.cloudmaster.ru/repository/apt-public noble InRelease
# Автоматическая установка коллектора Zabbix и всех зависимостей
apt install -y cloudmaster-zabbix-metric-collector
# Установка коллектора Zabbix и зависимостей с ручным подтверждением
apt install cloudmaster-zabbix-metric-collector
# В результате будут установлены пакеты: alsa-topology-conf, alsa-ucm-conf, ca-certificates-java,
# cloudmaster-zabbix-metric-collector, java-common, libasound2-data, libasound2t64, libavahi-client3, libavahi-common-data,
# libavahi-common3, libcups2t64, libgraphite2-3, libharfbuzz0b, liblcms2-2, libpcsclite1, openjdk-21-jre-headless
# Перечень пакетов примерный, точный список будет определён утилитой apt-get в момент установки на основе построенного
# дерева зависимостей.
Настройка⚓︎
После успешной установки откройте и отредактируйте конфигурационный файл application.yml. Файл находится по пути:
1. Доступ к Zabbix⚓︎
Укажите URL сервиса Zabbix, логин и пароль учетной записи.
zabbix:
api:
url: https://<IP-адрес или домен>/api_jsonrpc.php # сетевой адрес (URL) API вашего мониторинга Zabbix
username: DEC(<LOGIN>) # логин для доступа к API вашего мониторинга
password: DEC(<PASSWORD>) # пароль для доступа к API вашего мониторинга
2. Параметры S3-бакета⚓︎
Укажите данные для загрузки отчетов. Здесь и далее используйте обертку DEC(...) для ключей доступа — после первого запуска
сервиса они будут автоматически зашифрованы.
s3:
path-style-access-enabled: true # Определяет формат адреса, по которому идут запросы к бакету:
# false - по virtual host <ИМЯ_БАКЕТА>.<ЭНДПОИНТ>,
# true - по path-style <ЭНДПОИНТ>/<ИМЯ_БАКЕТА>
# В большинстве случаев провайдер автоматически выбирает нужный формат с параметром
# по умолчанию true. Параметр важен для успешной записи данных в бакет.
bucket: <ИМЯ_БАКЕТА>
access-key: DEC(<ACCESS_KEY>) # Идентификатор ключа сервисного аккаунта с правом на запись в бакет
secret-key: DEC(<SECRET_KEY>) # Ключ сервисного аккаунта с правом на запись в бакет
region: <РЕГИОН> # Из документации провайдера
endpoint: <ЭНДПОИНТ> # Из документации провайдера
Если у вашего провайдера нет явно заданных регионов, то обычно используется значение "default"
3. Идентификатор компании и подключения⚓︎
Укажите UUID вашей компании из профиля пользователя в Cloudmaster.
app:
customer-id: <ID_КЛИЕНТА_UUID> # UUID из профиля пользователя Cloudmaster
connection-id: <ID_ПОДКЛЮЧЕНИЯ_ИЗ_CLOUDMASTER> # Из раздела Мои подключения в Cloudmaster
Проверка работы⚓︎
Для проверки работы в SSH-консоли выполните команду вида
Проверьте, что коллектор выполнил сбор данных и запись файла в бакет. В бакете должны появиться вложенные «папки»:
/customer-id/load/ cm-connection-cm-connection-id
С этими префиксами (в эти папки) в заданный бакет автоматически будут загружаться объекты (csv-файлы) с метриками за прошедшие 30 дней (настраивается в конфигурационном файле application.properites).
В интерфейсе Cloudmaster данные и рекомендации стоит ожидать на следующий день после подключения.
Эксплуатация коллектора⚓︎
Запуск, останов, перезапуск
# Запуск
sudo service cloudmaster-zabbix-metric-collector start
# Останов
sudo service cloudmaster-zabbix-metric-collector stop
# Перезапуск (обязателен после правки application.yml)
sudo service cloudmaster-zabbix-metric-collector restart
Просмотр журнала логов
Журналы работы приложения находятся в каталоге:
Удаление коллектора и всех его зависимостей
Информация для службы безопасности⚓︎
Результат установки
В процессе установки коллектора создаются:
-
Системный пользователь cloudmaster
-
Системная группа cloudmaster
-
Подкаталог
/opt/cloudmaster/services/zabbix-metric-collector
в этом подкаталоге установлены:
- Java-приложение cm-zabbix-metriccollector.jar
- конфигурационный файл application.yml
- конфигурационный файл cm-zabbix-metriccollector.conf
- подкаталог для лог-файлов logs
-
Системные unit-файлы для
systemd-сервиса cloudmaster-zabbix-metric-collector-/usr/lib/systemd/system/zabbix-metric-collector.service -
Симлинк для
systemd-сервиса cloudmaster-zabbix-metric-collector-/etc/systemd/system/multi-user.target.wants/zabbix-metric-collector.service
Шифрование ключей доступа
В файле application.yml используйте обертку DEC(<НЕКОТОРОЕ-НЕШИФРОВАННОЕ-ЗНАЧЕНИЕ>) для ключей доступа. Это позволяет хранить «секреты» в зашифрованном виде.
После первого запуска сервиса cloudmaster-zabbix-metric-collector все параметры, обернутые в DEC(), будут автоматически зашифрованы и храниться
в конфигурационном файле application.yml в формате вида: ENC(5iBu.......0Mlmd10cuw==).
Ключ шифрования находится внутри бинарного файла Java-приложения cm-zabbix-metriccollector.jar.