Настройки проекта (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
