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


Описание


Сервис обеспечивает журналирование работы с портальными учётными записями (на данный момент используется только для журналирования работы сервиса 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 {
  jdbcUrl = "jdbc:mysql://localhost:3306/eltex_wifi_customer_cab"
  username = "javauser"
  password = "javapassword"
}
  • Порт, на котором работает сервис:
server {
  port = 9099
}
  • Активация записи событий в коллекцию eventlog:
eventlog {
  enabled = true
}
  • Активация отправки данных в СОРМ:
sorm {
  enabled = false                                     Активация
  dir = /var/log/eltex-logging-service/sorm3/         Путь к папке событий
}

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

database {
  jdbcUrl = "jdbc:mysql://localhost:3306/eltex_wifi_customer_cab" #адрес БД
  username = "javauser" #имя пользователя БД
  password = "javapassword" #пароль пользователя БД
}

/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="consoleLevel">${env:CONSOLE_LEVEL:-OFF}</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: ${ELTEX_HUB}/eltex-logging-service:${SWLC_VERSION}
    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.jdbcUrl=${LOGGING_SERVICE_DB_URI}
      - database.poolSize=${LOGGING_SERVICE_DB_POOL_SIZE}
      - database.username=${LOGGING_SERVICE_DB_USERNAME}
      - database.password=${LOGGING_SERVICE_DB_PASSWORD}
      - database.timeout=${LOGGING_SERVICE_DB_TIMEOUT}
      - LOGGING_SERVICE_CONSOLE_LEVEL=${LOGGING_SERVICE_CONSOLE_LEVEL}
      - LOGGING_SERVICE_LOG_LEVEL=${LOGGING_SERVICE_LOG_LEVEL}
      - GELF_LEVEL=${GELF_LEVEL}
      - GELF_HOST=${GELF_HOST}
      - GELF_PORT=${GELF_PORT}
      - TZ=${TZ}
.env
ELTEX_HUB=hub.eltex-co.ru/softwlc
SWLC_VERSION=1.30-<tag>
 
LOGGING_SERVICE_PORT=9099

#Настройка лога событий
LOGGING_SERVICE_EVENTLOG=true
LOGGING_SERVICE_LOG_LEVEL=INFO
LOGGING_SERVICE_CONSOLE_LEVEL=INFO

#Настройка SORM3
LOGGING_SERVICE_SORM=false
LOGGING_SERVICE_SORM_DIR=/var/log/eltex-logging-service/sorm3/

#Настройка взаимодействия с БД
LOGGING_SERVICE_DB_URI=jdbc:mysql://<ip mysql>:3306/eltex_wifi_customer_cab
LOGGING_SERVICE_DB_USERNAME=javauser
LOGGING_SERVICE_DB_PASSWORD=javapassword
LOGGING_SERVICE_DB_POOL_SIZE=5
LOGGING_SERVICE_DB_TIMEOUT=5s

#Настройка перенаправления логов на сервер Graylog
GELF_LEVEL=OFF
GELF_HOST=udp:<ip_graylog_server>
GELF_PORT=12201

#Настройка часового пояса
TZ=Asia/Novosibirsk

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

Вместо <ip mysql> необходимо указать ip-адрес сервера MariaDB.

Вместо <ip_graylog_server> необходимо указать ip-адрес сервера Graylog.

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

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

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

  • ELTEX_HUB - URL репозитория Элтекс;

  • SWLC_VERSION - версия образа;

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

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

  • LOGGING_SERVICE_LOG_LEVEL - уровень логгирования сервиса;

  • LOGGING_SERVICE_CONSOLE_LOG_LEVEL - уровень логгирования сервиса в консоль;

Настройка SORM3:

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

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

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

  • LOGGING_SERVICE_DB_URI - URI БД;

  • LOGGING_SERVICE_DB_USERNAME - имя пользователя для подключения к БД;
  • LOGGING_SERVICE_DB_PASSWORD - пароль для подключения к БД;
  • LOGGING_SERVICE_DB_POOL_SIZE - количество соединений с БД;

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

Настройка перенаправления логов на сервер Graylog

  • GELF_LEVEL - уровень логов, перенаправляемых в Graylog;

  • GELF_HOST - адрес хоста Graylog;

  • GELF_PORT - порт хоста Graylog.

Настройка часового пояса

  • TZ - часовой пояс в формате Asia/Novosibirsk (список существующих можно посмотреть командой timedatectl list-timezones).


Файлы .env и docker-compose.yml должны находиться в одной папке. Контейнер запускается командой:

docker-compose up -d
  • Нет меток