Конфигурация
Несмотря на то, что в конфигурации имеется огромное количество параметров, не все из них на данный момент поддерживаются пользовательским интерфейсом. По мере развития пользовательского интерфейса бОльшее количество параметров станет актуальным.
Конфигурация задается 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
[]string
default=["*"]
Список источников, из которых может быть выполнен междоменный запрос. Если в списке присутствует специальное значение
"*"
, то будут разрешены все источники. -
allowed_methods
[]string
default=["HEAD", "GET", "POST", "PATCH", "DELETE"]
Список методов, которые разрешены при междоменных запросах.
-
allowed_headers
[]string
default=[]
Список нестандартных заголовков, которые клиенту разрешено использовать в междоменных запросах. Если в списке присутствует специальное значение
"*"
, то будут разрешены все заголовки.Заголовок
"Origin"
всегда добавляется в список. -
exposed_headers
[]string
default=[]
Список заголовок, безопасных для использования в API спецификации CORS API.
-
allow_credentials
bool
default=false
Определяет, может ли запрос включать учетные данные пользователя, такие как файлы cookie, HTTP-аутентификацию или клиентские SSL-сертификаты.
-
max_age
int
default=0
Указывает, как долго (в секундах) могут кэшироваться результаты
preflight
-запроса. -
options_passthrough
bool
default=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
[]string
required
Список адресов OIDC для отправки запросов на верификацию. Для каждого запроса все адреса из списка могут быть использованы.
-
root_ca
string
default=""
Путь до файла или содержимое корневого CA сертификата. Если задан, то будет использоваться в tls конфигурации OIDC клиента.
-
ca_cert
string
default=""
Путь до файла или содержимое CA сертификата. Если задан, то будет использоваться в tls конфигурации OIDC клиента.
-
private_key
string
default=""
Путь до файла или содержимое приватного ключа, сгенерированного вместе с сертификатом. Если задан, то будет использоваться в tls конфигурации OIDC клиента.
-
ssl_skip_verify
bool
default=false
Определяет, отключать ли проверку безопасности на OIDC клиенте.
-
allowed_clients
[]string
default=[]
Список разрешенных клиентов. Если задан непустой список, то будут допущены только указанные клиенты. Для определения клиента используется поле
Audience
из токена. -
skip_verify
bool
default=false
Определяет, выполнять ли проверку только
issuer
иexpiration
локально без запросов вauth_urls
. -
cache_secret_key
string
default=""
Если задана непустая строка, то OIDC токены кешируются используя
cache_secret_key
до истечения их срока действия.
Ограничение частоты запросов
rate_limiters
map[string]ApiRateLimiters
optional
Конфигурации ограничения частоты запросов в gRPC и HTTP сервере. Если не задано, то частота запросов неограничена.
Ключ карты - базовый url HTTP API или имя сервиса gRPC API:
seqapi
,userprofile
,dashboards
,massexport
,errorgroups
SeqAPIService
,UserProfileService
,DashboardsService
,MassExportService
,ErrorGroupsService
Поля ApiRateLimiters
:
-
default
RateLimiter
required
Ограничение частоты запросов по умолчанию, для неопределенных и неавторизованных пользователей.
-
spec_users
map[string]RateLimiter
optional
Огран ичение частоты запросов для конкретных пользователей и токенов. Ключ - имя пользователя или токена.
Поля RateLimiter
:
-
rate_per_sec
int
required
Разрешенное количество запросов в секунду. Если настроена авторизация, то у каждого пользователя персональная квота. В противном случае квота общая для всех запросов.
Механизм ограничения частоты запросов основан на Generic Cell Rate Algorithm (GCRA). Если значение
max_burst
равно нулю, то следующий запрос будет разрешен по истечении времени(1 секунда / rate_per_sec)
(например, если значениеrate_per_sec
равно 2, тогда следующий запрос будет разрешен через 500 миллисекунд). -
max_burst
int
default=0
Количество запросов, которым будет разрешено превысить ограничение в рамках одно временнОго окна.
Общее количество разрешенных запросов в секунду может превышать значение
rate_per_sec
, если значениеmax_burst
больше нуля. -
store_max_keys
int
default=0
Максимальное количество ключей, которое может храниться в хранилище ограничения частоты запросов. Нулевое или отрицательное значение означает, что количество ключей - не ограничено.
-
per_handler
bool
default=false
Определяет, будет ли каждый обработчик API иметь свое ограничение.
Кэш
cache
Cache
optional
Конфигурация кэша.
Поля Cache
:
-
inmemory
InmemoryCache
optional
Конфигурация кэша в оперативной памяти.
Если не задано, то будет создан кэш с параметрами по умолчанию.
-
redis
Redis
optional
Конфигурация Redis-кэша.
Работает в паре с кэшем в оперативной памяти:
-
когда пара ключ-значение сохраняется в redis, она также сохраняется в кэш в оперативной памяти
-
когда кэш в оперативной памяти содержит ключ, запрос к redis-кэшу не выполняется
-
если ключ не найден в кэше в оперативной памяти, но найден в redis-кэше, то значение сохраняется в кэше в оперативной памяти
Если redis недоступен, то вместо него будет использоваться кэш в оперативной памяти.
-
Поля InmemoryCache
:
-
num_counters
int
default=1e7
Количество счетчиков (ключей), которые содержат информацию о частоте обращения. Если установлено нулевое или отрицательное значение, то оно будет сброшено на
default
.Рекомендуется иметь больше счетчиков, чем максимальная вместимость кэша (
max_cost
), т.к. это повысит точность вытеснения и последующие коэффициенты попадания -
max_cost
int
default=1e6
Вместимость кэша. Если установлено нулевое или отрицательное значение, то оно будет сброшено на
default
. -
buffer_items
int
default=64
Размер Get-буферов. Если установлено нулевое или отрицательное значение, то оно будет сброшено на
default
.
Поля Redis
:
-
addr
string
required
Адрес в формате
host:port
. -
username
string
default=""
Имя пользователя для проверки подлинности соединения при подключении к Redis 6.0 или более поздней версии, использующей систему Redis ACL.
-
password
string
default=""
Пароль, указанный в параметре
requirepass
конфигурации сервера (при подключении к Redis версии 5.0 или ниже), или пароль пользователя (при подключении к Redis версии 6.0 или выше, использующей систему Redis ACL). -
timeout
string
default="3s"
Время ожидания чтения/записи. Если установлено значение
-1
, то время ожидание неограничено.Значение должно быть передано в
duration
-формате:<число>(ms|s|m|h)
. -
max_retries
int
default=3
Максимальное количество повторных попыток при неуспешных запросах. Если установлено значение
-1
, то количество попыток неограничено. -
min_retry_backoff
string
default="8ms"
Минимальная задержка между повторным и попытками. Если установлено значение
-1
, то задержки между повторами нет.Значение должно быть передано в
duration
-формате:<число>(ms|s|m|h)
. -
max_retry_backoff
string
default="512ms"
Максимальная задержка между повторными попытками. Если установлено значение
-1
, то задержки между повторами нет.Значение должно быть передано в
duration
-формате:<число>(ms|s|m|h)
.
Внешние хранилища
db
DB
optional
Конфигурация базы данных PostgreSQL.
Необходимо для работы API
/userprofile
иseqapi/v1/async_search/
.
Поля DB
:
-
name
string
required
Имя базы данных.
-
host
string
required
Адрес базы данных.
-
port
int
required
Порт базы данных.
-
user
string
required
Имя пользователя базы данных.
-
pass
string
required
Пароль пользователя базы данных.
-
connection_pool_capacity
int
required
Максимальный размер пула подключений.
-
request_timeout
string
required
Время ожидания для всех запросов к базе данных.
Значение должно быть передано в
duration
-формате:<число>(ms|s|m|h)
. -
use_prepared_statements
bool
default=true
Определяет, использовать ли
prepared statements
PostgreSQL.
clickhouse
ClickHouse
optional
Конфигурация базы данных ClickHouse.
Необходимо для работы API
/errorgroups
.
Поля ClickHouse
:
-
database
string
required
Имя базы данных.
-
username
string
required
Имя пользователя базы данных.
-
password
int
required
Пароль пользователя базы данных.
-
dial_timeout
int
default="5s"
Время ожидания подключения к базе данных. Если установлено нулевое или отрицательное значение, то оно будет сброшено на
default
.Значение должно быть передано в
duration
-формате:<число>(ms|s|m|h)
. -
read_timeout
int
default="30s"
Время ожидания чтения из базы данных. Если установлено нулевое или отрицательное значение, то оно будет сброшено на
default
.Значение должно быть передано в
duration
-формате:<число>(ms|s|m|h)
. -
sharded
bool
default=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
:
-
time
string
default="10s"
Время неактивности, по истечении которого клиент проверяет работоспособность сервера. Если установлено значение меньше
10s
, то оно будет сброшено наdefault
.Значение должно быть передано в
duration
-формате:<число>(ms|s|m|h)
. -
timeout
string
default="1s"
Время ожидания при проверке работоспособности, по истечении которого в случае бездействия соединение будет закрыто. Если установлено значение меньше
10s
, то оно будет сброшено наdefault
.Значение должно быть передано в
duration
-формате:<число>(ms|s|m|h)
. -
permit_without_stream
bool
default=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_limit
int
default=0
Максимальное значение для поля
limit
в поисковых запросах. -
max_search_total_limit
int
default=1e6
Если поисковый запрос возвращает количество событий, превышающее
max_search_total_limit
, то возвращается ошибка. -
max_search_offset_limit
int
default=1e6
Максимальное значение для поля
offset
в поисковых запросах. -
max_export_limit
int
default=0
Максимальное значение для поля
limit
в запросах на экспорт. -
seq_cli_max_search_limit
int
default=0
Максимальное количество событий, которое мож ет быть получено за одну команду поиска в seq-cli.
-
max_parallel_export_requests
int
default=1
Максимальное количество параллельных запросов на экспорт. Если настроена авторизация, то каждый пользователь получает персональную квоту, в противном случае квота является общей для всех запросов. Если установлено нулевое или отрицательное значение, то оно будет сброшено на
default
. -
max_aggregations_per_request
int
default=1
Максимальное количество аггрегаций за один поисковый запрос. Если установлено нулевое или отрицательное значение, то оно будет сброшено на
default
. -
max_buckets_per_aggregation_ts
int
default=200
Максимальное количество бакетов за один запрос аггрегации с таймсерией. Количество бакетов рассчитывается как (
to
-from
) /interval
. Если установлено нулевое или отрицательное значение, то оно будет сброшено наdefault
. -
events_cache_ttl
string
default="24h"
TTL кэширования событий. Если уст ановлено нулевое или отрицательное значение, то оно будет сброшено на
default
.Значение должно быть передано в
duration
-формате:<число>(ms|s|m|h)
. -
logs_lifespan_cache_key
string
default="logs_lifespan"
Ключ кэширования данных о времени жизни логов. Полезно, когда несколько инстансов seq-ui используют один Redis-кэш. Если установлена пустая строка, то она будет сброшена на
default
. -
logs_lifespan_cache_ttl
string
default="10m"
TTL кэширования данных о времени жизни логов. Если установлено нулевое или отрицательное значение, то оно будет сброшено на
default
.Значение должно быть передано в
duration
-формате:<число>(ms|s|m|h)
. -
fields_cache_ttl
string
default="0"
TTL кэширования индексируемых полей. Нулевое значение означает, что кэширование не происходит.
Значение должно быть передано в
duration
-формате:<число>(ms|s|m|h)
. -
pinned_fields
[]PinnedField
default=[]
Список полей, которые будут закреплены в пользовательском интерфейсе.
Поля
PinnedField
:-
name
string
required
Имя поля.
-
type
string
required
options="text"|"keyword"
Тип поля.
-
Error groups
error_groups
ErrorGroups
optional
Конфигурация /errorgroups
API.
Поля ErrorGroups
:
-
log_tags_mapping
LogTagsMapping
optional
Сопоставление имен ClickHouse-столбцов и ключей в столбце
log_tags
.Поля
LogTagsMapping
:-
release
[]string
default=[]
Ключи
log_tags
для столбцаrelease
.
-
-
query_filter
map[string]string
optional
Дополнительные условия, которые будут добавлены к запросам в СlickHouse.
Mass export
mass_export
MassExport
optional
Конфигурация /massexport
API.
Поля MassExport
:
-
batch_size
int
default=10000
Количество событий, извлекаемых из
seq-db
, за один запрос. -
workers_count
int
required
Количество "воркеров", параллельно выгружающих события из
seq-db
и загружающих их в хранилище файлов. Значение должно быть неотрицательным. -
tasks_channel_size
int
default=10000000
Размер канала, содержащего временные сегменты экспорта. Значение должно быть неотрицательным.
-
part_length
string
default="1h"
Отрезок времени, за который хранятся события в одном файле.
Значение должно быть передано в
duration
-формате:<число>(ms|s|m|h)
. -
url_prefix
string
required
URL-префикс для формирования ссылок на файлы в S3. Значение должно быть непустой строкой.
-
allowed_users
[]string
default=[]
Список пользователей, которым разрешено использовать
/massexport
API. Если задан пустой список, то API доступно для всех пользователей. В этом случае отображаемое имя -anonymous
. -
file_store
FileStore
required
Конфигурация файлового хранилища.
-
session_store
SessionStore
required
Конфигурация хранилища сессий.
-
seq_proxy_downloader
SeqProxyDownloader
required
Конфигурация клиента seq-db proxy.
Поля FileStore
:
-
s3
S3
required
Конфигурация S3.
Поля
S3
:endpoint
string
required
access_key_id
string
required
secret_access_key
string
required
bucket_name
string
required
enable_ssl
bool
default=false
Поля SessionStore
:
-
redis
Redis
required
Конфигурация Redis в качестве хранилища сессий. Для деталей смотрите
Redis
в разделе Кэш. -
export_lifetime
string
default="168h"
Время жизни ключей в хранилище сессий.
Поля SeqProxyDownloader
:
-
delay
string
default="1s"
Задержка между поисковыми запросами в seq-db.
Значение должно быть передано в
duration
-формате:<число>(ms|s|m|h)
. -
initial_retry_backoff
string
default="0"
Начальная задержка между повторными попытками. Если значение меньше, чем
delay
, то значениеdelay
будет сброшено наinitial_retry_backoff
.Значение должно быть передано в
duration
-формате:<число>(ms|s|m|h)
. -
max_retry_backoff
string
default="0"
Максимальная задержка между повторными попытками. Если значение меньше, чем
initial_retry_backoff
, то значениеinitial_retry_backoff
будет сброшено наmax_retry_backoff
Значение должно быть передано в
duration
-формате:<число>(ms|s|m|h)
.