Настройки проекта (template_config.yml)
Ниже представлено описание основных параметров конфигурационного файла template_config.yml
:
Название параметра | Описание |
---|---|
environment | Тестовая среда или окружение. Возможные значения:
Если
Также этот параметр можно использовать как условия (Requirements) |
data_adapter | Способ хранения статики:
|
health_check | Проверка состояния приложения средствами Open Shift. Включает следующие параметры:
|
jaeger_config | Настройка трассировки. Рекомендуется оперировать следующими параметрами:
|
monitoring.enabled | Настройка отправки метрик в Prometheus:
|
| Включение проверки на изменение данных пользователя с момента чтения. Проверка запускается при сохранении в базу:
Если по итогам проверки данные изменились, необходимо вычитать свежие данные и прогнать всю обработку |
user_save_collisions_tries | При сохранении данных в |
db_adapter.type | Тип адаптера:
|
masking_fields | Поля из этого конфига маскируются в логах. Принимает значение в виде списка полей из payload |
waiting_message_timeout | Время, в течение которого сообщение считается актуальным. Измеряется в миллисекундах. Включает следующие параметры:
|
---
environment: prod
data_adapter: ceph
health_check:
enabled: true
port: 1234
interface: 0.0.0.0
debug_envs:
- dev
jaeger_config:
logging: true
enabled: true
trace_id_header: dp-trace-id
sampler:
type: const
param: true
monitoring:
enabled: true
user_save_collisions_tries: 2
db_adapter:
type: ignite
url:
- [10.53.81.125, 10800]
cache_name: nlpp
try_count: 2
masking_fields:
- token
- access_token
- refresh_token
- epkId
- profileId
- bankProfile
- client_profile
waiting_message_timeout:
- warning: 200
- skip: 8000
Настройки логирования (logging_config.yml)
Настройки нативного Python модуля logging. Ниже представлено описание основных параметров конфигурационного файла logging_config.yml
:
Параметр | Описание | |
---|---|---|
loggers | Описывает параметры логирования для модулей смартапа. Каждый модуль может иметь собственные параметры логирования | |
level | Минимальный уровень логирования | |
handlers | Куда записывается лог — в консоль или файл | |
class | logging.handlers.RotatingFileHandler — настройка, чтобы файлы с логами перезаписывались | |
backupCount | Количество файлов до ротации. Все хранится в памяти пода, поэтому не рекомендуется передавать большое число | |
maxBytes | Размер файла в байтах. При превышении указанного значения создается новый файл | |
formatters | Форматы для корректной работы с файлбитом. Указанные значения рекомендуется оставить без изменений |
---
logging:
loggers:
your_app:
handlers:
- console_behaviour_handler
- file_behaviour_handler
propagate: false
level: DEBUG
your_app.app.adapters:
level: ERROR
version: 1
root:
handlers:
- console_handler
level: INFO
handlers:
file_behaviour_handler:
backupCount: 3
encoding: utf-8
filename: '/log/behaviour.log'
formatter: file_json_formatter
class: logging.handlers.RotatingFileHandler
maxBytes: 15728640
console_handler:
formatter: console_simple_formatter
class: logging.StreamHandler
stream: ext://sys.stdout
file_handler:
backupCount: 3
encoding: utf-8
filename: '/log/system.log'
formatter: file_json_formatter
class: logging.handlers.RotatingFileHandler
maxBytes: 15728640
console_behaviour_handler:
formatter: console_behaviour_formatter
class: logging.StreamHandler
stream: ext://sys.stdout
formatters:
file_json_formatter:
'()': smart_kit.utils.logger_writer.logger_formatter.SmartKitJsonFormatter
json_ensure_ascii: false
format: '%(created)f %(msecs)d %(relativeCreated)d %(levelname)s %(name)s %(asctime)s %(module)s %(message)s'
console_behaviour_formatter:
style: '{'
format: '[{levelname}] {name} {asctime} {module} {args[uid]} {args[message_id]} {args[logging_uuid]} {args[class_name]}: {message}'
console_simple_formatter:
format: '[%(levelname)s] %(name)s %(asctime)s %(module)s: %(message)s'
Настройки Ceph (ceph_config.yml)
Настройка файла осуществляется, если при настройке проекта в template_config.yml
был передан параметр data_adapter: ceph
.
Настройки необходимо разбить на 2 файла — configs и secrets.
ceph_config:
---
bucket: dev_dialog_policy_bucket
host: 10.36.2.119
is_secure: false
port: 7480
ceph_config в secret:
---
access_key: 3HZF4G4CSQ8V3ZLLXKB9
secret_key: BPL60pBS00yksiFJwlL857OW2GnqPCj57c85dEJT
Настройки Kafka (kafka_config.yml)
При использовании подключения по протоколу SSL необходимо прописать блоки с настройками сертификата в publisher
(настройки того, кто пишет) и в consumer
(настройки того, кто читает).
Ниже представлено описание основных параметров в publisher:
Параметр | Описание | |
---|---|---|
conf | Передача параметров конфигурации для confluent_kafka | |
bootstrap.servers | IP сервера Kafka (брокера) | |
broker.version.fallback | Отключение клиентом запроса на получение версии брокера. Если не прописать эти параметры, то при нестабильной работе на стороне Kafka, произойдет потеря заголовков (headers) | |
api.version.fallback.ms | ||
poll_timeout | Время, в течение которого клиент остается в poll при вычитке коммита. Управление возвращается, если:
| |
topic | Топики, в которые осуществляется запись. Для удобства использования ключ размещен в коде, так как топики могут меняться |
Ниже представлено описание основных параметров в consumer:
Параметр | Описание | |
---|---|---|
poll_timeout | Время, в течение которого клиент остается в poll при ожидании нового сообщения. Управление возвращается, если:
| |
assign_offset_end | Если значение false, то при подключении нового клиента все непрочитанные сообщения будут прочитаны. Если сервис был долго недоступен, то при поднятии он будет вычитывать все полученные сообщения, в том числе неактуальные. Но при падении пода это позволяет другому поду подхватить его сообщения | |
topics | Топики, из которых читаются записи | |
conf | Настройки файла конфигурации | |
bootstrap.servers | IP сервера Kafka (брокера) | |
group.id | Экземпляры с одинаковой группой распределяют между собой сообщения, т.е. если сообщение вычитал один клиент, то второй его уже не вычитает. Чтобы поды читали сообщения параллельно, необходимо указать для них разные группы | |
enable.auto.commit: true | Параметры в таком сочетании свидетельствуют, что offset будет закоммичен раньше, чем будет обработано сообщение. Это позволяет не ждать коммита offset после вычитки сообщения и гарантирует, что сообщение не будет потеряно. Чтобы сообщение не было вычитано дважды, offset хранятся локально и отправляются на бэкенд через auto.commit.interval.ms. Из-за этого время коммита на Kafka SSL может занимать до 1 секунды | |
enable.auto.offset.store: false | ||
auto.commit.interval.ms | Время, через которое локальные коммиты отправляются на бек | |
auto.offset.reset | Способ чтения топика:
|
kafka_config c ssl:
---
template-engine:
main:
publisher:
conf:
security.protocol: SSL
ssl.keystore.location: "{{ app.secret_path }}keystore.p12"
ssl.keystore.password: "{{ kafka_ssl.keystore.password }}"
ssl.ca.location: "{{ app.secret_path }}ca_root"
ssl.certificate.location: "{{ app.secret_path }}cert"
ssl.key.location: "{{ app.secret_path }}key"
bootstrap.servers: kafka-address:port, kafka_address2:port
topic.metadata.refresh.interval.ms: 100000
broker.version.fallback: 0.10.0.0
api.version.fallback.ms: 0
poll_timeout: 0
flush_timeout: 15000
topic:
vps: dpToKis
ir: DPtoIR
axon: DPtoAX
axon: toAX
client_info: giveMemory
external: APP_CONNECTOR.REQ
history: aiHistorySaveTopic
account_linking: dpToAlts
client_info_remember: rememberMemory
consumer:
poll_timeout: 0.001
assign_offset_end: false
topics:
to_dp: toDP
conf:
security.protocol: SSL
ssl.keystore.location: "{{ app.secret_path }}keystore.p12"
ssl.keystore.password: "{{ kafka_ssl.keystore.password }}"
ssl.ca.location: "{{ app.secret_path }}ca_root"
ssl.certificate.location: "{{ app.secret_path }}cert"
ssl.key.location: "{{ app.secret_path }}key"
bootstrap.servers: kafka-address:port, kafka_address2:port
topic.metadata.refresh.interval.ms: 100000
group.id: dialog_policy
session.timeout.ms: 6000
enable.auto.commit: true
enable.auto.offset.store: false
auto.commit.interval.ms: 1000
broker.version.fallback: 0.10.0.0
api.version.fallback.ms: 0
default.topic.config:
auto.offset.reset: largest
kafka_config без ssl:
---
template-engine:
main:
publisher:
conf:
bootstrap.servers: kafka-address:port, kafka_address2:port
topic.metadata.refresh.interval.ms: 100000
broker.version.fallback: 0.10.0.0
api.version.fallback.ms: 0
poll_timeout: 0
flush_timeout: 15000
topic:
vps: dpToKis
ir: DPtoIR
axon: DPtoAX
client_info: giveMemory
external: APP_CONNECTOR.REQ
history: aiHistorySaveTopic
account_linking: dpToAlts
client_info_remember: rememberMemory
consumer:
poll_timeout: 0.001
assign_offset_end: false
topics:
to_dp: toDP
conf:
bootstrap.servers: kafka-address:port, kafka_address2:port
topic.metadata.refresh.interval.ms: 100000
group.id: dialog_policy
session.timeout.ms: 6000
enable.auto.commit: true
enable.auto.offset.store: false
auto.commit.interval.ms: 1000
broker.version.fallback: 0.10.0.0
api.version.fallback.ms: 0
default.topic.config:
auto.offset.reset: largest