Описание
Сервис Eltex-bonnie предназначен для выборки и обработки статистики аккаунтинга из ClickHouse. Использует MariaDB и ClickHouse только на чтение. Сервис написан на Golang и основан на протоколе gRPC. Используется Личным кабинетом для получения данных.
Установка сервиса
Однохостовая установка
Существует два способа установить модуль: вручную и вместе с остальными сервисами с помощь скрипта-помогатора.
Ручная установка:
- Установить ClickHouse
- Установить пакет eltex-bonnie-db
- Установить пакет eltex-bonnie
Автоматическая установка:
- Запустить скрипт-помогатор с опцией
--clickhouse
Многохостовая установка
- Установить ClickHouse на отдельный сервер (VM)
- Сконфигурировать ClickHouse
- Создать необходимые БД и таблицу
- Установить пакет eltex-bonnie рядом с остальными модулями SoftWLC (не рядом с ClickHouse)
Управление сервисом
Сервис автоматически запускается после установки.
Действие | Команда |
---|---|
Проверка состояния | service eltex-bonnie status |
Запуск сервиса | service eltex-bonnie start |
Остановка сервиса | service eltex-bonnie stop |
Перезапуск сервиса | service eltex-bonnie restart |
Конфигурация
/etc/eltex-bonnie/config.hocon
Содержит основные настройки сервиса.
- Порт, по которому будет происходить взаимодействие с Личным кабинетом:
... GrpcPort = 9070 ...
- Параметры подключения к MariaDB БД radius для получения статистики:
... mysqlConfiguration = { ConnectionString = "tcp(127.0.0.1:3306)" DBName = "radius" Login = "javauser" Password = "javapassword" } ...
- Параметры для подключения к ClickHouse БД radius:
... clickhouseConfiguration = { ConnectionString = "tcp://127.0.0.1:9003" DBName = "radius" Login = "javauser" Password = "javapassword" } ...
Для использования нескольких нод ClickHouse в ConnectionString необходимо указать адреса в формате:
ConnectionString = "tcp://127.0.0.1:9003?alt_hosts=host2:9003&connection_open_strategy=in_order"
- Параметры логирования:
... // if this environment equals to 'production', all logs will transmit to graylog // else if this environment equals to 'k8s', all logs will be written to stdout Environment = "production" GelfEnabled = false // inclusion of sending logs to graylog ... LoggerConfiguration = { LogLevel = "info" FileLog = "/var/log/eltex-bonnie/bonnie.log" // name of log file MaxSize = 5 // maximal size of log file (unit: megabyte) MaxAge = 30 // maximum log lifetime (unit: days) MaxBackups = 10 // maximum number of backups (unit: amount of log files) Compress = true // the need of compression GelfHostWithPort = "lab3-test.eltex.loc:12201" // address of graylog server } ...
Взаимодействие с другими сервисами
Для того чтобы Личный кабинет получал данные статистики аккаунтинга из ClickHouse надо указать верные порт, адрес и источник в /etc/eltex-wifi-cab/system.xml:
... <!--Bonnie or NBI--> <entry key="data.service.type">Bonnie</entry> <entry key="bonnie.service.host">localhost</entry> <entry key="bonnie.service.port">9070</entry> ...
Докеризация сервиса
Сервис может быть запущен в docker-контейнере. Для этого необходимо подготовить файл с переменными окружения .env и docker-compose.yml
version: "3" services: bonnie: image: hub.eltex-co.ru/softwlc/eltex-bonnie:1.21-<tag> ports: - 9070:9070 volumes: - "/var/log/eltex-bonnie:/var/log/eltex-bonnie" environment: - LogLevel=${BONNIE_LOG_LEVEL} - ClickHouseUrl=${BONNIE_CH_URL} - ClickHouseDBName=${BONNIE_CH_DBNAME} - ClickHouseUsername=${BONNIE_CH_USERNAME} - ClickHousePassword=${BONNIE_CH_PASSWORD} - MySQLUrl=${BONNIE_MYSQL_URL} - MySQLDBName=${BONNIE_MYSQL_DBNAME} - MySQLUsername=${BONNIE_MYSQL_USERNAME} - MySQLPassword=${BONNIE_MYSQL_PASSWORD} - TZ=${TZ}
BONNIE_LOG_LEVEL=debug BONNIE_CH_URL=tcp://<IP-address>:9003 BONNIE_CH_DBNAME=radius BONNIE_CH_USERNAME=javauser BONNIE_CH_PASSWORD=javapassword BONNIE_MYSQL_URL=tcp(<IP-address>:3306) BONNIE_MYSQL_DBNAME=radius BONNIE_MYSQL_USERNAME=javauser BONNIE_MYSQL_PASSWORD=javapassword #Настройка часового пояса TZ=Asia/Novosibirsk
Описание переменных окружения
Запуск сервиса
- GrpcPort - порт, на котором будет стартовать сервис внутри контейнера.
Подключение к MariaDB
- MySQLUrl - адрес MariaDB-сервера;
- MySQLDBName - имя базы данных;
- MySQLUsername - логин пользователя;
- MySQLPassword - пароль пользователя.
Подключение к ClickHouse
- ClickHouseUrl - адрес ClickHouse-сервера;
- ClickHouseDBName - имя базы данных;
- ClickHouseUsername - логин пользователя;
- ClickHousePassword - пароль пользователя.
Логирование
- LogLevel - уровень логирования (ERROR, INFO, DEBUG);
- FileLog - путь до файла с логами;
- MaxSizeFileLog - максимальный размер лог-файла в Мб;
- MaxAgeFileLog - максимальное время хранения лог-файла в днях;
- MaxBackupsFileLog - максимальное количество файлов логов;
- CompressLogs - архивировать ли лог-файлы;
- GelfHostWithPort - хост и порт подключения к GrayLog;
- LogEnvironment - среда работы сервера; определяет место, куда будут писаться логи (file/stdout);
- GelfEnabled - отправлять ли логи в GrayLog.
Настройка часового пояса
- TZ - часовой пояс в формате Asia/Novosibirsk (список существующих можно посмотреть командой timedatectl list-timezones).