Конфигурация API сервера
Сервер API Bencher требует JSON-конфигурацию при запуске. Конфигурация может быть предоставлена тремя способами:
- Переменная окружения
BENCHER_CONFIG
: Значение должно быть установлено как JSON-конфигурация - Переменная окружения
BENCHER_CONFIG_PATH
: Значение должно быть установлено как путь к файлу, содержащему JSON-конфигурацию - Файл
/etc/bencher/bencher.json
: Файл в этом расположении, содержащий JSON-конфигурацию
Если конфигурация не найдена, загружается конфигурация по умолчанию.
Для обновления конфигурации во время работы сервера администратор может использовать команду CLI bencher server config update
,
которая обращается к PUT /v0/server/config
endpoint.
Все обновленные конфигурации сохраняются в переменной окружения BENCHER_CONFIG
и на диске по пути BENCHER_CONFIG_PATH
.
Пример JSON-конфигурации:
console
Имя | Пример | По умолчанию | Обяз. | Описание |
---|---|---|---|---|
url | ”https://bencher.example.com” | ”http://localhost:3000” | Да | Указывает URL для хоста консоли Bencher UI. |
security
Имя | Пример | По умолчанию | Обяз. | Описание |
---|---|---|---|---|
issuer | ”https://api.bencher.example.com” | “bencher.dev” | Нет | Указывает выпускающий орган JSON Web Token (JWT). ВНИМАНИЕ Изменение этого значения приведет к тому, что все ранее созданные JWT больше не проходят проверку. |
secret_key | “UJu7Cpxb-zFaJYqXD-3mDDSDyj-ZvfxZFZs-X58xjxPy” | Случайный UUID v4 | Да | Указывает ключ, используемый для генерации всех токенов. ОН ДОЛЖЕН БЫТЬ ОЧЕНЬ БЕЗОПАСНЫМ! Значение по умолчанию - это случайно сгенерированный UUID v4. При записи он будет выглядеть как ************ . |
server
Этот раздел основан на конфигурации сервера Dropshot.
Имя | Пример | По умолчанию | Обяз. | Описание |
---|---|---|---|---|
bind_address | “0.0.0.0:61016” | “0.0.0.0:61016” | Да | Указывает, что сервер должен привязываться к данному IP-адресу и TCP-порту. В общем случае серверы могут привязываться к более чем одному IP-адресу и порту, но это пока не поддерживается. |
request_body_max_bytes | 1048576 | 1048576 | Да | Указывает максимальное количество байт, разрешенное в теле запроса. Большие запросы получат ошибку 400. |
tls.type | “as_file” | --- | Нет | Указывает, используется ли и как информация о сертификате и ключе TLS. Действительные значения включают “as_file” и “as_bytes”. |
tls.cert_file | “/path/to/cert.pem” | --- | Только если tls.type = as_file | Указывает путь к файлу PEM, содержащему сертификат для идентификации сервера. Первый сертификат - это конечный сертификат субъекта, а оставшиеся - промежуточные сертификаты на пути к доверенному CA. Если указано, сервер будет прослушивать только TLS-соединения. |
tls.key_file | “/path/to/key.pem” | --- | Только если tls.type = as_file | Указывает путь к файлу PEM, содержащему закрытый ключ, который будет использовать сервер. Если указано, сервер будет прослушивать только TLS-соединения. |
tls.certs | --- | --- | Только если tls.type = as_bytes | То же, что и tls.cert_file, но предоставляемое в виде массива байт данных сертификата. |
tls.key | --- | --- | Только если tls.type = as_bytes | То же, что и tls.key_file, но предоставляемое в виде массива байт данных ключа. |
logging
Этот раздел основан на конфигурации журнала Dropshot.
Имя | Пример | По умолчанию | Обязательно | Описание |
---|---|---|---|---|
name | “Bencher API” | “Bencher API” | Да | Задает название логгера. |
log.mode | “stderr_terminal” | “stderr_terminal” | Да | Управляет расположением журнала сервера. Допустимые режимы - “stderr_terminal” и “file”. Если режим - `“stderr_terminal”, человеко-читаемый вывод, возможно, с цветами и другим форматированием терминала, будет отправлен в stderr. Если режим - “file”, вывод в формате Bunyan будет отправлен на путь в файловой системе, заданный log.path. Смотрите также log.if_exists, который контролирует поведение, если путь назначения уже существует. |
log.level | “info” | “info” | Да | Задает уровень тяжести сообщений в логе. Допустимые значения включают “trace”, “debug”, “info”, “warn”, “error” и “critical”, которые отражают растущую тяжесть. Сообщения лога указанного уровня и более высоких уровней будут включены в лог. |
log.path | --- | --- | Только если log.mode = “file” | Если log.mode равно “file”, это свойство определяет путь к файлу журнала. Смотри также log.if_exists. |
log.if_exists | --- | --- | Только если log.mode = “file” | Если log.mode равно “file”, это свойство задает что делать, если файл журнала уже существует. Допустимые значения включают “append” (что добавляет к существующему файлу), “truncate” (приведение существующего файла к изначальному), и “fail” (сервер немедленно остановит работу с выводом ошибки). |
database
Имя | Пример | По умолчанию | Обязательно | Описание |
---|---|---|---|---|
file | “path/to/database.db” | “/var/lib/bencher/data/bencher.db” | Да | Управляет расположением базы данных сервера. |
data_store.service | “aws_s3” | --- | Нет | Задает внешний сервис для хранения данных. Допустимые значения - “aws_s3”. |
data_store.access_key_id | “ABC123DoRemMiABC123” | --- | Только если data_store.service = “aws_s3” | Если data_store.service = “aws_s3”, это свойство указывает идентификатор ключа доступа AWS. Смотрите также data_store.service. |
data_store.secret_access_key | “AA3Chr-JSF5sUQqKwayx-FvCfZKsMev-5BqPpcFC3m7” | --- | Только если data_store.service = “aws_s3” | Если data_store.service = “aws_s3”, это свойство указывает секретный ключ доступа AWS. Смотрите также data_store.service. При логировании он будет обфусцирован как ************ . |
data_store.access_point | “arn:aws:s3:some-region-1:123456789:accesspoint/my-bucket/path/to/backup/dir” | --- | Только если data_store.service = “aws_s3” | Если data_store.service = “aws_s3”, это свойство указывает точку доступа AWS S3. Смотрите также data_store.service. |
smtp
В этом разделе указывается конфигурация сервиса SMTP.
Весь раздел является необязательным.
Если он не указан, все сообщения будут отправляться в logging
.
Имя | Пример | По умолчанию | Обязательно | Описание |
---|---|---|---|---|
hostname | “mailbonobo.com” | --- | Да | Задает адрес SMTP. |
port | 587 | 587 | Нет | Задает порт SMTP. |
starttls | true | true | Нет | Управляет применением протокола STARTTLS для соединения SMTP. |
username | “bencher” | --- | Да | Задает имя пользователя на хосте SMTP. |
secret | “WM3F2u9cqSNdBPLfy9sJ5kk9” | --- | Да | Указывает пароль для имени пользователя на хосте SMTP. При логировании он будет обфусцирован как ************ . |
from_name | “Bencher” | --- | Да | Задает имя, которое будет отображаться в секции “от кого” во всех электронных письмах. |
from_email | ”info@bencher.example.com” | --- | Да | Устанавливает адрес электронной почты, который будет отображаться в секции “от кого” во всех электронных письмах. |
plus
Этот раздел посвящен функциям, которые покрываются лицензией Bencher Plus.
plus.github
В этом разделе указывается конфигурация приложения GitHub, используемого для аутентификации OAuth2. У вас должна быть действующая лицензия Bencher Plus Enterprise для хотя бы одной организации на сервере. Весь раздел является необязательным. Если он не указан, то аутентификация с помощью GitHub не будет включена.
Название | Пример | По умолчанию | Обязательно | Описание |
---|---|---|---|---|
client_id | Iv1.12864abcd1232048 | --- | Да | Указывает идентификатор клиента для вашего приложения GitHub. Идентификатор клиента отличается от идентификатора приложения. Вы можете найти идентификатор клиента на странице настроек вашего приложения. Для получения дополнительной информации о переходе на страницу настроек вашего приложения GitHub, см. Изменение регистрации приложения GitHub. |
client_secret | 00000abcd12345wxyz123456789abcdefgh0000 | --- | Да | Секретный ключ клиента для вашего приложения GitHub. Вы можете сгенерировать секретный ключ на странице настроек вашего приложения. |
plus.disaster_recovery
Этот раздел описывает конфигурацию восстановления после аварий.
Bencher поддерживает непрерывное реплицирование всех изменений базы данных.
Для выполнения резервных копий по запросу или по расписанию, см. раздел конфигурации database.data_store
.
Существует четыре схемы репликации:
file
: Реплицирование в локальную файловую системуpath
: Путь для репликации
sftp
: Реплицирование по SFTPhost
: Имя хоста целевой системыport
: Номер порта целевой системыuser
: Имя пользователя на целевой системеpassword
: (Опционально) Пароль на целевой системеpath
: (Опционально) Путь на целевой системеkey_path
: (Опционально) Путь к SSH ключу
s3
: Реплицирование в любое совместимое S3 хранилищеbucket
: Имя bucketpath
: (Опционально) Путь в bucketendpoint
: (AWS: Опционально | Не AWS: Обязательно) Конечная точка репликацииregion
: (Опционально) Регион bucketaccess_key_id
: Ключ доступа S3secret_access_key
: Секретный ключ доступа S3
abs
: Реплицирование в Azure Blob Storageaccount_name
: Имя учетной записиbucket
: Имя bucketpath
: (Опционально) Путь в bucketaccount_key
: Ключ учетной записи Azure
gcs
: Реплицирование в Google Cloud Storagebucket
: Имя bucketpath
: (Опционально) Путь в bucketGOOGLE_APPLICATION_CREDENTIALS
: Переменная окружения, указывающая на путь к файлу с учетными данными сервисного аккаунта
Все четыре схемы репликации имеют следующие дополнительные опции:
retention
: (Опционально) Время, в течение которого будут сохраняться файлы snapshot и WAL. По истечении этого времени будет создан новый snapshot, а старый будет удален. Файлы WAL, которые существуют до самого старого snapshot, также будут удалены. Значение по умолчанию:24h
.retention_check_interval
: (Опционально) Указывает, как часто Bencher будет проверять необходимость применения политики retention. Значение по умолчанию:1h
.snapshot_interval
: (Опционально) Указывает, как часто будут создаваться новые snapshots. Это используется для уменьшения времени восстановления, так как новые snapshots будут содержать меньшее количество WAL кадров для применения. Политика retention также применяется к этим snapshots. Если вы не указываете интервал создания snapshot, то новый snapshot будет создан при каждом выполнении retention. По умолчанию retention выполняется каждые 24 часа.validation_interval
: (Опционально) Если указано, Bencher автоматически восстановит и проверит, что данные на реплике соответствуют локальной копии. По умолчанию отключено. Включение этой функции может значительно увеличить стоимость запуска Bencher, так как большинство облачных сервисов взимают плату за загрузки.sync_interval
: (Опционально) Частота, с которой кадры передаются на реплику. Значение по умолчанию:1s
. Увеличение частоты может значительно повысить затраты на облачное хранилище.
Имя | Пример | По умолчанию | Обязательно | Описание |
---|---|---|---|---|
busy_timeout | 5000 | 5000 | Нет | Указывает тайм-аут занятости для базы данных в миллисекундах. |
replicas | [ … ] | --- | Да | Указывает массив реплик. |
replicas[replica] | { … } | --- | Да | Указывает объект реплики. |
replicas[replica].scheme | “s3” | --- | Да | Указывает схему репликации. Для всех остальных ключей replica см. список выше. |
plus.stats
В этом разделе указывается, собираются ли и когда статистические данные сервера.
Весь раздел является необязательным.
Если он не указан, будут использованы перечисленные значения по умолчанию.
То есть, статистика сервера собирается, если вы на это не отказываетесь.
Установите значение enabled
в false
, чтобы отключить сбор статистики сервера.
Название | Пример | По умолчанию | Обязательно | Описание |
---|---|---|---|---|
offset | 11242 | 11242 | Нет | Определяет смещение от полуночи в секундах для сбора статистики сервера. По умолчанию это происходит в 03:07:22 UTC. |
enabled | true | true | Нет | Контролирует, собирается ли статистика сервера. Установите значение false , чтобы отказаться. |