Описание
Сервис 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).