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

Описание


Сервис представляет собой интерфейс для взаимодействия компонентов платформы и внешними SMS-шлюзами, Call-центрами и серверами электронной почты. Служит для отправки уведомлений пользователям платформы, а также пользователям Wi-Fi.



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


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

apt-get install eltex-ngw

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

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

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

Active: active (running)

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

Active: failed

Запуск сервисаsystemctl start eltex-ngw

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

Active: active (running)

Остановка сервисаsystemctl stop eltex-ngw

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

Active: failed

Перезапуск сервисаsystemctl restart eltex-ngw

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

Active: active (running)

Создание пользователя базы данныхeltex-ngw create-db-user
Удаление базы данныхeltex-ngw remove-db

Если при установке пакета с помощью скрипта-инсталлятора переменная ANSWER_SOFTWLC_LOCAL имеет значение "1", то пользователь базы данных будет создан автоматически. При  установке пакета вручную необходимо создать пользователя командой:

eltex-ngw create-db-user

  

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


/etc/eltex-ngw/application.conf

Содержит основные настройки сервиса. Подробные инструкции по настройке различных методов авторизации находится в разделе "Инструкция по настройке и установке"→"Настройка авторизации".

/etc/eltex-ngw/application.conf
// Server configuration                               
server {
    port = 8040                                             # порт, который слушает сервис eltex-ngw
	// number of threads in executor that executes handlers and different gateways
    threads = 50
}

http {
    // Timeout of http connection to the end gateway
    connectionTimeout = 30s
    // Number of maximum simultaneous http connections
    maxConnections = 50
    // Time that connection will be kept alive
    keepAliveTimeout = 5s
    // Whether to check SSL certificate
    checkCert = true
    // HTTP User Agent
    userAgent = eltex-ngw

}

sms {
    // Incoming (user to service) sms config
    incoming.config = "smsc.conf"                           # выбор конфигурации шлюза для входящих сообщений (SMS от пользователя к шлюзу)
    // Outgoing (service to user) sms config
    outgoing.config = "smsc.conf"                           # выбор конфигурации для исходящих сообщений (SMS от шлюза к пользователю)

call {                                                      
    // Incoming (user to service) call config
    incoming.config = "sbc.conf"                            # выбор конфигурации шлюза для входящих звонков (звонок от пользователя)
    // Outgoing (service to user) call config
    outgoing.config = "smg.conf"                            # выбор конфигурации для исходящих звонков (звонок пользователю)

email {
    // Outgoing (service to user) email config
    outgoing.config = "email.conf"                          # выбор конфигурации для взаимодействия с сервером электронной почты (SMTP)

database {
    host = localhost                                        # адрес базы данных
    port = 3306                                             # порт
    name = eltex_ngw                                        # название базы данных
    user = javauser                                         # логин для доступа к бд
    password = javapassword                                 # пароль для доступа к бд

    pool {
        // Time to wait for a connection
        connectionTimeout = 10s
        // Time to wait for connection validation
        validationTimeout = 3s
        min = 1
        max = 10
   }
	
	migrate = true

    jdbc {
        driverClass = com.mysql.cj.jdbc.Driver
        url = "jdbc:mysql://${database.host}:${database.port}/${database.name}"

        properties {
          max_allowed_packet = 32362048
          useUnicode = true
          characterEncoding = utf8
		}
	}

                                                            # настройки планировщика заданий по очистке старых сообщений в базе данных
    // Configure the lifetime of different tables' content
    cleanup {                                              
        // incoming events
        events = 365d                                       # время хранения событий
        // sms
        messages = 365d                                     # время хранения sms
        // email
        emails = 365d                                       # время хранения электронных писем
        // files
        files = 7d                                          # время хранения файлов
        // limit deletions by this number (0 if no limit)
        limit_events = 1000                                 # лимит кол-ва удаляемых записей за одно выполнение из таблицы eltex_ngw.incoming_events
        limit_messages = 1000                               # лимит кол-ва удаляемых записей за одно выполнение из таблицы eltex_ngw.messages
        limit_emails = 1000                                 # лимит кол-ва удаляемых записей за одно выполнение из таблицы eltex_ngw.emails
        limit_files = 1000                                  # лимит кол-ва удаляемых записей за одно выполнение из таблицы eltex_ngw.files
        // cleanup schedule cron, e.g. "0 0 3 * * *"
        // set to "-" to disable
        cron = "0 0 3 * * *"                                # настройка планировщика для запуска очистки устаревших записей, значение по умолчанию "0 0 3 * * *" (каждый день в 3:00), для отключения указать "-" 
        // cron for optimize tables, cron-like expression, e.g. "0 0 4 5 * *"
        // set to "-" to disable
        cron_optimize = "0 0 4 5 * *"                       # настройка планировщика для запуска очистки таблиц БД от удаленных записей, значение по умолчанию "0 0 4 5 * *" (каждый 5-й день месяца в 4:00), для отключения указать "-"
    }
}

Удаление файлов из таблицы "eltex_ngw.file_chunks" происходит автоматически после удаления из таблицы eltex_ngw.files

/etc/eltex-ngw/gateway.d/

каталог содержит конфигурационные файлы для подключения к  различным шлюзам.

Для подключения к различным  шлюзам создан набор шаблонов конфигураций, которые находятся в каталоге /etc/eltex-ngw/gateway.d/. Зеленым цветом отмечены наиболее широко используемые конфигурации.

ФайлОписаниеНазначениеПримечание
email.confПочтовый серверДля отправки сообщений электронной почты по протоколу SMTP
gazprom.conf
SMSИндивидуальная интеграция
kaspib.confKaspi BankSMSИндивидуальная интеграция
netping.confGSM-шлюз NetPing SMSSMS
nskbl.conf
SMSИндивидуальная интеграция
psbank.conf
SMSИндивидуальная интеграция
rtk.confРостелекомSMSИндивидуальная интеграция
sbc.confИсходящий звонокДля авторизации по звонку от пользователя
script.conf
Отправка SMS с помощью скрипта
serial_port.confGSM-шлюз  Fargo maestro 100SMS
sevensky.confSeven SkySMS
skk.conf
skk_template.json
Шлюз СККSMSИндивидуальная интеграция
smg.confВходящий звонокДля авторизации по звонку к пользователю
smpp.confшлюз с поддержкой SMPPSMS
smsc.confSMS-центрSMS
zagruzka.confСвязной загрузкаSMS

Если среди предложенных шаблонов настроек шлюзов Вы не нашли подходящий - обратитесь в техподдержку для интеграции с Вашим шлюзом.

/etc/default/eltex-ngw

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

/etc/default/eltex-ngw
# Eltex Notification Gateway daemon parameters

# Initial size of Java heap
JAVA_INIT_HEAP=16m
# Maximum size of Java heap
JAVA_MAX_HEAP=128m

# Additional arguments to pass to java
JAVA_OPTS="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/eltex-ngw"

  • Количество памяти, выделяемое приложению при старте сервиса:
# Initial size of Java heap
JAVA_INIT_HEAP=16m
  • Максимальное количество памяти, которое может арендовать сервис:
# Maximum size of Java heap
JAVA_MAX_HEAP=128m
  • Дополнительные опции запуска java:
# Additional arguments to pass to java
JAVA_OPTS="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/eltex-ngw"

/etc/eltex-ngw/log4j2.xml

Содержит параметры логирования.

/etc/eltex-ngw/log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="600">
    <Properties>
        <Property name="baseDir">/var/log/eltex-ngw</Property>
        <Property name="maxFileSize">20 MB</Property>
        <Property name="accumulatedFileSize">100 GB</Property>
        <Property name="lastModified">4d</Property>
        <Property name="maxCount">10</Property>
        <Property name="logPattern">%d{ISO8601} [%t] %-5p %logger{12} %C{1}.%M(line:%L). %m%n</Property>

        <Property name="gelfLevel">OFF</Property>
        <Property name="gelfHost">udp:lab3-test.eltex.loc</Property>
        <Property name="gelfPort">12201</Property>
    </Properties>
    <Appenders>

        <RollingFile name="RollingFile" filename="${baseDir}/notification-gateway.log"
                     filepattern="${baseDir}/notification-gateway-%i.log.gz">
            <PatternLayout pattern="${logPattern}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="${maxFileSize}"/>
                <OnStartupTriggeringPolicy/>
            </Policies>
            <!-- Ограничение на кол-во файлов. для боевой реализации - не более 20 штук. -->
            <DefaultRolloverStrategy max="3">
                <Delete basePath="${baseDir}" maxDepth="1">
                    <IfFileName glob="notification-gateway-*.log.gz">
                        <IfLastModified age="${lastModified}"/>
                        <IfAny>
                            <IfAccumulatedFileSize exceeds="${accumulatedFileSize}"/>
                            <IfAccumulatedFileCount exceeds="${maxCount}"/>
                        </IfAny>
                    </IfFileName>
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>
        <Gelf name="Gelf" host="${gelfHost}" port="${gelfPort}" version="1.1" facility="notification-gateway"
              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="ERROR">
            <AppenderRef ref="RollingFile"/>
            <AppenderRef ref="Gelf" level="${gelfLevel}"/>
        </Root>
        <Logger name="org.eclipse.jetty" level="WARN"/>
        <Logger name="org.mongodb" level="ERROR"/>
        <Logger name="org.jsmpp" level="ERROR"/>
        <Logger name="org.springframework" level="ERROR"/>
        <logger name="jndi" level="OFF"/>

        <!--log4j configuration logger-->
        <Logger name="EventLogger" additivity="false" level="ERROR">
            <AppenderRef ref="console"/>
        </Logger>
    </Loggers>
</Configuration>

  • Интервал автоматического перечитывания конфигурации логгера:
<Configuration monitorInterval="600">
  • Базовая директория хранения логов:
<Property name="baseDir">/var/log/eltex-ngw</Property>
  • Максимально допустимый размер файла (при его превышении создается новый файл. а старый архивируется):
<Property name="maxFileSize">20 MB</Property>
  • Суммарный размер логов (текущий файл + архивные). При его превышении наиболее старые файлы будут удаляться:
<Property name="accumulatedFileSize">100 GB</Property>
  • Срок хранения логов, файлы модифицированные раннее этого срока будут удаляться:
<Property name="lastModified">4d</Property>
  • Максимальное количество архивных файлов, при его превышении наиболее старые файлы будут перезаписываться:
<Property name="maxCount">10</Property>
  • Блок настройки перенаправления логов в Graylog (уровень логирования, адрес, порт):
<Property name="gelfLevel">OFF</Property>
<Property name="gelfHost">udp:localhost</Property>
<Property name="gelfPort">12201</Property>
  • Уровень логирования:
<Root level="ERROR">

Замечания по настройке взаимодействия с почтовым сервером

NGW обеспечивает взаимодействие с почтовым сервером по протоколу SMTP и используется для отправки уведомлений и отчетов на email. Для корректной работы требуется включить и настроить взаимодействие с почтовым сервером.

В файле /etc/eltex-ngw/application.conf, в разделе email указывается файл настроек взаимодействия с почтовым сервером:

 /etc/eltex-ngw/application.conf
email {
    // Outgoing (service to user) email config
    outgoing.config = "email.conf"                          # выбор конфигурации для электронной почты

}

Для настройки взаимодействия с почтовым сервером используется файл /etc/eltex-ngw/gateway.d/email.conf:

 /etc/eltex-ngw/gateway.d/email.conf
connection {
  login = "example@example.com"      # Логин
  password = ""                      # Пароль
  senderPrefix = ""                  # Префикс адреса отправителя
  host = example.com                 # Адрес почтового сервера
  port = 587                         # Порт почтового сервера (по умолчанию для нешифрованного соединения 25, для шифрованного 587)
  sendpartial = true
  starttls = false                   # Использовать шифрование: false - "Нет", true - "Да"
  tlsVersion = "TLSv1.2"             # Протокол шифрования
  timeout = 5s
  pool {
    min = 1
    max = 20
    waitTimeout = 10s
  }
}

Важно!

Возможность указать версию протокола шифрования "tlsVersion" реализована с версии 1.21 SoftWLC.

Для возможности использования "TLSv1.0" или "TLSv1.1" требуется установить Java 8 версии 291 или ранее.

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

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

docker-compose.yml
version: "3"

volumes:
  softwlc_logs:
    driver: local
services:
  ngw:
    container_name: ngw
    image: hub.eltex-co.ru/softwlc/eltex-ngw:1.23-<tag>
    ports:
      - 8040:${NGW_PORT}
      # - 1814:1814/udp # For smg.conf if needed
      # - 8041:8041/udp # For sbc.conf if needed
    volumes:
      - "/etc/eltex-ngw/gateway.d:/etc/eltex-ngw/gateway.d"
      - "/etc/timezone:/etc/timezone:ro"
    environment:
      - server.port=${NGW_PORT}
      - JAVA_INIT_HEAP=${JAVA_INIT_HEAP}
      - JAVA_MAX_HEAP=${JAVA_MAX_HEAP}
      - sms.incoming.config=${NGW_SMS_INCOMING_CONF}
      - sms.outgoing.config=${NGW_SMS_OUTGOING_CONF}
      - call.incoming.config=${NGW_CALL_INCOMING_CONF}
      - call.outgoing.config=${NGW_CALL_OUTGOING_CONF}
      - email.outgoing.config=${NGW_EMAIL_OUTGOING_CONF}
      - database.host=${NGW_DB_HOST}
      - database.port=${NGW_DB_PORT}
      - database.name=${NGW_DB_NAME}
      - database.user=${NGW_DB_USER}
      - database.password=${NGW_DB_PASSWORD}
      - database.pool.connectionTimeout=${NGW_DB_POOL_CONNECTION_TIMEOUT}
      - database.pool.min=${NGW_DB_POOL_MIN_IDLE}
      - database.pool.max=${NGW_DB_POOL_SIZE}
      - database.cleanup.events=${NGW_DB_CLEANUP_EVENTS}
      - database.cleanup.messages=${NGW_DB_CLEANUP_MESSAGES}
      - database.cleanup.emails=${NGW_DB_CLEANUP_EMAILS}
      - database.cleanup.files=${NGW_DB_CLEANUP_FILES}
      - database.cleanup.limit_events=${NGW_DB_CLEANUP_LIMIT_EVENTS}
      - database.cleanup.limit_messages=${NGW_DB_CLEANUP_LIMIT_MESSAGES}
      - database.cleanup.limit_emails=${NGW_DB_CLEANUP_LIMIT_EMAILS}
      - database.cleanup.limit_files=${NGW_DB_CLEANUP_LIMIT_FILES}
      - database.cleanup.cron=${NGW_DB_CLEANUP_CRON}
      - database.cleanup.cron_optimize=${NGW_DB_CLEANUP_CRON_OPTIMIZE}
      - NGW_LOG_LEVEL=${NGW_LOG_LEVEL}
      - NGW_CONSOLE_LEVEL=${NGW_CONSOLE_LEVEL}
      - GELF_LEVEL=${GELF_LEVEL}
      - GELF_HOST=${GELF_HOST}
      - GELF_PORT=${GELF_PORT}
Вместо <tag> необходимо указать актуальную версию, которую можно посмотреть по ссылке.

На данный момент нельзя конфигурировать настройки шлюзов, находящихся в папке "/etc/eltex-ngw/gateway.d", через переменные окружения. Для применения необходимых настроек нужно сделать маппинг конфигурационных файлов ранее установленной deb-версии.

Некоторые параметры можно сконфигурировать через переменные окружения представленные ниже. Для этого необходимо создать файл .env и разместить его рядом с docker-compose.yml, указав в последнем необходимые переменные. В блоке "environment" необходимо указывать названия переменных в соответствии с названием переменных в конфигурационных файлах. В случае, если переменные не будут заданы или названия переменных будут заданы некорректно, то применяться значения по умолчанию.

.env
NGW_PORT=8040

NGW_SMS_INCOMING_CONF=
NGW_SMS_OUTGOING_CONF=smsc.conf

NGW_CALL_INCOMING_CONF=
NGW_CALL_OUTGOING_CONF=

NGW_EMAIL_OUTGOING_CONF=

NGW_DB_HOST=<IP-address>
NGW_DB_PORT=3306
NGW_DB_NAME=eltex_ngw
NGW_DB_USER=javauser
NGW_DB_PASSWORD=javapassword

NGW_DB_POOL_CONNECTION_TIMEOUT=10s
NGW_DB_POOL_MIN_IDLE=1
NGW_DB_POOL_SIZE=10

NGW_DB_CLEANUP_EVENTS=365d
NGW_DB_CLEANUP_MESSAGES=365d
NGW_DB_CLEANUP_EMAILS=365d
NGW_DB_CLEANUP_FILES=7d
NGW_DB_CLEANUP_LIMIT_EVENTS=1000
NGW_DB_CLEANUP_LIMIT_MESSAGES=1000
NGW_DB_CLEANUP_LIMIT_EMAILS=1000
NGW_DB_CLEANUP_LIMIT_FILES=1000
# Don't clean up
#NGW_DB_CLEANUP_CRON=-
# 3 am each day
NGW_DB_CLEANUP_CRON="0 0 3 * * *"
# Don't optimize tables
#NGW_DB_CLEANUP_CRON_OPTIMIZE=-
# 4 am 5th day each month
NGW_DB_CLEANUP_CRON_OPTIMIZE="0 0 4 5 * *"

NGW_LOG_LEVEL=INFO
NGW_CONSOLE_LEVEL=INFO

GELF_LEVEL=OFF
GELF_HOST=udp:localhost
GELF_PORT=12201

Возможные переменные окружения

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

  • NGW_PORT - Grpc порт, который будет слушать сервис.
  • JAVA_INIT_HEAP - Xms JVM опция.
  • JAVA_MAX_HEAP - Xmx JVM опция.
  • JAVA_OPTS - JVM опции (может переопределить все остальные параметры по умолчанию).

Настройки SMS

  • NGW_SMS_INCOMING_CONF - конфигурационный файл для идентификации пользователя по входящему SMS (от пользователя).
  • NGW_SMS_OUTGOING_CONF - конфигурационный файл для идентификации пользователя по исходящему SMS (пользователю).
  • sms.pool.waitTimeout - таймаут получения соединения из пула.
  • sms.pool.min - минимальное число idle соединений.
  • sms.pool.max - размер пула соединений.

Настройки звонков

  • NGW_CALL_INCOMING_CONF - конфигурационный файл для идентификации пользователя по входящему звонку (от пользователя).
  • NGW_CALL_OUTGOING_CONF - конфигурационный файл для идентификации пользователя по исходящему звонку (пользователю).
  • call.pool.waitTimeout - таймаут получения соединения из пула.
  • call.pool.min - минимальное число idle соединений.
  • call.pool.max - размер пула соединений.

Настройки email

  • NGW_EMAIL_OUTGOING_CONF - конфигурационный файл для исходящей почты.
  • email.pool.waitTimeout - таймаут получения соединения из пула.
  • email.pool.min - минимальное число idle соединений.
  • email.pool.max - размер пула соединений.

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

  • NGW_DB_HOST - хост подключения к БД.
  • NGW_DB_PORT - порт подключения к БД.
  • NGW_DB_NAME - имя БД.
  • NGW_DB_USER - имя пользователя БД.
  • NGW_DB_PASSWORD - пароль пользователя БД.
  • NGW_DB_POOL_CONNECTION_TIMEOUT - таймаут получения соединения из пула.
  • NGW_DB_POOL_MIN_IDLE - минимальное число idle соединений.
  • NGW_DB_POOL_SIZE - размер пула соединений с БД.
  • NGW_DB_CLEANUP_EVENTS - время жизни событий в БД.
  • NGW_DB_CLEANUP_MESSAGES - время жизни сообщений в БД.
  • NGW_DB_CLEANUP_EMAILS - время жизни email в БД.
  • NGW_DB_CLEANUP_FILES - время жизни файлов, отправленных по email, в БД.
  • NGW_DB_CLEANUP_LIMIT_EVENTS - лимит удалений из таблицы событий за раз.

  • NGW_DB_CLEANUP_LIMIT_MESSAGES - лимит удалений из таблицы сообщений за раз.

  • NGW_DB_CLEANUP_LIMIT_EMAILS - лимит удалений из таблицы emails за раз.

  • NGW_DB_CLEANUP_LIMIT_FILES - лимит удалений из таблицы файлов за раз.

  • NGW_DB_CLEANUP_CRON - расписание очистки cron.

  • NGW_DB_CLEANUP_CRON_OPTIMIZE - расписание оптимизации таблиц cron.

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

  • NGW_LOG_LEVEL - уровень логов при отправке на сервер, указанный в настройке "GELF_HOST"
  • NGW_CONSOLE_LEVEL - уровень логов в консоли docker
  • GELF_LEVEL - выключить/включить отправку логов на сервер
  • GELF_HOST - адрес сервера для отправки логов
  • GELF_PORT - порт сервера для отправки логов


Дополнительные параметры конфигурации для авторизации по входящему звонку (от пользователя)

Указать в файле ".env" используемый файл конфигурации:

NGW_CALL_INCOMING_CONF=sbc.conf

Указать маппинг порта, который указан в параметре файла sbc.conf:

connection {
  port = 8041

в файле docker-compose.yml:

    ports:
      - 8040:${NGW_PORT}
      - 8041:8041/udp # For sbc.conf if needed

Дополнительные параметры конфигурации для авторизации по исходящему звонку (пользователю)

Указать в файле ".env" используемый файл конфигурации:

NGW_CALL_OUTGOING_CONF=smg.conf

Указать маппинг порта, который указан в параметре раздела smg.conf:

listen {
  port = 1814

в файле docker-compose.yml:

    ports:
      - 8040:${NGW_PORT}
      - 1814:1814/udp # For smg.conf if needed

Метрики сервиса

Метрики сервиса доступны по адресу:

http://<IP-адрес сервиса>:8040/actuator/prometheus
Пример вывода метрик
# HELP process_files_max_files The maximum file descriptor count
# TYPE process_files_max_files gauge
process_files_max_files{application="NGW",} 1048576.0
# HELP ngw_outgoing_mail_send_with_attachment_count_total  
# TYPE ngw_outgoing_mail_send_with_attachment_count_total counter
ngw_outgoing_mail_send_with_attachment_count_total{application="NGW",status="failure",} 0.0
ngw_outgoing_mail_send_with_attachment_count_total{application="NGW",status="success",} 0.0
# HELP hikaricp_connections Total connections
# TYPE hikaricp_connections gauge
hikaricp_connections{application="NGW",pool="HikariPool-1",} 1.0
# HELP hikaricp_connections_max Max connections
# TYPE hikaricp_connections_max gauge
hikaricp_connections_max{application="NGW",pool="HikariPool-1",} 10.0
# HELP ngw_incoming_event_process_event_count_total  
# TYPE ngw_incoming_event_process_event_count_total counter
ngw_incoming_event_process_event_count_total{application="NGW",isRequested="false",type="SMS",} 0.0
ngw_incoming_event_process_event_count_total{application="NGW",isRequested="true",type="CALL_COMPLETION",} 0.0
ngw_incoming_event_process_event_count_total{application="NGW",isRequested="true",type="CALL",} 0.0
ngw_incoming_event_process_event_count_total{application="NGW",isRequested="false",type="CALL",} 0.0
ngw_incoming_event_process_event_count_total{application="NGW",isRequested="false",type="CALL_COMPLETION",} 0.0
ngw_incoming_event_process_event_count_total{application="NGW",isRequested="true",type="SMS",} 0.0
# HELP ngw_smg_radius_send_count_total  
# TYPE ngw_smg_radius_send_count_total counter
ngw_smg_radius_send_count_total{application="NGW",result="Unexpected packet",} 0.0
ngw_smg_radius_send_count_total{application="NGW",result="ACK",} 0.0
ngw_smg_radius_send_count_total{application="NGW",result="ANAK",} 0.0
ngw_smg_radius_send_count_total{application="NGW",result="Unknown",} 0.0
# HELP process_uptime_seconds The uptime of the Java virtual machine
# TYPE process_uptime_seconds gauge
process_uptime_seconds{application="NGW",} 8174.18
# HELP jvm_gc_memory_allocated_bytes_total Incremented for an increase in the size of the young generation memory pool after one GC to before the next
# TYPE jvm_gc_memory_allocated_bytes_total counter
jvm_gc_memory_allocated_bytes_total{application="NGW",} 4.5322938E9
# HELP ngw_sbc_radius_processed_count_total  
# TYPE ngw_sbc_radius_processed_count_total counter
ngw_sbc_radius_processed_count_total{application="NGW",status="failure",} 0.0
ngw_sbc_radius_processed_count_total{application="NGW",status="success",} 0.0
# HELP hikaricp_connections_creation_seconds_max Connection creation time
# TYPE hikaricp_connections_creation_seconds_max gauge
hikaricp_connections_creation_seconds_max{application="NGW",pool="HikariPool-1",} 0.0
# HELP hikaricp_connections_creation_seconds Connection creation time
# TYPE hikaricp_connections_creation_seconds summary
hikaricp_connections_creation_seconds_count{application="NGW",pool="HikariPool-1",} 5.0
hikaricp_connections_creation_seconds_sum{application="NGW",pool="HikariPool-1",} 0.193
# HELP jetty_threads_busy The number of busy threads in the pool
# TYPE jetty_threads_busy gauge
jetty_threads_busy{application="NGW",} 3.0
# HELP ngw_outgoing_mail_send_count_total  
# TYPE ngw_outgoing_mail_send_count_total counter
ngw_outgoing_mail_send_count_total{application="NGW",status="failure",} 0.0
ngw_outgoing_mail_send_count_total{application="NGW",status="success",} 0.0
# HELP jvm_memory_committed_bytes The amount of memory in bytes that is committed for the Java virtual machine to use
# TYPE jvm_memory_committed_bytes gauge
jvm_memory_committed_bytes{application="NGW",area="heap",id="PS Survivor Space",} 524288.0
jvm_memory_committed_bytes{application="NGW",area="nonheap",id="Compressed Class Space",} 1.277952E7
jvm_memory_committed_bytes{application="NGW",area="nonheap",id="Code Cache",} 2.4707072E7
jvm_memory_committed_bytes{application="NGW",area="nonheap",id="Metaspace",} 8.6441984E7
jvm_memory_committed_bytes{application="NGW",area="heap",id="PS Old Gen",} 3.407872E7
jvm_memory_committed_bytes{application="NGW",area="heap",id="PS Eden Space",} 1.6777216E7
# HELP jvm_gc_memory_promoted_bytes_total Count of positive increases in the size of the old generation memory pool before GC to after GC
# TYPE jvm_gc_memory_promoted_bytes_total counter
jvm_gc_memory_promoted_bytes_total{application="NGW",} 2.0756888E7
# HELP ngw_smg_radius_receive_count_total  
# TYPE ngw_smg_radius_receive_count_total counter
ngw_smg_radius_receive_count_total{application="NGW",result="Malformed packet",} 0.0
ngw_smg_radius_receive_count_total{application="NGW",result="Incorrect authenticator",} 0.0
ngw_smg_radius_receive_count_total{application="NGW",result="Missing phone number",} 0.0
ngw_smg_radius_receive_count_total{application="NGW",result="Success",} 0.0
ngw_smg_radius_receive_count_total{application="NGW",result="Unexpected packet",} 0.0
ngw_smg_radius_receive_count_total{application="NGW",result="Not accounting stop",} 0.0
ngw_smg_radius_receive_count_total{application="NGW",result="Datagram receive failure",} 0.0
# HELP jvm_classes_unloaded_classes_total The total number of classes unloaded since the Java virtual machine has started execution
# TYPE jvm_classes_unloaded_classes_total counter
jvm_classes_unloaded_classes_total{application="NGW",} 0.0
# HELP hikaricp_connections_min Min connections
# TYPE hikaricp_connections_min gauge
hikaricp_connections_min{application="NGW",pool="HikariPool-1",} 1.0
# HELP ngw_incoming_event_process_request_count_total  
# TYPE ngw_incoming_event_process_request_count_total counter
ngw_incoming_event_process_request_count_total{application="NGW",hasSubscription="false",type="SMS",} 0.0
ngw_incoming_event_process_request_count_total{application="NGW",hasSubscription="true",type="CALL_COMPLETION",} 0.0
ngw_incoming_event_process_request_count_total{application="NGW",hasSubscription="true",type="CALL",} 0.0
ngw_incoming_event_process_request_count_total{application="NGW",hasSubscription="false",type="CALL",} 0.0
ngw_incoming_event_process_request_count_total{application="NGW",hasSubscription="false",type="CALL_COMPLETION",} 0.0
ngw_incoming_event_process_request_count_total{application="NGW",hasSubscription="true",type="SMS",} 0.0
# HELP hikaricp_connections_acquire_seconds Connection acquire time
# TYPE hikaricp_connections_acquire_seconds summary
hikaricp_connections_acquire_seconds_count{application="NGW",pool="HikariPool-1",} 5.0
hikaricp_connections_acquire_seconds_sum{application="NGW",pool="HikariPool-1",} 0.015965716
# HELP hikaricp_connections_acquire_seconds_max Connection acquire time
# TYPE hikaricp_connections_acquire_seconds_max gauge
hikaricp_connections_acquire_seconds_max{application="NGW",pool="HikariPool-1",} 0.0
# HELP jvm_gc_max_data_size_bytes Max size of old generation memory pool
# TYPE jvm_gc_max_data_size_bytes gauge
jvm_gc_max_data_size_bytes{application="NGW",} 8.9653248E7
# HELP jvm_threads_daemon_threads The current number of live daemon threads
# TYPE jvm_threads_daemon_threads gauge
jvm_threads_daemon_threads{application="NGW",} 7.0
# HELP jetty_threads_config_min The minimum number of threads in the pool
# TYPE jetty_threads_config_min gauge
jetty_threads_config_min{application="NGW",} 8.0
# HELP system_cpu_count The number of processors available to the Java virtual machine
# TYPE system_cpu_count gauge
system_cpu_count{application="NGW",} 2.0
# HELP jvm_threads_live_threads The current number of live threads including both daemon and non-daemon threads
# TYPE jvm_threads_live_threads gauge
jvm_threads_live_threads{application="NGW",} 27.0
# HELP hikaricp_connections_idle Idle connections
# TYPE hikaricp_connections_idle gauge
hikaricp_connections_idle{application="NGW",pool="HikariPool-1",} 1.0
# HELP ngw_outgoing_sms_request_count_total  
# TYPE ngw_outgoing_sms_request_count_total counter
ngw_outgoing_sms_request_count_total{application="NGW",type="portal_code",} 1.0
# HELP hikaricp_connections_active Active connections
# TYPE hikaricp_connections_active gauge
hikaricp_connections_active{application="NGW",pool="HikariPool-1",} 0.0
# HELP process_files_open_files The open file descriptor count
# TYPE process_files_open_files gauge
process_files_open_files{application="NGW",} 146.0
# HELP ngw_api_session_error_count_total  
# TYPE ngw_api_session_error_count_total counter
ngw_api_session_error_count_total{application="NGW",status="ERROR_FROM_SMS_SERVICE",} 1.0
ngw_api_session_error_count_total{application="NGW",status="FAILED",} 3.0
# HELP ngw_api_session_response_count_total  
# TYPE ngw_api_session_response_count_total counter
ngw_api_session_response_count_total{application="NGW",} 3.0
# HELP jvm_memory_max_bytes The maximum amount of memory in bytes that can be used for memory management
# TYPE jvm_memory_max_bytes gauge
jvm_memory_max_bytes{application="NGW",area="heap",id="PS Survivor Space",} 524288.0
jvm_memory_max_bytes{application="NGW",area="nonheap",id="Compressed Class Space",} 1.073741824E9
jvm_memory_max_bytes{application="NGW",area="nonheap",id="Code Cache",} 2.5165824E8
jvm_memory_max_bytes{application="NGW",area="nonheap",id="Metaspace",} -1.0
jvm_memory_max_bytes{application="NGW",area="heap",id="PS Old Gen",} 8.9653248E7
jvm_memory_max_bytes{application="NGW",area="heap",id="PS Eden Space",} 4.3515904E7
# HELP jetty_threads_idle The number of idle threads in the pool
# TYPE jetty_threads_idle gauge
jetty_threads_idle{application="NGW",} 4.0
# HELP jvm_gc_live_data_size_bytes Size of old generation memory pool after a full GC
# TYPE jvm_gc_live_data_size_bytes gauge
jvm_gc_live_data_size_bytes{application="NGW",} 1.9670976E7
# HELP jvm_threads_peak_threads The peak live thread count since the Java virtual machine started or peak was reset
# TYPE jvm_threads_peak_threads gauge
jvm_threads_peak_threads{application="NGW",} 29.0
# HELP jetty_threads_current The total number of threads in the pool
# TYPE jetty_threads_current gauge
jetty_threads_current{application="NGW",} 8.0
# HELP ngw_outgoing_sms_response_count_total  
# TYPE ngw_outgoing_sms_response_count_total counter
ngw_outgoing_sms_response_count_total{application="NGW",status="ERROR_FROM_SMS_SERVICE",} 1.0
# HELP system_load_average_1m The sum of the number of runnable entities queued to available processors and the number of runnable entities running on the available processors averaged over a period of time
# TYPE system_load_average_1m gauge
system_load_average_1m{application="NGW",} 0.1572265625
# HELP jvm_gc_pause_seconds Time spent in GC pause
# TYPE jvm_gc_pause_seconds summary
jvm_gc_pause_seconds_count{action="end of major GC",application="NGW",cause="Ergonomics",} 2.0
jvm_gc_pause_seconds_sum{action="end of major GC",application="NGW",cause="Ergonomics",} 0.172
jvm_gc_pause_seconds_count{action="end of minor GC",application="NGW",cause="Allocation Failure",} 239.0
jvm_gc_pause_seconds_sum{action="end of minor GC",application="NGW",cause="Allocation Failure",} 1.32
# HELP jvm_gc_pause_seconds_max Time spent in GC pause
# TYPE jvm_gc_pause_seconds_max gauge
jvm_gc_pause_seconds_max{action="end of major GC",application="NGW",cause="Ergonomics",} 0.0
jvm_gc_pause_seconds_max{action="end of minor GC",application="NGW",cause="Allocation Failure",} 0.009
# HELP process_cpu_usage The "recent cpu usage" for the Java Virtual Machine process
# TYPE process_cpu_usage gauge
process_cpu_usage{application="NGW",} 0.07547169811320754
# HELP jetty_threads_config_max The maximum number of threads in the pool
# TYPE jetty_threads_config_max gauge
jetty_threads_config_max{application="NGW",} 200.0
# HELP hikaricp_connections_usage_seconds Connection usage time
# TYPE hikaricp_connections_usage_seconds summary
hikaricp_connections_usage_seconds_count{application="NGW",pool="HikariPool-1",} 5.0
hikaricp_connections_usage_seconds_sum{application="NGW",pool="HikariPool-1",} 1.349
# HELP hikaricp_connections_usage_seconds_max Connection usage time
# TYPE hikaricp_connections_usage_seconds_max gauge
hikaricp_connections_usage_seconds_max{application="NGW",pool="HikariPool-1",} 0.0
# HELP jvm_buffer_memory_used_bytes An estimate of the memory that the Java virtual machine is using for this buffer pool
# TYPE jvm_buffer_memory_used_bytes gauge
jvm_buffer_memory_used_bytes{application="NGW",id="mapped",} 0.0
jvm_buffer_memory_used_bytes{application="NGW",id="direct",} 95232.0
# HELP jvm_memory_used_bytes The amount of used memory
# TYPE jvm_memory_used_bytes gauge
jvm_memory_used_bytes{application="NGW",area="heap",id="PS Survivor Space",} 65536.0
jvm_memory_used_bytes{application="NGW",area="nonheap",id="Compressed Class Space",} 1.2146144E7
jvm_memory_used_bytes{application="NGW",area="nonheap",id="Code Cache",} 2.4364096E7
jvm_memory_used_bytes{application="NGW",area="nonheap",id="Metaspace",} 8.333776E7
jvm_memory_used_bytes{application="NGW",area="heap",id="PS Old Gen",} 3.0796768E7
jvm_memory_used_bytes{application="NGW",area="heap",id="PS Eden Space",} 3915728.0
# HELP jvm_buffer_total_capacity_bytes An estimate of the total capacity of the buffers in this pool
# TYPE jvm_buffer_total_capacity_bytes gauge
jvm_buffer_total_capacity_bytes{application="NGW",id="mapped",} 0.0
jvm_buffer_total_capacity_bytes{application="NGW",id="direct",} 95232.0
# HELP hikaricp_connections_pending Pending threads
# TYPE hikaricp_connections_pending gauge
hikaricp_connections_pending{application="NGW",pool="HikariPool-1",} 0.0
# HELP process_start_time_seconds Start time of the process since unix epoch.
# TYPE process_start_time_seconds gauge
process_start_time_seconds{application="NGW",} 1.655705687529E9
# HELP hikaricp_connections_timeout_total Connection timeout total count
# TYPE hikaricp_connections_timeout_total counter
hikaricp_connections_timeout_total{application="NGW",pool="HikariPool-1",} 0.0
# HELP jvm_classes_loaded_classes The number of classes that are currently loaded in the Java virtual machine
# TYPE jvm_classes_loaded_classes gauge
jvm_classes_loaded_classes{application="NGW",} 17347.0
# HELP system_cpu_usage The "recent cpu usage" for the whole system
# TYPE system_cpu_usage gauge
system_cpu_usage{application="NGW",} 0.11320754716981132
# HELP log4j2_events_total Number of fatal level log events
# TYPE log4j2_events_total counter
log4j2_events_total{application="NGW",level="error",} 4.0
log4j2_events_total{application="NGW",level="debug",} 213885.0
log4j2_events_total{application="NGW",level="info",} 43.0
log4j2_events_total{application="NGW",level="trace",} 0.0
log4j2_events_total{application="NGW",level="warn",} 1.0
log4j2_events_total{application="NGW",level="fatal",} 0.0
# HELP jvm_buffer_count_buffers An estimate of the number of buffers in the pool
# TYPE jvm_buffer_count_buffers gauge
jvm_buffer_count_buffers{application="NGW",id="mapped",} 0.0
jvm_buffer_count_buffers{application="NGW",id="direct",} 10.0
# HELP ngw_skk_sms_sent_total  
# TYPE ngw_skk_sms_sent_total counter
ngw_skk_sms_sent_total{application="NGW",} 0.0
# HELP jetty_threads_jobs Number of jobs queued waiting for a thread
# TYPE jetty_threads_jobs gauge
jetty_threads_jobs{application="NGW",} 0.0
# HELP http_server_requests_seconds  
# TYPE http_server_requests_seconds summary
http_server_requests_seconds_count{application="NGW",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/actuator/prometheus",} 1635.0
http_server_requests_seconds_sum{application="NGW",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/actuator/prometheus",} 33.628297776
http_server_requests_seconds_count{application="NGW",exception="None",method="GET",outcome="INFORMATIONAL",status="101",uri="/notif_gw",} 3.0
http_server_requests_seconds_sum{application="NGW",exception="None",method="GET",outcome="INFORMATIONAL",status="101",uri="/notif_gw",} 0.040395076
# HELP http_server_requests_seconds_max  
# TYPE http_server_requests_seconds_max gauge
http_server_requests_seconds_max{application="NGW",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/actuator/prometheus",} 0.030345774
http_server_requests_seconds_max{application="NGW",exception="None",method="GET",outcome="INFORMATIONAL",status="101",uri="/notif_gw",} 0.0
# HELP jvm_threads_states_threads The current number of threads having NEW state
# TYPE jvm_threads_states_threads gauge
jvm_threads_states_threads{application="NGW",state="blocked",} 0.0
jvm_threads_states_threads{application="NGW",state="runnable",} 8.0
jvm_threads_states_threads{application="NGW",state="new",} 0.0
jvm_threads_states_threads{application="NGW",state="terminated",} 0.0
jvm_threads_states_threads{application="NGW",state="timed-waiting",} 10.0
jvm_threads_states_threads{application="NGW",state="waiting",} 9.0

Пример настройки подключения Prometheus:

scrape_configs:
  - job_name: 'NGW'
    metrics_path: '/actuator/prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['100.123.0.7:8040']
  • Нет меток