Описание


Сервис обеспечивает журналирование работы с портальными учётными записями (на данный момент используется только для журналирования работы сервиса eltex-mercury).

Межсервисный обмен реализован на базе gRPC API.
Logging-service взаимодействует с базой ЛК wifi-customer-cab и фиксирует получаемые данные в коллекцию eventlog (в GUI ЛК это таблица "Журнал событий" - "Журнал модификаций учетных записей").


Управление сервисом


Установка

apt-get install eltex-logging-service


Способы запуска/остановки

ДействиеКомандаОтвет
Проверка состоянияservice eltex-logging-service status

Сервис запущен

Active: active (running)

Cервис не запущен

Active: failed


Запуск сервисаservice eltex-logging-service start

Сервис успешно запущен

Active: active (running)


Остановка сервисаservice eltex-logging-service stop

Сервис успешно остановлен

Active: failed


Перезапуск сервисаservice eltex-logging-service restart

Сервис успешно перезапущен

Active: active (running)





Конфигурация


/etc/eltex-logging-service/application.conf

Основной конфигурационный файл.

server {
  port = 9099
}

eventlog {
  enabled = true
}

sorm {
  enabled = false
  dir = /var/log/eltex-logging-service/sorm3/
}

database {
  uri = "mongodb://localhost:27017/wifi-customer-cab"
  poolSize = 5
  timeout = 5s
}
server {
  port = 9099
}
eventlog {
  enabled = true
}
sorm {
  enabled = false                                     Активация
  dir = /var/log/eltex-logging-service/sorm3/         Путь к папке событий
}

Настройка доступа к БД ЛК:

database {
  uri = "mongodb://localhost:27017/wifi-customer-cab"  Адрес БД
  poolSize = 5                                         Количество возможных подключений
  timeout = 5s                                         Время ожидания ответа от БД
}


/etc/eltex-logging-service/log4j2.xml

Файл настройки логирования сервиса.

<?xml version="1.0" encoding="UTF-8"?>

<Configuration monitorInterval="600">
    <Properties>
        <Property name="rootLevel">${env:LOG_LEVEL:-ERROR}</Property>
        
        <Property name="baseDir">/var/log/eltex-logging-service</Property>
        <Property name="maxFileSize">20 MB</Property>
        <Property name="accumulatedFileSize">10 GB</Property>
        <Property name="lastModified">4d</Property>
        <Property name="maxCount">20</Property>
        <Property name="logPattern">%d{ISO8601} [%t] %-5p %logger{12} %C{1}.%M(line:%L). %m%n</Property>

        <Property name="gelfLevel">${env:GELF_LEVEL:-OFF}</Property>
        <Property name="gelfHost">${env:GELF_HOST:-udp:lab3-test.eltex.loc}</Property>
        <Property name="gelfPort">${env:GELF_PORT:-12201}</Property>
    </Properties>
    <Appenders>

        <Console name="Console">
            <PatternLayout pattern="${logPattern}" />
        </Console>

        <RollingFile name="RollingFile"
                     fileName="${baseDir}/logging-service.log"
                     filePattern="${baseDir}/log/logging-service-%i.log.gz">
            <PatternLayout pattern="${logPattern}" />
            <Policies>
                <SizeBasedTriggeringPolicy size="${maxFileSize}" />
            </Policies>
            <DefaultRolloverStrategy max="${maxCount}">
                <Delete basePath="${baseDir}" maxDepth="3">
                    <IfFileName glob="*/logging-service-*.log.gz">
                        <IfAny>
                            <IfAccumulatedFileSize exceeds="${accumulatedFileSize}" />
                            <IfLastModified age="${lastModified}" />
                        </IfAny>
                    </IfFileName>
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>

        <Gelf name="Gelf" host="${gelfHost}" port="${gelfPort}" version="1.1" facility="eltex-logging-service"
              extractStackTrace="true" originHost="%host{fqdn}" maximumMessageSize="8192" >
            <Field name="thread" pattern="%t"/>
            <Field name="level" pattern="%level"/>
            <Field name="severity" pattern="%-5level"/>
            <Field name="logger" pattern="%logger{12}"/>
            <Field name="location" pattern="%C{1}.%M(line:%L)"/>
        </Gelf>

    </Appenders>

    <Loggers>
        <Root level="${rootLevel}">
            <AppenderRef ref="RollingFile" />
        </Root>

        <Logger name="org.springframework" level="ERROR" />
        <Logger name="org.hibernate"       level="ERROR" />
        <Logger name="org.mongodb"         level="ERROR" />
        <Logger name="io.netty"            level="ERROR" />
        <Logger name="io.grpc"             level="ERROR" />
    </Loggers>

</Configuration>
<Configuration monitorInterval="600">
<Property name="baseDir">/var/log/eltex-logging-service</Property>
<Property name="maxFileSize">20 MB</Property>
<Property name="accumulatedFileSize">10 GB</Property>
<Property name="lastModified">4d</Property>
<Property name="maxCount">20</Property>
<Property name="gelfLevel">${env:GELF_LEVEL:-OFF}</Property>
<Property name="gelfHost">${env:GELF_HOST:-udp:lab3-test.eltex.loc}</Property>
<Property name="gelfPort">${env:GELF_PORT:-12201}</Property>
<Root level="${rootLevel}">


/etc/default/eltex-logging-service

Файл, содержит параметры инициализации сервиса.

# Initial size of Java heap
JAVA_INIT_HEAP=4m
# Maximum size of Java heap
JAVA_MAX_HEAP=32m

# Additional arguments to pass to java
JAVA_OPTS="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/eltex-logging-service"
JAVA_INIT_HEAP=4m
JAVA_MAX_HEAP=32m
JAVA_OPTS="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/eltex-logging-service"



Докеризация сервиса


Сервис может быть запущен в docker-контейнере. Для этого необходимо подготовить файл с переменными окружения .env и docker-compose.yml

version: "3"
services:
  eltex-logging-service:
    container_name: eltex-logging-service
    image:  hub.eltex-co.ru/softwlc/eltex-logging-service:1.19-<tag>
    network_mode: host
    ports:
      - 9099:${LOGGING_SERVICE_PORT}
    environment:
      - server.port=${LOGGING_SERVICE_PORT}
      - eventlog.enabled=${LOGGING_SERVICE_EVENTLOG}
      - sorm.enabled=${LOGGING_SERVICE_SORM}
      - sorm.dir=${LOGGING_SERVICE_SORM_DIR}
      - database.uri=${LOGGING_SERVICE_DB_URI}
      - database.poolSize=${LOGGING_SERVICE_DB_POOL_SIZE}
      - database.timeout=${LOGGING_SERVICE_DB_TIMEOUT}
    volumes:
      - /etc/eltex-logging-service/:/etc/eltex-logging-service/


Вместо <tag> необходимо указать актуальную версию, которую можно посмотреть по ссылке.


LOGGING_SERVICE_PORT=9099
LOGGING_SERVICE_EVENTLOG=true
LOGGING_SERVICE_SORM=false
LOGGING_SERVICE_SORM_DIR=/var/log/eltex-logging-service/sorm3/
LOGGING_SERVICE_DB_URI=mongodb://localhost:27017/wifi-customer-cab
LOGGING_SERVICE_DB_POOL_SIZE=5
LOGGING_SERVICE_DB_TIMEOUT=5s


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

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

Настройка лога событий:

Настройка SORM3:

Настройки взаимодействия с БД: