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


Описание


Сервис обеспечивает журналирование работы с портальными учётными записями (на данный момент используется только для журналирования работы сервиса 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

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

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

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

/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>
  • Блок настройки перенаправления логов в Graylog (уровень логирования, адрес, порт):
<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

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

/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. В блоке "environment" необходимо указывать названия переменных в соответствии с названием переменных в конфигурационных файлах. В случае, если переменные не будут заданы или названия переменных будут заданы некорректно, то применятся значения по умолчанию.

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> необходимо указать актуальную версию, которую можно посмотреть по ссылке.


.env
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

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

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

  • LOGGING_SERVICE_PORT - порт, который будет слушать сервис.

  • JAVA_INIT_HEAP - Xms JVM опция.

  • JAVA_MAX_HEAP - Xmx JVM опция.

  • JAVA_OPTS – другие аргументы запуска JVM (может перезаписать любые другие аргументы).

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

  • LOGGING_SERVICE_EVENTLOG - включить поддержку лога событий.

Настройка SORM3:

  • LOGGING_SERVICE_SORM - включить поддержку sorm3.

  • LOGGING_SERVICE_SORM_DIR - директория sorm3.

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

  • LOGGING_SERVICE_DB_URI - URI БД.

  • LOGGING_SERVICE_DB_POOL_SIZE - количество соединений с БД.

  • LOGGING_SERVICE_DB_TIMEOUT - таймаут соединения с БД




  • Нет меток