API 服务器配置
Bencher API 服务器在启动时需要一个 JSON 配置。 这个配置可以通过以下三种方式提供:
BENCHER_CONFIG
环境变量:该值应设置为 JSON 配置BENCHER_CONFIG_PATH
环境变量:该值应设置为包含 JSON 配置文件的路径/etc/bencher/bencher.json
文件:此位置的文件包含 JSON 配置
如果没有找到配置,则加载默认配置。
要在服务器运行时更新配置,
管理员可以使用 CLI bencher server config update
命令,
它访问 PUT /v0/server/config
端点。
所有更新后的配置都会保存到 BENCHER_CONFIG
环境变量中,
并且在磁盘上的 BENCHER_CONFIG_PATH
。
示例 JSON 配置:
console
名称 | 示例 | 默认值 | 是否必填 | 描述 |
---|---|---|---|---|
url | ”https://bencher.example.com” | ”http://localhost:3000” | 是 | 指定Bencher UI控制台主机的URL。 |
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编码的PKCS #8文件的路径,该文件包含服务器将使用的私钥。如果指定,服务器只会为TLS连接监听。 |
tls.certs | --- | --- | 只有当 tls.type = as_bytes 时 | 和 tls.cert_file 相同,但以证书数据的字节数组形式提供。 |
tls.key | --- | --- | 只有当 tls.type = as_bytes 时 | 和 tls.key_file 相同,但以键数据的字节数组形式提供。 |
logging
本节基于 Dropshot logging 配置。
名称 | 例子 | 默认值 | 必选项 | 说明 |
---|---|---|---|---|
name | “Bencher API” | “Bencher API” | 是 | 指定日志记录器的名称。 |
log.mode | “stderr_terminal” | “stderr_terminal” | 是 | 控制服务器日志记录的去向。有效模式为 “stderr_terminal” 和 “file”。如果模式是"stderr-terminal" ,则以彩色及可能的其他终端格式化的方式将可读输出发送至标准错误。如果模式是 “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 访问密钥 ID。参见 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 | 否 | 控制 SMTP 连接是否使用 STARTTLS 协议。 |
username | “bencher” | --- | 是 | 指定 SMTP 主机的用户名。 |
secret | “WM3F2u9cqSNdBPLfy9sJ5kk9” | --- | 是 | 指定 SMTP 主机的用户密钥。当进行记录时,它将显示为 ************ 。 |
from_name | “Bencher” | --- | 是 | 指定将出现在所有邮件发件人部分的名称。 |
from_email | ”info@bencher.example.com” | --- | 是 | 指定将出现在所有邮件发件人部分的电子邮件。 |
plus
此部分用于介绍由Bencher Plus License覆盖的特性。
plus.github
此部分指定了用于 OAuth2 认证的 GitHub 应用的配置。 服务器上至少有一个组织必须拥有有效的 Bencher Plus 企业 许可证。 整个部分是可选的。 如果未指定,则不会启用与 GitHub 的认证。
名称 | 示例 | 默认值 | 是否必要 | 描述 |
---|---|---|---|---|
client_id | Iv1.12864abcd1232048 | --- | 是 | 为您的 GitHub App 指定 client ID。client ID 与 app ID 不同。您可以在应用的设置页面上找到 client ID。有关导航到 GitHub 应用设置页面的更多信息,请参见 修改 GitHub App 注册. |
client_secret | 00000abcd12345wxyz123456789abcdefgh0000 | --- | 是 | 您的 GitHub 应用的client secret。您可以在应用的设置页面上生成 client secret。 |
plus.disaster_recovery
此部分指定了灾难恢复配置。
Bencher支持连续复制所有数据库更改。
欲了解按需运行或计划备份,请参阅配置中的database.data_store
部分。
有四种复制scheme
:
file
: 复制到本地文件路径path
: 复制路径
sftp
: 通过SFTP复制host
: 目标系统主机名port
: 目标系统端口号user
: 目标系统的用户名password
: (可选)目标系统的密码path
: (可选)目标系统中的路径key_path
: (可选)SSH密钥路径
s3
: 复制到任何S3兼容的Blob存储bucket
: 存储桶名称path
: (可选)存储桶中的路径endpoint
: (AWS:可选 | 非AWS:必需)复制端点region
: (可选)存储桶区域access_key_id
: S3访问密钥secret_access_key
: S3密钥
abs
: 复制到Azure Blob存储account_name
: 账户名称bucket
: 存储桶名称path
: (可选)存储桶中的路径account_key
: Azure账户密钥
gcs
: 复制到Google云存储bucket
: 存储桶名称path
: (可选)存储桶中的路径GOOGLE_APPLICATION_CREDENTIALS
: 环境变量设置为指向服务账户凭据文件的路径
以上四种复制scheme
均有以下附加选项:
retention
: (可选)快照和WAL文件保留的时间。保留期过后,会创建新的快照并删除旧的。在最旧快照之前存在的WAL文件也将被删除。默认值为24h
。retention_check_interval
: (可选)指定Bencher检查是否需要执行保留的频率。默认值为1h
。snapshot_interval
: (可选)指定创建新快照的频率。这用于减少恢复时间,因为较新的快照将有较少的WAL帧需要应用。保留仍然适用于这些快照。如果未设置快照间隔,则每次执行保留时都会创建新快照。 默认情况下,每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 以选择不收集。 |