Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

Описание


Сервис Eltex-bonnie предназначен для выборки и обработки статистики аккаунтинга из ClickHouse. Использует MySQL и ClickHouse только на чтение. Сервис написан на Golang и основан на протоколе gRPC. Используется Личным кабинетом для получения данных.

Установка сервиса


Однохостовая установка

Существует два способа установить модуль: вручную и вместе с остальными сервисами с помощь скрипта-помогатора.

Ручная установка:

  1. Установить ClickHouse
  2. Установить пакет eltex-bonnie-db
  3. Установить пакет eltex-bonnie

Автоматическая установка:

  1. Запустить скрипт-помогатор с опцией --clickhouse

Многохостовая установка

  1. Установить ClickHouse на отдельный сервер (VM)
  2. Сконфигурировать ClickHouse
  3. Создать необходимые БД и таблицу
  4. Установить пакет 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

Содержит основные настройки сервиса.

config.hocon
serviceConfiguration = {
    ApplicationConfiguration = {

        GrpcPort = 9070

        // 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

        mysqlConfiguration = {
            ConnectionString = "tcp(127.0.0.1:3306)"
            DBName = "radius"
            Login = "javauser"
            Password = "javapassword"
        }

        clickhouseConfiguration = {
            ConnectionString = "tcp://127.0.0.1:9003"
            DBName = "radius"
            Login = "javauser"
            Password = "javapassword"
        }
    }
}

logs = {
    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

    }
}
  • Порт, по которому будет происходить взаимодействие с Личным кабинетом:
...
        GrpcPort = 9070
...
  • Параметры подключения к MySQL БД 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

docker-compose.yml
version: "3"

services:
  bonnie:
    image: hub.eltex-co.ru/softwlc/eltex-bonnie:1.20-<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}
Вместо <tag> необходимо указать актуальную версию, которую можно посмотреть по ссылке.
.env
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

Описание переменных окружения

Запуск сервиса

  • GrpcPort - порт, на котором будет стартовать сервис внутри контейнера.

Подключение к MySQL

  • MySQLUrl - адрес MySQL-сервера;
  • 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.
  • Нет меток