В состав SoftWLC включен WEB-портал, с помощью которого реализуется модель авторизации hotspot-клиентов. Неизвестный системе пользователь может свободно (без получения заранее логина и пароля) подключиться к точке доступа, но при попытке выйти в интернет через браузер пользователь перенаправляется на страницу WEB-портала, на которой может по выбору пройти процедуру авторизации или получения авторизационных данных (например, с помощью SMS). В процессе выполнения процедур авторизации абонент может наблюдать рекламные сообщения в виде баннеров, кастомизированных в соответствии с требованиями оператора.
Для кастомизации WEB-портала в SoftWLC включен Конструктор Порталов, с помощью которого пользователи могут настраивать сценарии работы и внешний вид порталов, используемых при Hotspot-авторизации. Пользователи Конструктора могут создавать и удалять порталы, выбирать их фон и содержание (текст, изображения), устанавливать различные режимы и сценарии авторизации для каждого из порталов. Сам по себе Конструктор не выполняет никаких действий в цепочке предоставления услуги абонентом. Это инструмент, служащий исключительно для настройки.
GUI Конструктора Порталов доступен по следующему URL: http://<IP-адрес Конструктора>:8080/epadmin
Логин и пароль авторизации для доступа к настройкам портала указываются при установке инсталляционного пакета портала в системе. Управлениями учетными записями и правами доступа возможно в системе «Личный кабинет Wi-Fi».
В Конструкторе порталов существует возможность настройки работы Портала, как с точками доступа Элтекс, так и c BRAS (ESR-1000), который используется для подключения к платформе точек доступа сторонних производителей. В случае работы с BRAS в Конструкторе порталов дополнительно необходима настройка в разделах "Взаимодействие с BRAS" и "Доступ к PCRF".
Установка производится с помощью пакета eltex-portal-constructor.
apt-get install eltex-portal-constructor |
| Действие | Команда | Ответ | ||
|---|---|---|---|---|
| Проверка состояния | service eltex-portal-constructor status | Сервис запущен
Cервис не запущен
| ||
| Запуск сервиса | service eltex-portal-constructor start | Сервис успешно запущен
| ||
| Остановка сервиса | service eltex-portal-constructor stop | Сервис успешно остановлен
| ||
| Перезапуск сервиса | service eltex-portal-constructor restart | Сервис успешно перезапущен
|
Основной конфигурационный файл. Пример дефолтной конфигурации:
login {
# Количество попыток входа в панель администратора до наступления блокировки
maxAttemptsLogin = 3
maxAttemptsIP = 5
# Количество минут блокировки после достижения максимального числа попыток входа в панель администратора
blockTime = 5m
}
database {
host = localhost
port = 3306
name = ELTEX_PORTAL
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
}
cache {
# Limit of cached simple entries count (for each query type)
maxEntries = 1000
# Limit of total cached portal resources size
maxResourceBytes = 32m
# Maximum time to retain items in the cache
expireTime = 30s
}
jdbc {
properties {
useSSL = false
}
}
}
sso {
enabled = false
# enable or disable local login
localLoginAllowed = true
# rtk, keycloak
provider = rtk
# Must be in double quotes. Only for 'rtk' provider
version = "1.0"
rest {
scheme = http
host = localhost
port = 80
sso_api_path = /apiman-gateway/b2b_test
}
auth {
scheme = http
host = localhost
port = 80
authentication_path = /auth/realms/b2b/protocol/openid-connect/auth
logout_path = /auth/realms/b2b/protocol/openid-connect/logout
}
params {
client_id = id
# URL of epadmin, URL must be in double quotes (!!!)
redirect_uri = "http://localhost:8080/epadmin/sso"
client_secret = secret
}
}
jetty {
http.port = 9001
https {
port = 9444
keystorePass = 12345
keystoreFile = /etc/eltex-portal-constructor/localhost.pfx
keystoreType = PKCS12
keyAlias = 1
ciphers = [
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA
]
}
multipart {
maxFileSize = 100MB
maxRequestSize = 100MB
}
}
validation {
public_key = /etc/eltex-doors/keys/public.pem
}
logging {
host = localhost
port = 9099
} |
| Параметры | Описание |
|---|---|
| login - настройки защиты от подбора паролей | |
maxAttemptsLogin | Количество попыток авторизации под одним и тем же логином, после которого будет включена капча. |
maxAttemptsIP | Количество попыток авторизации с одного IP-адреса, при превышении попытки авторизации с этого адреса будут блокироваться. |
blockTime | Время блокировки IP-адреса. |
| database - настройки работы с БД | |
| host | Адрес сервера БД. |
| port | Порт, на который сервер БД принимает входящее подключение. |
| name | Название БД. |
| user | Имя пользователя БД. |
| password | Пароль пользователя БД. |
| pool | Управление соединениями к БД. connectionTimeout - время жизни коннекта при бездействии. validationTimeout - интервал проверки бездействующих коннектов. min - минимальное количество коннектов. max - максимальное количество коннектов. |
| cache | Настройки кэширования. maxEntries - максимальное количество элементов в кэше. maxResourceBytes - размер кэша. expireTime - время хранения данных в кэше. |
| jdbc | Дополнительные настройки подключения к БД useSSL - включить/выключить SSL. |
| sso | Блок настроек взаимодействия с SSO. enable - включение/выключение взаимодействия. rest - блок настроек хоста и путей методов rest-сервера. auth - блок настроек хоста и путей методов auth-сервера. params - блок настроек идентификационной информации для SSO. |
| jetty | Блок настроек взаимодействия с jetty. |
| validation | Блок настроек валидации токенов для взаимодействия с другими сервисами SWLC. public_key - путь до публичного ключа. |
| logging | Блок настроек для доступа к eltex-logging-service host - адрес сервиса eltex-logging-service port - порт, на котором запущен eltex-logging-service |
Файл настроек логирования.
<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="10">
<Properties>
<Property name="rootLevel">${env:LOG_LEVEL:-ERROR}</Property>
<Property name="baseDir">/var/log/eltex-portal-constructor</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="STDERR" target="System.err">
<PatternLayout pattern="${logPattern}"/>
</Console>
<RollingFile name="RollingFile"
fileName="${baseDir}/portal-constructor.log"
filePattern="${baseDir}/log/portal-constructor-%i.log.gz">
<PatternLayout pattern="${logPattern}"/>
<Policies>
<SizeBasedTriggeringPolicy size="${maxFileSize}"/>
<OnStartupTriggeringPolicy />
</Policies>
<DefaultRolloverStrategy max="${maxCount}">
<Delete basePath="${baseDir}" maxDepth="3">
<IfFileName glob="*/portal-constructor-*.log.gz">
<IfAny>
<IfAccumulatedFileSize exceeds="${accumulatedFileSize}"/>
<IfLastModified age="${lastModified}"/>
</IfAny>
</IfFileName>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
<RollingFile name="UserActionsRollingFile"
fileName="${baseDir}/user-actions.log"
filePattern="${baseDir}/log/user-actions-%i.log.gz">
<PatternLayout pattern="${logPattern}"/>
<Policies>
<SizeBasedTriggeringPolicy size="${maxFileSize}"/>
<OnStartupTriggeringPolicy />
</Policies>
<DefaultRolloverStrategy max="${maxCount}">
<Delete basePath="${baseDir}" maxDepth="3">
<IfFileName glob="*/user-actions-*.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-portal-constructor"
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"/>
<AppenderRef ref="STDERR" level="${consoleLevel}"/>
<AppenderRef ref="Gelf" level="${gelfLevel}"/>
</Root>
<Logger name="UserActionsLogger" additivity="false" level="INFO">
<AppenderRef ref="UserActionsRollingFile"/>
<AppenderRef ref="Gelf" level="${gelfLevel}"/>
</Logger>
<Logger name="io.grpc.netty" level="ERROR"/>
<Logger name="net.jradius" level="ERROR"/>
<Logger name="org.jooq" level="ERROR"/>
<Logger name="com.zaxxer" level="ERROR"/>
<Logger name="org.eclipse.jetty" level="ERROR"/>
<Logger name="org.springframework" level="ERROR"/>
<Logger name="org.eltex.portal.objectpool" level="ERROR"/>
<Logger name="org.apache" level="ERROR"/>
<Logger name="jndi" level="ERROR"/>
<Logger name="org.jooq.impl.DefaultConnectionProvider" level="OFF"/>
</Loggers>
</Configuration>
|
<Configuration monitorInterval="10"> |
<Property name="rootLevel">${env:LOG_LEVEL:-ERROR}</Property> |
<Property name="baseDir">/var/log/eltex-portal-constructor</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> |
С версии 1.21 при авторизации более не используется взаимодействие с "eltex-auth-service". При выполнении обновления с предыдущих версии из файла конфигурации: /etc/eltex-portal-constructor/application.conf необходимо удалить строки:
|
Логи событий безопасности сохраняются в файл /var/log/eltex-portal-constructor/user-actions.log
Пример лога:
2023-03-30 20:35:30,471 INFO [login: "admin", role: "null", user_ip: "10.25.96.118", host_ip: "10.25.96.46"][object_type: "portal common settings", action: "PORTAL_SETTINGS_EDIT", portal_name: "test4_izmenennui", msg: "'country.code.preferred' old_value='["Angola/244","Benin/229"]' new_value='["Angola/244"]'; 'mac.store.period' old_value='PT744H' new_value='PT768H'; 'locale.default' old_value='en' new_value='ru'"] |
Описание структуры лога:
login - логин пользователя;
role - роль пользователя (логируется только при авторизации через SSO, так как при обычной авторизации есть прямое соответствие между логином пользователя и его ролью);
user_ip - IP-адрес пользователя;
host_ip - IP-адрес исходного хоста;
2) [набор параметров, однозначно определяющий событие]:
object_type - место логируемого события (вкладка)
action - логируемое событие
portal_name - название портала (используется при логировании действий, связанных с конкретным порталом)
msg - дополнительная информация для некоторых типов событий, например "старое/новое значение" ("true / false")
Структура блока:
| object_type | Вкладка в КП |
|---|---|
System action | Системное сообщение. Не относится к действиям пользователя. Например, старт сервиса. |
User | Страница авторизации/username→Выход |
gallery image | Галерея |
Portal Constructor settings | Системные настройки → Конструктор порталов |
Alert settings | Системные настройки → Уведомления |
alert destination | Системные настройки → Уведомления → Список адресов получателей |
NBI access settings | Системные настройки → Доступ к NBI |
NGW access settings | Системные настройки → Доступ к NGW |
BRAS access settings | Системные настройки → Взаимодействие с BRAS |
PCRF access settings | Системные настройки → Доступ к PCRF |
Mercury access settings | Системные настройки → Доступ к Mercury |
Ted access settings | Системные настройки → Доступ к Ted |
Mobile ID platform access settings | Системные настройки → Доступ к Papaya |
Wi-Fi Customer Cub settings | Системные настройки → Личный кабинет |
ESIA settings | Системные настройки → Вход через ЕСИА |
SATS settings | Системные настройки → Интеграция с АТС Смольного |
Volga platform access settings | Системные настройки → Доступ к платформе Волга |
Payment service settings | Системные настройки → Настройки сервиса оплаты |
SPAR platform access settings | Системные настройки → Доступ к платформе SPAR |
SMART platform access settings | Системные настройки → Доступ к платформе SMART |
portal common settings | Порталы → (portal_name) → Общие настройки |
portal language settings | Порталы → (portal_name) → Языковые настройки |
portal advertising settings | Порталы → (portal_name) → Рекламные площадки |
schedule | Порталы → (portal_name) → Работа по расписанию |
tariffs | Порталы → (portal_name) → Тарифы → Тарифы |
BRAS tariffs | Порталы → (portal_name) → Тарифы → Специальные тарифы BRAS |
poll | Порталы → (portal_name) → Опросы |
portal payment settings | Порталы → (portal_name) → Сервисы оплаты |
portal appearance | Порталы → (portal_name) → Внешний вид |
portal | Порталы → Создать/копировать/изменить/удалить портал |
| Action | Описание |
|---|---|
PORTAL_CONSTRUCTOR_START | Старт Eltex Portal Constructor |
AUTHORIZATION | Авторизация (успешная или неуспешная) |
LOGOUT | Событие выхода или протухание сессии |
EPADMIN_SETTINGS_EDIT | Изменение настроек Конструктора порталов |
ALERT_SETTINGS_EDIT | Изменение настроек Уведомлений |
NBI_SETTINGS_EDIT | Изменение настроек доступа к NBI |
NGW_SETTINGS_EDIT | Изменение настроек доступа к NGW |
BRAS_SETTINGS_EDIT | Изменение настроек взаимодействия с BRAS |
PCRF_SETTINGS_EDIT | Изменение настроек доступа к PCRF |
MERCURY_SETTINGS_EDIT | Изменение настроек доступа к Mercury |
TED_SETTINGS_EDIT | Изменение настроек доступа к Ted |
WIFI_CC_SETTINGS_EDIT | Изменение настроек доступа к Личному кабинету |
ESIA_SETTINGS_EDIT | Изменение настроек входа через ЕСИА |
SATS_SETTINGS_EDIT | Изменение настроек интеграции с АТС Смольного |
VOLGA_SETTINGS_EDIT | Изменение настроек доступа к платформе "Волга" |
PAYMENT_SETTINGS_EDIT | Изменение настроек сервиса оплаты |
SPAR_SETTINGS_EDIT | Изменение настроек доступа к платформе SPAR |
SMART_SETTINGS_EDIT | Изменение настроек доступа к платформе SMART |
MOBILE_ID_SETTINGS_EDIT | Изменение настроек доступа к Papaya |
ALERT_DESTINATION_CREATE | Добавление получателя в список адресов получателей (Ситемные настройки → Уведомления) |
ALERT_DESTINATION_EDIT | Редактирование получателя в списке адресов получателей (Системные настройки → Уведомления) |
ALERT_DESTINATION_DELETE | Удаление получателя из списка адресов получателей (Системные настройки → Уведомления) |
GALLERY_IMAGE_CREATE | Загрузка нового изображения в Галерею |
GALLERY_IMAGE_EDIT | Редактирование существующего изображения в Галерее |
GALLERY_IMAGE_DELETE | Удаление изображения из галереи |
PORTAL_CREATE | Создание нового портала |
PORTAL_COPY | Копирование существующего портала |
PORTAL_EDIT | Редактирование существующего портала |
PORTAL_DELETE | Удаление портала |
PORTAL_SETTINGS_EDIT | Изменение общих настроек конкретного портала |
LANG_SETTINGS_EDIT | Изменение языковых настроек конкретного портала |
ADV_SETTINGS_EDIT | Изменение рекламных настроек конкретного портала |
PAYMENT_SETTINGS_EDIT | Изменение настроек оплаты конкретного портала |
APPEARANCE_EDIT | Изменение настроек внешнего вида конкретного портала |
SCHEDULE_CREATE | Добавление нового расписания для конкретного портала |
SCHEDULE_EDIT | Редактирование существующего расписания для конкретного портала |
SCHEDULE_DELETE | Удаление расписания конкретного портала |
TARIFFS_EDIT | Изменение настроек тарифов для конкретного портала |
BRAS_TARIFFS_EDIT | Изменение настроек специальных тарифов BRAS для конкретного портала |
POLL_CREATE | Добавление нового опроса конкретному порталу |
POLL_EDIT | Редактирование опроса у конкретного портала |
POLL_DELETE | Удаление опроса у конкретного портала |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Кнопка "Личный Кабинет" в боковой панели Конструктора Порталов предназначена для быстрого и удобного для пользователя перемещения между Конструктором Порталов и Личным Кабинетом. Т.к. авторизация в Конструкторе и ЛК производится через одну систему: Auth Service, то по нажатию на данную кнопку в новой вкладке браузера у пользователя открывается ЛК, при чем авторизация в ЛК уже не требуется, она автоматически производится.
|
|
|
|
|
|
Вкладка отвечает за выбор порядка прохождения авторизации пользователя на портале.
|
Выбор вариантов подтверждения пользователем своего номера телефона. Одновременно можно активировать на портале несколько вариантов, тогда пользователь сможет выбрать для себя наиболее оптимальный способ.
|
Раздел для настройки параметров отправки SMS при авторизации на портале.
|
|
|
|
|
|
Дополнительные страницы виртуального портала, используются для организации перехода между сложными сценариями и оповещения пользователей.
|
Портал поддерживает одновременно несколько языков: русский, английский, казахский, китайский, французкий немецкий, испанский, итальянский, фарси, японский, монгольский, бурятский и узбекский.
Пользователь может переключать языки, по своему усмотрению, в левой части вкладки, путем установки флага напротив нужных. По умолчанию доступны 2 языка: английский и русский. Остальные языки не активны. Если было обновление с более ранних версий SoftWLS, то уже ранее созданные порталы сохраняют языковые настройки.
|
|
Раздел содержит настройки активации/деактивации интеграции с рекламными площадками.
|
|
|
|
|
В разделе Опросы доступен интерфейс для управления опросами:

В левой части указаны опросы, привязанные к выбранному порталу, в правой части указаны все опросы, доступные для управления.
Для создания опроса необходимо нажать на кнопку Создать опрос.
В открывшемся редакторе указываются следующие настройки:
Возможные типы вопросов:
Каждый вопрос может быть обязательным, для этого необходимо установить соответствующий флаг. Если вопрос помечен как обязательный, то пользователь обязан дать на него ответ, прежде чем сможет перейти к следующему вопросу. Чтобы подтвердить отправку результатов, все обязательные вопросы должны быть отвечены. Необязательные вопросы можно пропускать.
Сервис поддерживает использование текста в вопросах и текста\изображений в ответах. Поддерживаются следующие форматы изображений:
Максимальный размер загружаемого изображения задаётся в конфигурационном файле в параметре maxSize секции images.
На всех этапах работы с опросами доступен предварительный просмотр опросов. Нажатие на кнопку Просмотр открывает предварительный просмотр опроса в том виде, в котором его увидит пользователь:

Для просмотра статистики опроса необходимо выделить нужный опрос, после чего появится кнопка Статистика.
Статистика ответов на вопросы типов один из списка, один из списка (радио), несколько из списка отображается в виде круговой диаграммы. В легенде отображается не более 7 вариантов ответа. Если вариантов больше, то в легенду добавляется пагинация.
Если на вопрос можно дать собственный ответ, то эти ответы буду выведены в отдельный сектор (их количество будет учтено), а сами ответы будут приведены в отдельном списке под диаграммой:

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

Статистика ответов на вопросы типа текст отображается в виде обычного списка:

Статистика ответов на вопросы типа шкала отображается в виде гистограммы:

Есть возможность сбросить результаты статистики опроса, за это отвечает кнопка Сбросить.
Возможен экспорт статистики в формат CSV, за это отвечает кнопка Экспорт.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Метрики сервиса доступны по ссылке:
http://<IP-адрес сервиса>:9001/epadmin/actuator/prometheus |
Пример вывода метрик:
# HELP hikaricp_connections_pending Pending threads
# TYPE hikaricp_connections_pending gauge
hikaricp_connections_pending{application="portal-constructor",pool="HikariPool-1",} 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="portal-constructor",} 0.0
# HELP sso_auth_requests_count_total Outgoing auth requests to SSO count
# TYPE sso_auth_requests_count_total counter
sso_auth_requests_count_total{application="portal-constructor",status="success",} 3.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="portal-constructor",state="terminated",} 0.0
jvm_threads_states_threads{application="portal-constructor",state="blocked",} 0.0
jvm_threads_states_threads{application="portal-constructor",state="waiting",} 4.0
jvm_threads_states_threads{application="portal-constructor",state="timed-waiting",} 18.0
jvm_threads_states_threads{application="portal-constructor",state="new",} 0.0
jvm_threads_states_threads{application="portal-constructor",state="runnable",} 10.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="portal-constructor",id="mapped",} 0.0
jvm_buffer_total_capacity_bytes{application="portal-constructor",id="direct",} 133970.0
# HELP jvm_memory_used_bytes The amount of used memory
# TYPE jvm_memory_used_bytes gauge
jvm_memory_used_bytes{application="portal-constructor",area="nonheap",id="Code Cache",} 2.8019904E7
jvm_memory_used_bytes{application="portal-constructor",area="heap",id="G1 Old Gen",} 5.8731648E7
jvm_memory_used_bytes{application="portal-constructor",area="nonheap",id="Compressed Class Space",} 1.8650784E7
jvm_memory_used_bytes{application="portal-constructor",area="nonheap",id="Metaspace",} 1.2590832E8
jvm_memory_used_bytes{application="portal-constructor",area="heap",id="G1 Survivor Space",} 2.3068672E7
jvm_memory_used_bytes{application="portal-constructor",area="heap",id="G1 Eden Space",} 2.07618048E8
# HELP jvm_gc_max_data_size_bytes Max size of long-lived heap memory pool
# TYPE jvm_gc_max_data_size_bytes gauge
jvm_gc_max_data_size_bytes{application="portal-constructor",} 2.147483648E9
# HELP jetty_threads_jobs Number of jobs queued waiting for a thread
# TYPE jetty_threads_jobs gauge
jetty_threads_jobs{application="portal-constructor",} 0.0
# HELP sso_token_requests_count_total Count by statuses of requests to get token
# TYPE sso_token_requests_count_total counter
sso_token_requests_count_total{application="portal-constructor",status="200",} 1.0
# HELP hikaricp_connections_max Max connections
# TYPE hikaricp_connections_max gauge
hikaricp_connections_max{application="portal-constructor",pool="HikariPool-1",} 10.0
# HELP jetty_threads_current The total number of threads in the pool
# TYPE jetty_threads_current gauge
jetty_threads_current{application="portal-constructor",} 8.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="portal-constructor",} 32.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="portal-constructor",} 1.684312096861E9
# HELP sso_refresh_token_request_processed_seconds_max Timer of processing request to refresh tokens
# TYPE sso_refresh_token_request_processed_seconds_max gauge
sso_refresh_token_request_processed_seconds_max{application="portal-constructor",} 0.057734424
# HELP sso_refresh_token_request_processed_seconds Timer of processing request to refresh tokens
# TYPE sso_refresh_token_request_processed_seconds summary
sso_refresh_token_request_processed_seconds_count{application="portal-constructor",} 2.0
sso_refresh_token_request_processed_seconds_sum{application="portal-constructor",} 0.079639912
# HELP hikaricp_connections_acquire_seconds Connection acquire time
# TYPE hikaricp_connections_acquire_seconds summary
hikaricp_connections_acquire_seconds_count{application="portal-constructor",pool="HikariPool-1",} 15.0
hikaricp_connections_acquire_seconds_sum{application="portal-constructor",pool="HikariPool-1",} 0.003492551
# HELP hikaricp_connections_acquire_seconds_max Connection acquire time
# TYPE hikaricp_connections_acquire_seconds_max gauge
hikaricp_connections_acquire_seconds_max{application="portal-constructor",pool="HikariPool-1",} 0.0
# HELP jvm_gc_memory_allocated_bytes_total Incremented for an increase in the size of the (young) heap memory pool after one GC to before the next
# TYPE jvm_gc_memory_allocated_bytes_total counter
jvm_gc_memory_allocated_bytes_total{application="portal-constructor",} 3.155165184E9
# 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="portal-constructor",area="nonheap",id="Code Cache",} 2.818048E7
jvm_memory_committed_bytes{application="portal-constructor",area="heap",id="G1 Old Gen",} 1.98180864E8
jvm_memory_committed_bytes{application="portal-constructor",area="nonheap",id="Compressed Class Space",} 1.9349504E7
jvm_memory_committed_bytes{application="portal-constructor",area="nonheap",id="Metaspace",} 1.2992512E8
jvm_memory_committed_bytes{application="portal-constructor",area="heap",id="G1 Survivor Space",} 2.3068672E7
jvm_memory_committed_bytes{application="portal-constructor",area="heap",id="G1 Eden Space",} 3.15621376E8
# HELP process_cpu_usage The "recent cpu usage" for the Java Virtual Machine process
# TYPE process_cpu_usage gauge
process_cpu_usage{application="portal-constructor",} 9.097128218563963E-4
# HELP jetty_threads_busy The number of busy threads in the pool
# TYPE jetty_threads_busy gauge
jetty_threads_busy{application="portal-constructor",} 3.0
# HELP jvm_gc_live_data_size_bytes Size of long-lived heap memory pool after reclamation
# TYPE jvm_gc_live_data_size_bytes gauge
jvm_gc_live_data_size_bytes{application="portal-constructor",} 3.9321592E7
# HELP log4j2_events_total Number of fatal level log events
# TYPE log4j2_events_total counter
log4j2_events_total{application="portal-constructor",level="error",} 2.0
log4j2_events_total{application="portal-constructor",level="fatal",} 0.0
log4j2_events_total{application="portal-constructor",level="debug",} 72.0
log4j2_events_total{application="portal-constructor",level="trace",} 0.0
log4j2_events_total{application="portal-constructor",level="info",} 7.0
log4j2_events_total{application="portal-constructor",level="warn",} 1.0
# HELP hikaricp_connections_min Min connections
# TYPE hikaricp_connections_min gauge
hikaricp_connections_min{application="portal-constructor",pool="HikariPool-1",} 1.0
# 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="portal-constructor",} 3.2882248E7
# 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="portal-constructor",id="mapped",} 0.0
jvm_buffer_count_buffers{application="portal-constructor",id="direct",} 14.0
# HELP hikaricp_connections_idle Idle connections
# TYPE hikaricp_connections_idle gauge
hikaricp_connections_idle{application="portal-constructor",pool="HikariPool-1",} 1.0
# HELP hikaricp_connections_creation_seconds_max Connection creation time
# TYPE hikaricp_connections_creation_seconds_max gauge
hikaricp_connections_creation_seconds_max{application="portal-constructor",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="portal-constructor",pool="HikariPool-1",} 0.0
hikaricp_connections_creation_seconds_sum{application="portal-constructor",pool="HikariPool-1",} 0.0
# HELP jvm_threads_daemon_threads The current number of live daemon threads
# TYPE jvm_threads_daemon_threads gauge
jvm_threads_daemon_threads{application="portal-constructor",} 14.0
# HELP http_server_requests_seconds
# TYPE http_server_requests_seconds summary
http_server_requests_seconds_count{application="portal-constructor",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/main.htm",} 1.0
http_server_requests_seconds_sum{application="portal-constructor",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/main.htm",} 5.125024727
http_server_requests_seconds_count{application="portal-constructor",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/css/**",} 15.0
http_server_requests_seconds_sum{application="portal-constructor",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/css/**",} 0.251421959
http_server_requests_seconds_count{application="portal-constructor",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/idle",} 2.0
http_server_requests_seconds_sum{application="portal-constructor",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/idle",} 0.004235423
http_server_requests_seconds_count{application="portal-constructor",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/font-awesome/**",} 2.0
http_server_requests_seconds_sum{application="portal-constructor",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/font-awesome/**",} 0.0324492
http_server_requests_seconds_count{application="portal-constructor",exception="None",method="GET",outcome="REDIRECTION",status="302",uri="REDIRECTION",} 1.0
http_server_requests_seconds_sum{application="portal-constructor",exception="None",method="GET",outcome="REDIRECTION",status="302",uri="REDIRECTION",} 0.282569648
http_server_requests_seconds_count{application="portal-constructor",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/js/**",} 23.0
http_server_requests_seconds_sum{application="portal-constructor",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/js/**",} 0.32053385
http_server_requests_seconds_count{application="portal-constructor",exception="None",method="POST",outcome="SUCCESS",status="200",uri="/async",} 2.0
http_server_requests_seconds_sum{application="portal-constructor",exception="None",method="POST",outcome="SUCCESS",status="200",uri="/async",} 0.436798899
http_server_requests_seconds_count{application="portal-constructor",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/actuator/prometheus",} 2.0
http_server_requests_seconds_sum{application="portal-constructor",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/actuator/prometheus",} 0.115174388
http_server_requests_seconds_count{application="portal-constructor",exception="None",method="POST",outcome="REDIRECTION",status="302",uri="REDIRECTION",} 1.0
http_server_requests_seconds_sum{application="portal-constructor",exception="None",method="POST",outcome="REDIRECTION",status="302",uri="REDIRECTION",} 0.025991596
http_server_requests_seconds_count{application="portal-constructor",exception="None",method="GET",outcome="REDIRECTION",status="302",uri="/sso_logout",} 1.0
http_server_requests_seconds_sum{application="portal-constructor",exception="None",method="GET",outcome="REDIRECTION",status="302",uri="/sso_logout",} 0.004331489
http_server_requests_seconds_count{application="portal-constructor",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/img/**",} 4.0
http_server_requests_seconds_sum{application="portal-constructor",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/img/**",} 0.027728521
http_server_requests_seconds_count{application="portal-constructor",exception="None",method="GET",outcome="REDIRECTION",status="302",uri="/",} 1.0
http_server_requests_seconds_sum{application="portal-constructor",exception="None",method="GET",outcome="REDIRECTION",status="302",uri="/",} 0.009191531
http_server_requests_seconds_count{application="portal-constructor",exception="None",method="GET",outcome="REDIRECTION",status="302",uri="/sso",} 4.0
http_server_requests_seconds_sum{application="portal-constructor",exception="None",method="GET",outcome="REDIRECTION",status="302",uri="/sso",} 7.197468833
http_server_requests_seconds_count{application="portal-constructor",exception="None",method="GET",outcome="REDIRECTION",status="302",uri="/login.htm",} 1.0
http_server_requests_seconds_sum{application="portal-constructor",exception="None",method="GET",outcome="REDIRECTION",status="302",uri="/login.htm",} 0.121628697
# HELP http_server_requests_seconds_max
# TYPE http_server_requests_seconds_max gauge
http_server_requests_seconds_max{application="portal-constructor",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/main.htm",} 0.0
http_server_requests_seconds_max{application="portal-constructor",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/css/**",} 0.0
http_server_requests_seconds_max{application="portal-constructor",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/idle",} 0.0
http_server_requests_seconds_max{application="portal-constructor",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/font-awesome/**",} 0.0
http_server_requests_seconds_max{application="portal-constructor",exception="None",method="GET",outcome="REDIRECTION",status="302",uri="REDIRECTION",} 0.0
http_server_requests_seconds_max{application="portal-constructor",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/js/**",} 0.0
http_server_requests_seconds_max{application="portal-constructor",exception="None",method="POST",outcome="SUCCESS",status="200",uri="/async",} 0.0
http_server_requests_seconds_max{application="portal-constructor",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/actuator/prometheus",} 0.0
http_server_requests_seconds_max{application="portal-constructor",exception="None",method="POST",outcome="REDIRECTION",status="302",uri="REDIRECTION",} 0.0
http_server_requests_seconds_max{application="portal-constructor",exception="None",method="GET",outcome="REDIRECTION",status="302",uri="/sso_logout",} 0.0
http_server_requests_seconds_max{application="portal-constructor",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/img/**",} 0.0
http_server_requests_seconds_max{application="portal-constructor",exception="None",method="GET",outcome="REDIRECTION",status="302",uri="/",} 0.0
http_server_requests_seconds_max{application="portal-constructor",exception="None",method="GET",outcome="REDIRECTION",status="302",uri="/sso",} 0.0
http_server_requests_seconds_max{application="portal-constructor",exception="None",method="GET",outcome="REDIRECTION",status="302",uri="/login.htm",} 0.0
# HELP jvm_gc_pause_seconds Time spent in GC pause
# TYPE jvm_gc_pause_seconds summary
jvm_gc_pause_seconds_count{action="end of minor GC",application="portal-constructor",cause="G1 Evacuation Pause",} 10.0
jvm_gc_pause_seconds_sum{action="end of minor GC",application="portal-constructor",cause="G1 Evacuation Pause",} 0.869
jvm_gc_pause_seconds_count{action="end of minor GC",application="portal-constructor",cause="Metadata GC Threshold",} 2.0
jvm_gc_pause_seconds_sum{action="end of minor GC",application="portal-constructor",cause="Metadata GC Threshold",} 0.126
# 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 minor GC",application="portal-constructor",cause="G1 Evacuation Pause",} 0.0
jvm_gc_pause_seconds_max{action="end of minor GC",application="portal-constructor",cause="Metadata GC Threshold",} 0.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="portal-constructor",} 8.0
# HELP hikaricp_connections_timeout_total Connection timeout total count
# TYPE hikaricp_connections_timeout_total counter
hikaricp_connections_timeout_total{application="portal-constructor",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="portal-constructor",} 26504.0
# HELP system_cpu_usage The "recent cpu usage" for the whole system
# TYPE system_cpu_usage gauge
system_cpu_usage{application="portal-constructor",} 0.025784337270484466
# HELP process_files_max_files The maximum file descriptor count
# TYPE process_files_max_files gauge
process_files_max_files{application="portal-constructor",} 1048576.0
# HELP sso_token_request_processed_seconds_max Timer of processing request to get token
# TYPE sso_token_request_processed_seconds_max gauge
sso_token_request_processed_seconds_max{application="portal-constructor",} 0.119045246
# HELP sso_token_request_processed_seconds Timer of processing request to get token
# TYPE sso_token_request_processed_seconds summary
sso_token_request_processed_seconds_count{application="portal-constructor",} 1.0
sso_token_request_processed_seconds_sum{application="portal-constructor",} 0.119045246
# HELP process_files_open_files The open file descriptor count
# TYPE process_files_open_files gauge
process_files_open_files{application="portal-constructor",} 60.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="portal-constructor",id="mapped",} 0.0
jvm_buffer_memory_used_bytes{application="portal-constructor",id="direct",} 133971.0
# HELP hikaricp_connections_usage_seconds Connection usage time
# TYPE hikaricp_connections_usage_seconds summary
hikaricp_connections_usage_seconds_count{application="portal-constructor",pool="HikariPool-1",} 15.0
hikaricp_connections_usage_seconds_sum{application="portal-constructor",pool="HikariPool-1",} 0.063
# HELP hikaricp_connections_usage_seconds_max Connection usage time
# TYPE hikaricp_connections_usage_seconds_max gauge
hikaricp_connections_usage_seconds_max{application="portal-constructor",pool="HikariPool-1",} 0.0
# HELP system_cpu_count The number of processors available to the Java virtual machine
# TYPE system_cpu_count gauge
system_cpu_count{application="portal-constructor",} 2.0
# HELP sso_authorization_processed_seconds Timer of processing authorization from moment of redirect back
# TYPE sso_authorization_processed_seconds summary
sso_authorization_processed_seconds_count{application="portal-constructor",} 1.0
sso_authorization_processed_seconds_sum{application="portal-constructor",} 7.102272626
# HELP sso_authorization_processed_seconds_max Timer of processing authorization from moment of redirect back
# TYPE sso_authorization_processed_seconds_max gauge
sso_authorization_processed_seconds_max{application="portal-constructor",} 7.102272626
# HELP jetty_threads_config_max The maximum number of threads in the pool
# TYPE jetty_threads_config_max gauge
jetty_threads_config_max{application="portal-constructor",} 200.0
# 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="portal-constructor",} 44.0
# HELP hikaricp_connections_active Active connections
# TYPE hikaricp_connections_active gauge
hikaricp_connections_active{application="portal-constructor",pool="HikariPool-1",} 0.0
# HELP sso_refresh_tokens_requests_count_total Count by statuses of requests to refresh tokens
# TYPE sso_refresh_tokens_requests_count_total counter
sso_refresh_tokens_requests_count_total{application="portal-constructor",status="200",} 2.0
# HELP sso_redirects_back_count_total Redirects back from SSO count
# TYPE sso_redirects_back_count_total counter
sso_redirects_back_count_total{application="portal-constructor",} 1.0
# HELP sso_authorization_results_count_total Authorizations by SSO statuses
# TYPE sso_authorization_results_count_total counter
sso_authorization_results_count_total{application="portal-constructor",status="success",} 1.0
# HELP sso_user_info_request_processed_seconds Timer of processing request to get user info
# TYPE sso_user_info_request_processed_seconds summary
sso_user_info_request_processed_seconds_count{application="portal-constructor",} 1.0
sso_user_info_request_processed_seconds_sum{application="portal-constructor",} 0.005407571
# HELP sso_user_info_request_processed_seconds_max Timer of processing request to get user info
# TYPE sso_user_info_request_processed_seconds_max gauge
sso_user_info_request_processed_seconds_max{application="portal-constructor",} 0.005407571
# HELP process_uptime_seconds The uptime of the Java virtual machine
# TYPE process_uptime_seconds gauge
process_uptime_seconds{application="portal-constructor",} 820.686
# HELP sso_user_info_requests_count_total Count by statuses of requests to receive user info
# TYPE sso_user_info_requests_count_total counter
sso_user_info_requests_count_total{application="portal-constructor",status="200",} 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="portal-constructor",} 0.0556640625
# 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="portal-constructor",area="nonheap",id="Code Cache",} 2.5165824E8
jvm_memory_max_bytes{application="portal-constructor",area="heap",id="G1 Old Gen",} 2.147483648E9
jvm_memory_max_bytes{application="portal-constructor",area="nonheap",id="Compressed Class Space",} 1.073741824E9
jvm_memory_max_bytes{application="portal-constructor",area="nonheap",id="Metaspace",} -1.0
jvm_memory_max_bytes{application="portal-constructor",area="heap",id="G1 Survivor Space",} -1.0
jvm_memory_max_bytes{application="portal-constructor",area="heap",id="G1 Eden Space",} -1.0
# HELP jetty_threads_idle The number of idle threads in the pool
# TYPE jetty_threads_idle gauge
jetty_threads_idle{application="portal-constructor",} 4.0
# HELP hikaricp_connections Total connections
# TYPE hikaricp_connections gauge
hikaricp_connections{application="portal-constructor",pool="HikariPool-1",} 1.0 |
Пример настройки подключения Prometheus:
scrape_configs:
- job_name: 'portal-constructor'
scrape_interval: 10s
metrics_path: '/epadmin/actuator/prometheus'
static_configs:
- targets: ['100.123.0.2:9001'] |
Сервис может быть запущен в docker-контейнере. Для этого необходимо подготовить файл с переменными окружения .env и docker-compose.yml
version: "3"
services:
eltex-portal-constructor:
container_name: eltex-portal-constructor
image: hub.eltex-co.ru/softwlc/eltex-portal-constructor:1.21-<tag>
ports:
- 9001:${PORTAL_CONSTRUCTOR_PORT}
- 9444:${PORTAL_CONSTRUCTOR_HTTPS_PORT}
environment:
- PORT=${PORTAL_CONSTRUCTOR_PORT}
- database.host=${PORTAL_CONSTRUCTOR_DATABASE_HOST}
- database.port=${PORTAL_CONSTRUCTOR_DATABASE_PORT}
- database.name=${PORTAL_CONSTRUCTOR_DATABASE_NAME}
- database.user=${PORTAL_CONSTRUCTOR_DATABASE_USER}
- database.password=${PORTAL_CONSTRUCTOR_DATABASE_PASSWORD}
- jetty.https.port=${PORTAL_CONSTRUCTOR_HTTPS_PORT}
- jetty.https.keystorePass=${PORTAL_CONSTRUCTOR_HTTPS_KEYSTORE_PASS}
- jetty.https.keystoreFile=${PORTAL_CONSTRUCTOR_HTTPS_KEYSTORE_FILE}
- validation.public_key=${PORTAL_CONSTRUCTOR_PUBLIC_KEY}
- TZ=${TZ}
volumes:
- /etc/eltex-doors/keys/public.pem:${PORTAL_CONSTRUCTOR_PUBLIC_KEY}:ro
|
| Вместо <tag> необходимо указать актуальную версию, которую можно посмотреть по ссылке. |
PORTAL_CONSTRUCTOR_PORT=9001 PORTAL_CONSTRUCTOR_HTTPS_PORT=9444 PORTAL_CONSTRUCTOR_HTTPS_KEYSTORE_PASS=12345 PORTAL_CONSTRUCTOR_HTTPS_KEYSTORE_FILE=/etc/eltex-portal-constructor/localhost.pfx PORTAL_CONSTRUCTOR_PUBLIC_KEY=/etc/eltex-doors/keys/public.pem PORTAL_CONSTRUCTOR_DATABASE_HOST=<ip-addr> PORTAL_CONSTRUCTOR_DATABASE_PORT=3306 PORTAL_CONSTRUCTOR_DATABASE_NAME=ELTEX_PORTAL PORTAL_CONSTRUCTOR_DATABASE_USER=javauser PORTAL_CONSTRUCTOR_DATABASE_PASSWORD=javapassword #Настройка часового пояса TZ=Asia/Novosibirsk |
Возможные переменные окружения:
Запуск сервиса
-Xms-XmxЛогирование
Подключение к БД
Конфигурация настроек входа в eltex-portal-constructor
Настройки SSO
Доступ через HTTPS
Валидация JWT
Настройка часового пояса
Файлы .env и docler-compose.yml должны находиться в одной папке. Контейнер запускается командой:
docker-compose up |
Авторизация на Конструкторе ПорталовПеред тем, как авторизоваться на Конструкторе порталов, который запущен в контейнере, необходимо добавить серверный адрес для eltex_auth_service в MySQL:
Вместо <IP-address> нужно вписать ip-адрес сервера, котором запущен контейнер с Конструктором Порталов.
Вместо <IP-address> нужно вписать ip-адрес контейнера, внутри которого запущен Конструктором Порталов. При этом следует учитывать, что при перезапуске контейнера, у него может смениться адрес, в таком, случае придется снова добавлять запись, но с другим ip-адресом. |