Перейти к основному содержимому

Конфигурация

Несмотря на то, что в конфигурации имеется огромное количество параметров, не все из них на данный момент поддерживаются пользовательским интерфейсом. По мере развития пользовательского интерфейса бОльшее количество параметров станет актуальным.

Конфигурация задается 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).