ym88659208ym87991671
Настройки конфигурации | Документация для разработчиков
Skip to main content

Настройки конфигурации

Настройки проекта (template_config.yml)

Ниже представлено описание основных параметров конфигурационного файла template_config.yml:

Название параметраОписание
environment

Тестовая среда или окружение. Возможные значения:

  • dev
  • dev_demo
  • local
  • Ift
  • prod
  • psi

Если environment входит в health_check.debug_envs, то в проекте появляется возможность вызвать запросы с информацией об утечках памяти от

memstats
: 

  • get_meminfo (http://0.0.0.0:1234/meminfo),
  • show_growth (http://0.0.0.0:1234/objgrowth),
  • show_most_common_types (http://0.0.0.0:1234/objtypes),
  • get_leaking_objects (http://0.0.0.0:1234/objleak).

Также этот параметр можно использовать как условия (Requirements)

data_adapter

Способ хранения статики:

  • ceph (дополнительно необходимо задать ceph_config.yml)
  • os (в локальной файловой системе)
health_check

Проверка состояния приложения средствами Open Shift. Рекомендуется оперировать следующими параметрами:

  • debug_envs
  • enabled
jaeger_config


Настройка трассировки. Рекомендуется оперировать следующими параметрами:

  • enabled
  • trace_id_header (уникальный трейс id сервиса)
monitoring.enabled

Настройка отправки метрик в Prometheus:

  • true - включить отправку метрик
  • false - отключить отправку метрик

user_save_check_for_collisions

Включение проверки на изменение данных пользователя с момента чтения. Проверка запускается при сохранении в базу:

  • true - делать проверку
  • false - не делать проверку

Если по итогам проверки данные изменились, необходимо вычитать свежие данные и прогнать всю обработку

user_save_collisions_tries

При сохранении данных в db_adapter.type:ignite возможны коллизии, (перезатирание результата предыдущей ноды). Если включена обработка коллизий, то последнее состояние не будет записано - нода вычитает новое состояние и повторит последний запрос с новым состоянием. Чтобы выключить обработку коллизии, необходимо передать 0

db_adapter.type

Тип адаптера:

  • ignite: 
    • в cache_name указывается имя кеша,
    • в url указывается ip БД,
    • в try_count - количество попыток подключения при недоступности БД
  • memory - кеш хранится в локальной памяти и дополнительные поля в конфиге не нужны.
  • redis - набор полей в конфиге определяется документацией класса Redis из redis-py.
masking_fields

Поля из этого конфига маскируются в логах. Принимает значение в виде списка полей из payload

---
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

Настройки логирования (logging_config.yml)

Настройки нативного Python модуля logging. Ниже представлено описание основных параметров конфигурационного файла logging_config.yml:

ПараметрОписание
loggersОписывает параметры логирования для модулей смартапа. Каждый модуль может иметь собственные параметры логирования
levelМинимальный уровень логирования
handlers

Куда записывается лог — в консоль или файл



classlogging.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. Для загрузки необходимо использовать следующую команду:

SecretFileRepository(filename=self.subfolder_path("ceph_config.yml"),
secret_filename=self.subfolder_secret_path("ceph_config.yml"),
loader=yaml.safe_load, key=self.CephAdapterKey)

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.serversIP сервера 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.serversIP сервера 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

Способ чтения топика:

  • earliest - чтение с начала;
  • largest - чтение с конца. Выбирается, если у брокера нет сохраненного offset

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: tkle-mess0066.vm.esrt.cloud.sbrf.ru:9093,tkle-mess0067.vm.esrt.cloud.sbrf.ru:9093
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: tkle-mess0066.vm.esrt.cloud.sbrf.ru:9093,tkle-mess0067.vm.esrt.cloud.sbrf.ru:9093
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: tkle-mess0066.vm.esrt.cloud.sbrf.ru:9092,tkle-mess0067.vm.esrt.cloud.sbrf.ru:9092
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: tkle-mess0066.vm.esrt.cloud.sbrf.ru:9092,tkle-mess0067.vm.esrt.cloud.sbrf.ru:9092
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
Обновлено 12 сентября 2022

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней