Конфигурация ноды
Параметры конфигурации ноды задаются в файле /app/smrtc/config/smrtc.yml. Значения заполняются инсталлятором на шагах установки (см. Установка) и читаются процессом smrtc один раз при старте.
Изменение параметров конфигурации ноды требует перезапуска сервиса smrtc и выполняется на каждой ноде отдельно. В интерфейсе Smart Monitor эти параметры не отображаются и не редактируются.
Каждый параметр можно задать двумя способами: ключом в smrtc.yml или переменной окружения — оба варианта равноправны.
Инсталлятор записывает в smrtc.yml только обязательный минимум: роли, порт, TLS, keystore, имя и адреса кластера, корневой каталог данных и журналирование. Остальные параметры действуют со встроенными значениями по умолчанию, а в шаблоне присутствуют закомментированными.
Форматы значений
Часть параметров записывается не числом, а строкой с единицей измерения:
| Тип | Формат | Примеры |
|---|---|---|
| Размер | <целое><единица>, двоичные множители: b, kb, mb, gb, tb | 64mb, 256mb, 1gb |
| Длительность | <целое><единица>: ms, s, m, h, d | 250ms, 2s, 150ms |
Дробные значения не поддерживаются: 1.5s нужно записать как 1500ms. Размер 0 также не принимается — у него нет единицы измерения, а для автоопределения существует отдельный литерал auto.
Сеть и порты
| Параметр | Путь в smrtc.yml | Назначение | Значение по умолчанию |
|---|---|---|---|
NODE_PORT | node.port | Публичный порт: прием событий, API управления, /health | 9919 |
TRANSPORT_PORT | node.transport_port | Порт межнодового обмена (gRPC: raft и весь control plane между нодами) | 9910 |
CLUSTER_ADVERTISE_URL | node.advertise_url | Адрес, по которому ноду находят другие ноды и Smart Monitor; пусто — определяется по таблице маршрутизации | пусто |
Кластер
| Параметр | Путь в smrtc.yml | Назначение | Значение по умолчанию |
|---|---|---|---|
CLUSTER_NAME | cluster.name | Имя кластера; обязано совпадать на всех нодах и с полем OU в сертификате ноды | smrtc_cluster |
NODE_ROLES | roles (список на верхнем уровне, без секции) | Роли ноды; master — участник кворума метаданных, пусто — реплика без голоса | пусто |
CLUSTER_NODES | cluster.nodes (список) | Адреса нод для присоединения к кластеру в формате host:port; пусто — нода образует кластер самостоятельно | пусто |
TLS
| Параметр | Путь в smrtc.yml | Назначение | Значение по умолчанию |
|---|---|---|---|
TLS_ENABLED | tls.enabled | Включение TLS и mTLS на публичном и межнодовом слушателях | false |
TLS_CERT_FILE | tls.cert_file | Сертификат ноды | пусто |
TLS_KEY_FILE | tls.key_file | Закрытый ключ ноды | пусто |
TLS_CA_CERT_FILE | tls.ca_cert_file | Сертификат удостоверяющего центра для проверки сертификатов других нод | пусто |
При tls.enabled: true все три пути — tls.cert_file, tls.key_file и tls.ca_cert_file — обязательны. Если хотя бы один не задан, нода не стартует и сообщает об этом в журнале.
Аутентификация и keystore
| Параметр | Путь в smrtc.yml | Назначение | Значение по умолчанию |
|---|---|---|---|
DEFAULT_ADMIN_USER | admin.user | Имя локального администратора; пароль хранится в keystore | admin |
KEYSTORE_FILE | keystore.file | Файл зашифрованных секретов (пароль admin и пароль подключения к Smart Monitor) | /app/smrtc/config/keystore |
KEYSTORE_PASSPHRASE | keystore.passphrase | Парольная фраза keystore | пусто |
Каталоги данных
DATA_DIR задает корень хранилища: остальные пять каталогов по умолчанию наследуются от него.
| Параметр | Путь в smrtc.yml | Назначение | Значение по умолчанию |
|---|---|---|---|
DATA_DIR | data.dir | Корневой каталог данных ноды | /app/smrtc/data |
METADATA_DATA_DIR | data.metadata_dir | Каталог метаданных | <data.dir>/metadata |
DATA_CLUSTER_DIR | data.cluster_dir | Каталог идентификатора ноды и сохраненных подавлений правил | <data.dir>/cluster |
TELEMETRY_DATA_DIR | data.telemetry_dir | Каталог статистики обработанных источников | <data.dir>/telemetry |
FIRES_DATA_DIR | data.fires_dir | Каталог журнала сработок | <data.dir>/fires |
ACTIVE_LISTS_DATA_DIR | data.active_lists_dir | Каталог активных списков | <data.dir>/active-lists |
CONTENT_DIR | content.dir | Каталог контент-паков, импортируемых при старте на первой ноде кластера; пусто — импорт не выполняется | пусто |
Движок
| Параметр | Путь в smrtc.yml | Назначение | Значение по умолчанию |
|---|---|---|---|
WORKER_COUNT | engine.worker_count | Размер пула воркеров и число внутренних шардов корреляции; 0 — по числу ядер | 0 |
STATE_MAX_GROUPS | engine.state_max_groups | Предел числа состояний корреляции (правило, группа) на ноду, распределяется поровну между шардами; 0 — без ограничения | 8000000 |
ACTIVE_LISTS_BLOCK_CACHE | engine.active_lists_block_cache | Кеш чтения активных списков | 64mb |
ACTIVE_LISTS_AUTOFILL_WORKERS | engine.active_lists_autofill_workers | Число потоков отложенной записи при автозаполнении списков | 4 |
ACTIVE_LISTS_AUTOFILL_CHUNK | engine.active_lists_autofill_chunk | Число изменений, применяемых за один проход; допустимо от 1 до 1000 | 512 |
ACTIVE_LISTS_AUTOFILL_FLUSH_INTERVAL | engine.active_lists_autofill_flush_interval | Период сброса накопленных записей автозаполнения | 150ms |
ACTIVE_LISTS_AUTOFILL_BUFFER_MAX | engine.active_lists_autofill_buffer_max | Предел буфера автозаполнения, после которого новые записи отбрасываются; 0 — без ограничения, иначе значение не меньше 1000 | 200000 |
Прием событий
| Параметр | Путь в smrtc.yml | Назначение | Значение по умолчанию |
|---|---|---|---|
INGEST_DEDUPE_PEAK_EPS | ingest.dedupe_peak_eps | Расчетная пиковая скорость пересылаемых между нодами событий; задает нижнюю границу таблицы дубликатов | 100000 |
Ограничитель памяти
| Параметр | Путь в smrtc.yml | Назначение | Значение по умолчанию |
|---|---|---|---|
INGEST_MEMORY_CB_ENABLED | memory_circuit_breaker.enabled | Ограничитель памяти на приеме событий | true |
INGEST_MEMORY_CB_LIMIT | memory_circuit_breaker.limit | Бюджет памяти; auto — определяется по GOMEMLIMIT, затем по лимиту cgroup; иначе размер не меньше 256mb | auto |
INGEST_MEMORY_CB_SOFT_PCT | memory_circuit_breaker.soft_pct | Порог мягкого ограничения, % от лимита | 85 |
INGEST_MEMORY_CB_HARD_PCT | memory_circuit_breaker.hard_pct | Порог, при котором прием событий отклоняется, % от лимита | 92 |
INGEST_MEMORY_CB_RELEASE_PCT | memory_circuit_breaker.release_pct | Порог снятия ограничения, % от лимита | 75 |
INGEST_MEMORY_CB_SAMPLE | memory_circuit_breaker.sample | Период измерения памяти; не меньше 50ms | 250ms |
INGEST_MEMORY_CB_FORCE_GC | memory_circuit_breaker.force_gc | Принудительная сборка мусора при срабатывании ограничителя | true |
INGEST_MEMORY_CB_GC_COOLDOWN | memory_circuit_breaker.gc_cooldown | Минимальный интервал между принудительными сборками мусора; не меньше 100ms | 2s |
Три порога должны идти строго по возрастанию: release_pct < soft_pct < hard_pct. Нарушение порядка — ошибка запуска, а не повод для автоматической правки значений: нода не запускается и сообщает об этом в журнале.
Журналирование
| Параметр | Путь в smrtc.yml | Назначение | Значение по умолчанию |
|---|---|---|---|
LOG_FILE | log.file | Файл журнала; пусто — вывод в стандартный поток ошибок, который под systemd попадает в journald | пусто |
LOG_MAX_SIZE | log.max_size | Размер файла журнала до ротации; должен быть целым числом | 100mb |
LOG_MAX_BACKUPS | log.max_backups | Число хранимых архивов журнала; 0 — хранить все | 14 |
LOG_COMPRESS | log.compress | Сжатие архивов журнала | true |