Описание
...
...
Сервис Eltex Polly предоставляет приложение для создания опросов на веб-портале при подключении hotspot-пользователей в схемах с ТД и BRAS.
...
Рекомендуется схема работы с применением реверсного прокси nginx.
Управление сервисом
...
Установка
Для работы сервиса необходима установка схемы на сервер БД:
Блок кода |
---|
|
# apt install eltex-polly-db |
...
Блок кода |
---|
|
# apt install eltex-polly |
Остановка/запуск сервиса
Действие | Команда | Ответ |
---|
Проверка состояния | service eltex-polly status | Сервис запущен Подсказка |
---|
Active: active (running) |
Cервис не запущен Предупреждение |
---|
Active: failed |
|
Запуск сервиса | service eltex-polly start | Сервис успешно запущен Подсказка |
---|
Active: active (running) |
|
Остановка сервиса | service eltex-polly stop | Сервис успешно остановлен
|
Перезапуск сервиса | service eltex-polly restart | Сервис успешно перезапущен Подсказка |
---|
Active: active (running) |
|
Конфигурация
...
/etc/eltex-polly/application.conf
Основной конфигурационный файл сервиса
Блок кода |
---|
language | js |
---|
theme | RDark |
---|
title | /etc/eltex-polly/application.conf |
---|
collapse | true |
---|
|
access {
secret = password
}
database {
host = localhost
port = 3306
name = eltex_poll
user = javauser
password = javapassword
pool {
# Time to wait for a connection
connectionTimeout = 10s
# Time to wait for connection validation
validationTimeout = 3s
min = 1
max = 5
}
cache {
enabled = true
expireAfterWrite = 3m
maximumSize = 500
}
resources {
readChunkSize = 256k
writeChunkSize = 256k
}
}
images {
maxSize = 15MB
cache {
expireAfterWrite = 30s
storagePath = /tmp/eltex-polly/cache/
}
}
|
- Секретный ключ для доступа:
Без форматирования |
---|
access {
secret = password
} |
- Основные параметры для подключения к БД:
Блок кода |
---|
database {
host = localhost IP-адрес БД
port = 3306 Порт обращения к БД
name = eltex_poll Название БД
user = javauser Имя пользователя
password = javapassword Пароль
... |
- Настройка пула подключений к БД:
Блок кода |
---|
pool {
# Time to wait for a connection
connectionTimeout = 10s Время ожидания подключения к БД
# Time to wait for connection validation
validationTimeout = 3s Время ожидания валидации
min = 1 Минимальное количество подключений к БД
max = 5 Максимальное количество подключений к БД
} |
Блок кода |
---|
cache {
enabled = true Активация записи
expireAfterWrite = 3m Время хранения
maximumSize = 500 Максимальный размер
} |
- Настройка количества данных для чтения и записи:
Блок кода |
---|
resources {
readChunkSize = 256k
writeChunkSize = 256k
} |
Блок кода |
---|
images {
maxSize = 15MB Максимальный размер загружаемого изображения
cache {
expireAfterWrite = 30s
storagePath = /tmp/eltex-polly/cache/
}
} |
/etc/default/eltex-polly
Файл настройки инициализации сервиса.
Блок кода |
---|
title | /etc/default/eltex-polly |
---|
collapse | true |
---|
|
# Eltex-Polly daemon parameters
# HTTP Port for use by Eltex Polly
HTTP_PORT=9089
GRPC_PORT=9088
# 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-polly" |
- Порты для работы сервиса:
Без форматирования |
---|
# HTTP Port for use by Eltex Polly
HTTP_PORT=9089
GRPC_PORT=9088 |
- Количество памяти, выделяемое приложению при старте сервиса:
Без форматирования |
---|
# Initial size of Java heap
JAVA_INIT_HEAP=16m |
- Максимальное количество памяти, которое может арендовать сервис:
Без форматирования |
---|
# Maximum size of Java heap
JAVA_MAX_HEAP=256m |
- Дополнительные опции запуска java:
Без форматирования |
---|
# Additional arguments to pass to java
JAVA_OPTS="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/eltex-polly"
|
/etc/eltex-polly/log4j2.xml
Файл настройки логирования.
Блок кода |
---|
language | xml |
---|
title | /etc/eltex-polly/log4j2.xml |
---|
collapse | true |
---|
|
<?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-polly</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="dateSuffix">%d{yyyyMMdd}</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}/polly.log"
filePattern="${baseDir}/log/polly-%i.log.gz">
<PatternLayout pattern="${logPattern}"/>
<Policies>
<SizeBasedTriggeringPolicy size="${maxFileSize}"/>
<OnStartupTriggeringPolicy />
</Policies>
<DefaultRolloverStrategy max="${maxCount}">
<Delete basePath="${baseDir}" maxDepth="3">
<IfFileName glob="*/polly-*.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-polly"
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>
<!--SQL logger-->
<Logger name="org.jooq.tools.LoggerListener" level="OFF"/>
<Logger name="org.springframework" level="ERROR"/>
<Logger name="org.hibernate" level="ERROR"/>
<Logger name="com.zaxxer.hikari" level="ERROR"/>
<Logger name="io.netty" level="ERROR"/>
<Logger name="io.grpc" level="ERROR"/>
<!--Disabled loggers-->
<Logger name="org.apache" level="OFF"/>
</Loggers>
</Configuration>
|
- Интервал автоматического перечитывания конфигурации логгера:
Без форматирования |
---|
<Configuration monitorInterval="10"> |
Без форматирования |
---|
<Property name="rootLevel">${env:LOG_LEVEL:-ERROR}</Property> |
- Базовая директория хранения логов:
Без форматирования |
---|
<Property name="baseDir">/var/log/eltex-polly</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> |
Взаимодействие с другими сервисами
...
Конфигурация nginx
Ниже представлена конфигурация nginx.
Подразумевается, что сервисы запущены на следующих портах:
Сервис | Порт |
---|
eltex-portal-constructor | 9001 |
eltex-portal | 9000 |
eltex-polly | 9089 |
В случае необходимости следует изменить адреса и порты в конфигеконфигурационном файле.
Если eltex-portal и eltex-portal-constructor установлены на разных хостах, то nginx необходимо установить на каждом из них и настроить соответствующие location.
Блок кода |
---|
theme | RDark |
---|
title | /etc/nginx/conf.d/softwlc.conf |
---|
collapse | true |
---|
|
server {
listen 8080;
listen [::]:8080;
gzip off;
proxy_cache_background_update on;
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
proxy_cache_revalidate on;
proxy_cache_min_uses 2;
client_max_body_size 25m;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
# Eltex Portal section
location ~* /eltex_portal/(gif|jpeg|jpg|png|svg|js|css|fonts)/ {
proxy_cache eltex_cache;
proxy_ignore_headers Cache-Control Expires;
proxy_cache_valid any 1h;
# адрес eltex portal
proxy_pass http://127.0.0.1:9000;
}
location ~* /eltex_portal/(portal/download/shared/[0-9]+|img/) {
proxy_cache eltex_cache;
proxy_ignore_headers Cache-Control Expires;
proxy_cache_valid 404 302 304 5m;
proxy_cache_valid any 24h;
# адрес eltex portal
proxy_pass http://127.0.0.1:9000;
}
location ~* /eltex_portal/(portal/download/private|portal)/ {
proxy_cache eltex_cache;
proxy_ignore_headers Cache-Control Expires;
proxy_cache_valid 404 302 304 5m;
proxy_cache_valid any 1h;
# адрес eltex portal
proxy_pass http://127.0.0.1:9000;
}
location /eltex_portal/ {
proxy_pass http://127.0.0.1:9000;
}
location /eltex_portal/polly {
rewrite ^(/eltex_portal)/(.*)$ /$2 break;
proxy_cookie_path /polly /eltex_portal/polly;
# адрес eltex polly
proxy_pass http://127.0.0.1:9089;
}
# Eltex Portal Constructor section
location ~* /epadmin/(portal/download/[0-9]+|portal/download/shared/[0-9]+|font-awesome|img|js|css) {
proxy_cache eltex_cache;
proxy_cache_valid any 24h;
# адрес eltex portal constructor
proxy_pass http://127.0.0.1:9001;
}
location /epadmin {
proxy_pass http://127.0.0.1:9001;
}
location /ep-demo {
proxy_pass http://127.0.0.1:9001;
}
location /epadmin/polly {
rewrite ^(/epadmin)/(.*)$ /$2 break;
proxy_cookie_path /polly /epadmin/polly;
# адрес eltex polly
proxy_pass http://127.0.0.1:9089;
}
location / {
deny all;
}
} |
Конфигурационные файлы eltex-polly
/etc/eltex-polly/application.conf - основной конфигурационный файл сервиса
Блок кода |
---|
|
access {
secret = password
}
database {
host = localhost
port = 3306
name = eltex_poll
user = javauser
password = javapassword
pool {
# Time to wait for a connection
connectionTimeout = 10s
# Time to wait for connection validation
validationTimeout = 3s
min = 1
max = 5
}
cache {
enabled = true
expireAfterWrite = 3m
maximumSize = 500
}
resources {
readChunkSize = 256k
writeChunkSize = 256k
}
}
images {
maxSize = 15MB
cache {
expireAfterWrite = 30s
storagePath = /tmp/eltex-polly/cache/
}
}
|
/etc/default/eltex-polly - содержит параметры, необходимые для инициализации сервиса
Блок кода |
---|
|
# Eltex-Polly daemon parameters
# HTTP Port for use by Eltex Polly
HTTP_PORT=9089
GRPC_PORT=9088
# 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-polly"
|
Настройка доступа к сервису опросов в Конструкторе порталов
...
- Перейти в Личный кабинет
- Перейти в меню Сервисы и тарифы → Тарифы, выбрать фильтр Точки Доступа, создать новый тарифный план, либо отредактировать существующий
![](/download/attachments/124422567/polly_ap_tariff_with_nginx.png?version=1&modificationDate=1609294525000&api=v2)
В качестве первого сценария необходимо указать URL-адрес в виде http://<portal-ip-address>:<portal_port>/eltex_portal/poll-redirect. Дальнейшие сценарии можно задать в стандартном виде (например, доступ в интернет в сценарии 2 в течение 1 минуты, третий сценарий - возврат на портал и повторная авторизация клиента).
Примечание |
---|
Для корректной работы в тарифе должны присутствовать не менее двух сценариев |
- Убедиться, что на всех точка доступа домена указан AP Alias.
![](/download/attachments/124422567/ems_cp_alias.png?version=1&modificationDate=1609294524000&api=v2)
Параметр должен быть одинаковым на всех точках платформы. Настройку можно выполнить непосредственно на ТД, через групповые операции или при помощи правила инициализации ТД. - Зайти в Конструктор порталов, выбрать необходимый портал. В разделе меню Тарифы выбрать созданный тарифный план, задать название тарифа на портале, сохранить изменения.
- Перейти в раздел меню Опросы, создать необходимый опрос, привязать его к порталу.
- После аутентификации на портале пользователь будет перенаправлен на сервис опросов, если в базе для него найдётся подходящий опрос по языку, домену, расписанию, и если он ещё не проходил данный опрос.
...