Конфигурация
Несмотря на то, что в конфигурации имеется огромное количество параметров, не все из них на данный момент поддерживаются пользовательским интерфейсом. По мере развития пользовательского интерфейса бОльшее количество параметров станет актуальным.
Конфигурация задается yaml-файлом и состоит из 3 разделов:
- server - конфигурация сервера seq-ui
- clients - конфигурация seq-db клиентов
- handlers - конфигурация seq-ui API
Вы можете указать свой конфигурационный файл при запуске seq-ui используя флаг --config:
go run ./cmd/seq-ui --config <путь-до-файла>
Примеры конфигурационных файлов
Вы найдете примеры конфигурационных файлов в каталоге config:
- example - минимальный конфигурационный файл
Server
server:
http_addr:
grpc_addr:
debug_addr:
grpc_connection_timeout:
http_read_timeout:
http_read_header_timeout:
http_write_timeout:
cors:
jwt_secret_key:
oidc:
rate_limiters:
cache:
db:
clickhouse:
gRPC/HTTP сервер
http_addr string required
Адрес HTTP-сервера.
grpc_addr string required
Адрес gRPC-сервера.
debug_addr string required
Адрес debug-сервера.
grpc_connection_timeout string default="0"
Время ожидания установки соединения (вплоть до HTTP/2 подтверждения) для всех новых подключений к gRPC-серверу. Нулевое или отрицательное значение приведет к немедленному истечению времени ожидания.
Значение должно быть передано в
duration-формате:<число>(ms|s|m|h).
http_read_timeout string default="0"
Максимальная продолжительность чтения всего запроса, включая тело. Нулевое или отрицательное значение означает, что продолжительность чтения не ограничена.
Значение должно быть передано в
duration-формате:<число>(ms|s|m|h).
http_read_header_timeout string default="0"
Максимальная продолжительность чтения заголовков запроса. Нулевое значение означает, что будет использоваться значение http_read_timeout. Если оба параметра имеют нулевое или отрицательное значение, то продолжительность чтения не будет ограничена.
Значение должно быть передано в
duration-формате:<число>(ms|s|m|h).
http_write_timeout string default="0"
Максимально допустимое время записи ответа после прочтения заголовка. Нулевое или отрицательное значение означает, что время записи не ограничено.
Значение должно быть передано в
duration-формате:<число>(ms|s|m|h).
cors CORS optional
Политики CORS HTTP-сервера. Если параметр не задан, политики CORS применяться не будут.
Поля CORS:
-
allowed_origins[]stringdefault=["*"]Список источников, из которых может быть выполнен междоменный запрос. Если в списке присутствует специальное значение
"*", то будут разрешены все источники. -
allowed_methods[]stringdefault=["HEAD", "GET", "POST", "PATCH", "DELETE"]Список методов, которые разрешены при междоменных запросах.
-
allowed_headers[]stringdefault=[]Список нестандартных заголовков, которые клиенту разрешено использовать в междоменных запросах. Если в списке присутствует специальное значение
"*", то будут разрешены все заголовки.Заголовок
"Origin"всегда добавляется в список. -
exposed_headers[]stringdefault=[]Список заголовок, безопасных для использования в API спецификации CORS API.
-
allow_credentialsbooldefault=falseОпределяет, может ли запрос включать учетные данные пользователя, такие как файлы cookie, HTTP-аутентификацию или клиентские SSL-сертификаты.
-
max_ageintdefault=0Указывает, как долго (в секундах) могут кэшироваться результаты
preflight-запроса. -
options_passthroughbooldefault=falseОпределяет, могут ли следующие потенциал ьные обработчики принимать метод
OPTIONS. Включите, если обрабатываете методOPTIONS.
Авторизация
jwt_secret_key string default=""
Если задана непустая строка, то создается JWT-провайдер для верификации токенов.
Авторизация по токенам разрешена только для обработчиков [
/seqapi/*,/massexport/*] в HTTP API и сервисам [SeqAPIService,MassExportService] в gRPC API. Для других обработчиков/сервисов, требующих авторизацию, будет использоваться OIDC, поэтомуjwt_secret_keyследует использовать в паре сoidc.
oidc OIDC optional
Конфигурация Open ID Connect. Если не задано, то верификации по OIDC не будет.
Поля OIDC:
-
auth_urls[]stringrequiredСписок адресов OIDC для отправки запросов на верификацию. Для каждого запроса все адреса из списка могут быть использованы.
-
root_castringdefault=""Путь до файла или содержимое корневого CA сертификата. Если задан, то будет использоваться в tls конфигурации OIDC клиента.
-
ca_certstringdefault=""Путь до файла или содержимое CA сертификата. Если задан, то будет использоваться в tls конфигурации OIDC клиента.
-
private_keystringdefault=""Путь до файла или содержимое приватного ключа, сгенерированного вместе с сертификатом. Если задан, то будет использоваться в tls конфигурации OIDC клиента.
-
ssl_skip_verifybooldefault=falseОпределяет, отключать ли проверку безопасности на OIDC клиенте.
-
allowed_clients[]stringdefault=[]Список разрешенных клиентов. Если задан непустой список, то будут допущены только указанные клиенты. Для определения клиента используется поле
Audienceиз токена. -
skip_verifybooldefault=falseОпределяет, выполнять ли проверку только
issuerиexpirationлокально без запросов вauth_urls. -
cache_secret_keystringdefault=""Если задана непустая строка, то OIDC токены кешируются используя
cache_secret_keyдо истечения их срока действия.
Ограничение частоты запросов
rate_limiters map[string]ApiRateLimiters optional
Конфигурации ограничения частоты запросов в gRPC и HTTP сервере. Если не задано, то частота запросов неограничена.
Ключ карты - базовый url HTTP API или имя сервиса gRPC API:
seqapi,userprofile,dashboards,massexport,errorgroupsSeqAPIService,UserProfileService,DashboardsService,MassExportService,ErrorGroupsService
Поля ApiRateLimiters:
-
defaultRateLimiterrequiredОграничение частоты запросов по умолчанию, для неопределенных и неавторизованных пользователей.
-
spec_usersmap[string]RateLimiteroptionalОгран ичение частоты запросов для конкретных пользователей и токенов. Ключ - имя пользователя или токена.
Поля RateLimiter:
-
rate_per_secintrequiredРазрешенное количество запросов в секунду. Если настроена авторизация, то у каждого пользователя персональная квота. В противном случае квота общая для всех запросов.
Механизм ограничения частоты запросов основан на Generic Cell Rate Algorithm (GCRA). Если значение
max_burstравно нулю, то следующий запрос будет разрешен по истечении времени(1 секунда / rate_per_sec)(например, если значениеrate_per_secравно 2, тогда следующий запрос будет разрешен через 500 миллисекунд). -
max_burstintdefault=0Количество запросов, которым будет разрешено превысить ограничение в рамках одно временнОго окна.
Общее количество разрешенных запросов в секунду может превышать значение
rate_per_sec, если значениеmax_burstбольше нуля. -
store_max_keysintdefault=0Максимальное количество ключей, которое может храниться в хранилище ограничения частоты запросов. Нулевое или отрицательное значение означает, что количество ключей - не ограничено.
-
per_handlerbooldefault=falseОпределяет, будет ли каждый обработчик API иметь свое ограничение.
Кэш
cache Cache optional
Конфигурация кэша.
Поля Cache:
-
inmemoryInmemoryCacheoptionalКонфигурация кэша в оперативной памяти.
Если не задано, то будет создан кэш с параметрами по умолчанию.
-
redisRedisoptionalКонфигурация Redis-кэша.
Работает в паре с кэшем в оперативной памяти:
-
когда пара ключ-значение сохраняется в redis, она также сохраняется в кэш в оперативной памяти
-
когда кэш в оперативной памяти содержит ключ, запрос к redis-кэшу не выполняется
-
если ключ не найден в кэше в оперативной памяти, но найден в redis-кэше, то значение сохраняется в кэше в оперативной памяти
Если redis недоступен, то вместо него будет использоваться кэш в оперативной памяти.
-
Поля InmemoryCache:
-
num_countersintdefault=1e7Количество счетчиков (ключей), которые содержат информацию о частоте обращения. Если установлено нулевое или отрицательное значение, то оно будет сброшено на
default.Рекомендуется иметь больше счетчиков, чем максимальная вместимость кэша (
max_cost), т.к. это повысит точность вытеснения и последующие коэффициенты попадания -
max_costintdefault=1e6Вместимость кэша. Если установлено нулевое или отрицательное значение, то оно будет сброшено на
default. -
buffer_itemsintdefault=64Размер Get-буферов. Если установлено нулевое или отрицательное значение, то оно будет сброшено на
default.
Поля Redis:
-
addrstringrequiredАдрес в формате
host:port. -
usernamestringdefault=""Имя пользователя для проверки подлинности соединения при подключении к Redis 6.0 или более поздней версии, использующей систему Redis ACL.
-
passwordstringdefault=""Пароль, указанный в параметре
requirepassконфигурации сервера (при подключении к Redis версии 5.0 или ниже), или пароль пользователя (при подключении к Redis версии 6.0 или выше, использующей систему Redis ACL). -
timeoutstringdefault="3s"Время ожидания чтения/записи. Если установлено значение
-1, то время ожидание неограничено.Значение должно быть передано в
duration-формате:<число>(ms|s|m|h). -
max_retriesintdefault=3Максимальное количество повторных попыток при неуспешных запросах. Если установлено значение
-1, то количество попыток неограничено. -
min_retry_backoffstringdefault="8ms"Минимальная задержка между повторным и попытками. Если установлено значение
-1, то задержки между повторами нет.Значение должно быть передано в
duration-формате:<число>(ms|s|m|h). -
max_retry_backoffstringdefault="512ms"Максимальная задержка между повторными попытками. Если установлено значение
-1, то задержки между повторами нет.Значение должно быть передано в
duration-формате:<число>(ms|s|m|h).
Внешние хранилища
db DB optional
Конфигурация базы данных PostgreSQL.
Необходимо для работы API
/userprofileиseqapi/v1/async_search/.
Поля DB:
-
namestringrequiredИмя базы данных.
-
hoststringrequiredАдрес базы данных.
-
portintrequiredПорт базы данных.
-
userstringrequiredИмя пользователя базы данных.
-
passstringrequiredПароль пользователя базы данных.
-
connection_pool_capacityintrequiredМаксимальный размер пула подключений.
-
request_timeoutstringrequiredВремя ожидания для всех запросов к базе данных.
Значение должно быть передано в
duration-формате:<число>(ms|s|m|h). -
use_prepared_statementsbooldefault=trueОпределяет, использовать ли
prepared statementsPostgreSQL.
clickhouse ClickHouse optional
Конфигурация базы данных ClickHouse.
Необходимо для работы API
/errorgroups.
Поля ClickHouse:
-
databasestringrequiredИмя базы данных.
-
usernamestringrequiredИмя пользователя базы данных.
-
passwordintrequiredПароль пользователя базы данных.
-
dial_timeoutintdefault="5s"Время ожидания подключения к базе данных. Если установлено нулевое или отрицательное значение, то оно будет сброшено на
default.Значение должно быть передано в
duration-формате:<число>(ms|s|m|h). -
read_timeoutintdefault="30s"Время ожидания чтения из базы данных. Если установлено нулевое или отрицательное значение, то оно будет сброшено на
default.Значение должно быть передано в
duration-формате:<число>(ms|s|m|h). -
shardedbooldefault=falseУказывает, является ли ClickHouse реплицированным. Используется для некоторых запросов, которые зависят от схемы ClickHouse.
Clients
clients:
seq_db_addrs:
proxy_client_mode:
seq_db_timeout:
seq_db_avg_doc_size:
request_retries:
initial_retry_backoff:
max_retry_backoff:
grpc_keepalive_params:
seq_db_addrs []string required
Список адресов seq-db proxy, которые будут использоваться для клиентских вызовов. Если указано более одного адреса, то адрес для каждого запроса будет выбираться случайным образом.
proxy_client_mode string default="grpc" options="grpc"
Способ отправки запросов в seq-db.
seq_db_timeout string default="0"
Время ожидания для всех запросов к seq-db. Нулевое значение означает, что время ожидания не ограничено.
Значение должно быть передано в
duration-формате:<число>(ms|s|m|h).
seq_db_avg_doc_size int default=0
Средний размер документов в KB, который возвращает seq-db. Используется в сочетании с handlers.seq_api.max_search_limit для расчета максимального размера ответа на запрос клиента.
Независимо от
seq_db_avg_doc_size, минимальный размер ответа на запрос клиента составляет4MB.
request_retries int default=0
Количество повторных попыток отправки запроса клиенту после первой попытки. Для каждой повторной попытки будет выбран случайный адрес из списка seq_db_addrs. Нулевое значение означает отсутствие повторных попыток. Если установлено отрицательное значение, то оно будет сброшено на default.
initial_retry_backoff string default="0"
Начальная задержка между повторными попытками. Если установлено значение 0, то задержки между повторами нет.
Значение должно быть передано в
duration-формате:<число>(ms|s|m|h).
max_retry_backoff string default="0"
Максимальная задержка между повторными попытками. Если установлено значение 0, то используется значение из initial_retry_backoff, и максимальна я задержка не превышает initial_retry_backoff * 2.
Значение должно быть передано в
duration-формате:<число>(ms|s|m|h).
grpc_keepalive_params GRPCKeepaliveParams optional
Параметры keepalive gRPC-клиента seq-db.
Поля GRPCKeepaliveParams:
-
timestringdefault="10s"Время неактивности, по истечении которого клиент проверяет работоспособность сервера. Если установлено значение меньше
10s, то оно будет сброшено наdefault.Значение должно быть передано в
duration-формате:<число>(ms|s|m|h). -
timeoutstringdefault="1s"Время ожидания при проверке работоспособности, по истечении которого в случае бездействия соединение будет закрыто. Если установлено значение меньше
10s, то оно будет сброшено наdefault.Значение должно быть передано в
duration-формате:<число>(ms|s|m|h). -
permit_without_streambooldefault=falseЕсли установлено значение
true, клиент отправляет запросы даже при отсутствии активных RPC. В противном случае, когда активных RPC нет, значенияtimeиtimeoutбудут проигнорированы, и запросы отправлены не будут.
Handlers
handlers:
seq_api:
error_groups:
mass_export:
SeqAPI
seq_api SeqAPI optional
Конфигурация /seqapi API.
SeqAPI fields:
-
max_search_limitintdefault=0Максимальное значение для поля
limitв поисковых запросах. -
max_search_total_limitintdefault=1e6Если поисковый запрос возвращает количество событий, превышающее
max_search_total_limit, то возвращается ошибка. -
max_search_offset_limitintdefault=1e6Максимальное значение для поля
offsetв поисковых запросах. -
max_export_limitintdefault=0Максимальное значение для поля
limitв запросах на экспорт. -
seq_cli_max_search_limitintdefault=0Максимальное количество событий, которое мож ет быть получено за одну команду поиска в seq-cli.
-
max_parallel_export_requestsintdefault=1Максимальное количество параллельных запросов на экспорт. Если настроена авторизация, то каждый пользователь получает персональную квоту, в противном случае квота является общей для всех запросов. Если установлено нулевое или отрицательное значение, то оно будет сброшено на
default. -
max_aggregations_per_requestintdefault=1Максимальное количество аггрегаций за один поисковый запрос. Если установлено нулевое или отрицательное значение, то оно будет сброшено на
default. -
max_buckets_per_aggregation_tsintdefault=200Максимальное количество бакетов за один запрос аггрегации с таймсерией. Количество бакетов рассчитывается как (
to-from) /interval. Если установлено нулевое или отрицательное значение, то оно будет сброшено наdefault. -
events_cache_ttlstringdefault="24h"TTL кэширования событий. Если уст ановлено нулевое или отрицательное значение, то оно будет сброшено на
default.Значение должно быть передано в
duration-формате:<число>(ms|s|m|h). -
logs_lifespan_cache_keystringdefault="logs_lifespan"Ключ кэширования данных о времени жизни логов. Полезно, когда несколько инстансов seq-ui используют один Redis-кэш. Если установлена пустая строка, то она будет сброшена на
default. -
logs_lifespan_cache_ttlstringdefault="10m"TTL кэширования данных о времени жизни логов. Если установлено нулевое или отрицательное значение, то оно будет сброшено на
default.Значение должно быть передано в
duration-формате:<число>(ms|s|m|h). -
fields_cache_ttlstringdefault="0"TTL кэширования индексируемых полей. Нулевое значение означает, что кэширование не происходит.
Значение должно быть передано в
duration-формате:<число>(ms|s|m|h). -
pinned_fields[]PinnedFielddefault=[]Список полей, которые будут закреплены в пользовательском интерфейсе.
Поля
PinnedField:-
namestringrequiredИмя поля.
-
typestringrequiredoptions="text"|"keyword"Тип поля.
-
Error groups
error_groups ErrorGroups optional
Конфигурация /errorgroups API.
Поля ErrorGroups:
-
log_tags_mappingLogTagsMappingoptionalСопоставление имен ClickHouse-столбцов и ключей в столбце
log_tags.Поля
LogTagsMapping:-
release[]stringdefault=[]Ключи
log_tagsдля столбцаrelease. -
env[]stringdefault=[]Ключи
log_tagsдля столбцаenv.
-
-
query_filtermap[string]stringoptionalДополнительные условия, которые будут добавлены к запросам в СlickHouse.
Mass export
mass_export MassExport optional
Конфигурация /massexport API.
Поля MassExport:
-
batch_sizeintdefault=10000Количество событий, извлекаемых из
seq-db, за один запрос. -
workers_countintrequiredКоличество "воркеров", параллельно выгружающих события из
seq-dbи загружающих их в хранилище файлов. Значение должно быть неотрицательным. -
tasks_channel_sizeintdefault=10000000Размер канала, содержащего временные сегменты экспорта. Значение должно быть неотрицательным.
-
part_lengthstringdefault="1h"Отрезок времени, за который хранятся события в одном файле.
Значение должно быть передано в
duration-формате:<число>(ms|s|m|h). -
url_prefixstringrequiredURL-префикс для формирования ссылок на файлы в S3. Значение должно быть непустой строкой.
-
allowed_users[]stringdefault=[]Список пользователей, которым разрешено использовать
/massexportAPI. Если задан пустой список, то API доступно для всех пользователей. В этом случае отображаемое имя -anonymous. -
file_storeFileStorerequiredКонфигурация файлового хранилища.
-
session_storeSessionStorerequiredКонфигурация хранилища сессий.
-
seq_proxy_downloaderSeqProxyDownloaderrequiredКонфигурация клиента seq-db proxy.
Поля FileStore:
-
s3S3requiredКонфигурация S3.
Поля
S3:endpointstringrequiredaccess_key_idstringrequiredsecret_access_keystringrequiredbucket_namestringrequiredenable_sslbooldefault=false
Поля SessionStore:
-
redisRedisrequiredКонфигурация Redis в к ачестве хранилища сессий. Для деталей смотрите
Redisв разделе Кэш. -
export_lifetimestringdefault="168h"Время жизни ключей в хранилище сессий.
Поля SeqProxyDownloader:
-
delaystringdefault="1s"Задержка между поисковыми запросами в seq-db.
Значение должно быть передано в
duration-формате:<число>(ms|s|m|h). -
initial_retry_backoffstringdefault="0"Начальная задержка между повторными попытками. Если значение меньше, чем
delay, то значениеdelayбудет сброшено наinitial_retry_backoff.Значение должно быть передано в
duration-формате:<число>(ms|s|m|h). -
max_retry_backoffstringdefault="0"Максимальная задержка между повторными попытками. Если значение меньше, чем
initial_retry_backoff, то значениеinitial_retry_backoffбудет сброшено наmax_retry_backoffЗначение должно быть передано в
duration-формате:<число>(ms|s|m|h).