API 服务器配置


Bencher API服务器在启动时需要一个JSON配置。 配置可以通过三种方式提供:

  • BENCHER_CONFIG 环境变量: 值应设置为JSON配置
  • BENCHER_CONFIG_PATH 环境变量: 值应设置为包含JSON配置的文件的路径
  • 包含JSON配置的文件位于./bencher.json,相对于服务器可执行文件

如果找不到配置,则加载默认配置。

服务器运行时,管理员可以使用 CLI bencher server config update 命令更新配置, 该命令会触发 PUT /v0/server/config 路由。 所有更新的配置都保存到 BENCHER_CONFIG 环境变量 和磁盘上的 BENCHER_CONFIG_PATH

JSON配置示例:

{
"console": {
"url": "https://bencher.example.com"
},
"security": {
"issuer": "https://api.bencher.example.com",
"secret_key": "UJu7Cpxb-zFaJYqXD-3mDDSDyj-ZvfxZFZs-X58xjxPy"
},
"server": {
"bind_address": "0.0.0.0:61016",
"request_body_max_bytes": 1048576,
"tls": {
"type": "as_file",
"cert_file": "/path/to/cert.pem",
"key_file": "/path/to/key.pem"
}
},
"logging": {
"name": "Bencher API",
"log": {
"stderr_terminal": {
"level": "info"
}
},
},
"database": {
"file": "/var/lib/bencher/data/bencher.db",
"data_store": {
"service": "aws_s3"
"access_key_id": "ABC123DoRemMiABC123",
"secret_access_key": "AA3Chr-JSF5sUQqKwayx-FvCfZKsMev-5BqPpcFC3m7",
"access_point": "arn:aws:s3:some-region-1:123456789:accesspoint/my-bucket/path/to/backup/dir"
}
},
"smtp": {
"hostname": "mailbonobo.com",
"port": 587,
"starttls": true,
"username": "bencher"
"secret": "WM3F2u9cqSNdBPLfy9sJ5kk9",
"from_name": "Bencher",
"from_email": "info@bencher.example.com"
},
"plus": {
"disaster_recovery": {
"replicas": [
{
"scheme": "s3",
"bucket": "my-bucket",
"path": "path/to/replicate",
"access_key_id": "ABC123DoRemMiABC123",
"secret_access_key": "AA3Chr-JSF5sUQqKwayx-FvCfZKsMev-5BqPpcFC3m7"
}
]
},
"stats": {
"offset": 11242,
"enabled": true
}
}
}

console

名称示例默认值是否必填描述
urlhttps://bencher.example.comhttp://localhost:3000指定Bencher UI控制台主机的URL。

security

名称示例默认值是否必填描述
issuerhttps://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地址和端口,但这还不支持。默认为”127.0.0.1:0”。
request_body_max_bytes10485761048576指定请求体允许的最大字节数。更大的请求将收到一个400错误。默认为1024。
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 主机名。
port587587指定 SMTP 端口。
starttlstruetrue控制 SMTP 连接是否使用 STARTTLS 协议。
username“bencher”---指定 SMTP 主机的用户名。
secret“WM3F2u9cqSNdBPLfy9sJ5kk9”---指定 SMTP 主机的用户密钥。当进行记录时,它将显示为 ************
from_name“Bencher”---指定将出现在所有邮件发件人部分的名称。
from_emailinfo@bencher.example.com---指定将出现在所有邮件发件人部分的电子邮件。

plus

此部分用于介绍由Bencher Plus License覆盖的特性。

plus.github

此部分指定了用于 OAuth2 认证的 GitHub 应用的配置。 服务器上至少有一个组织必须拥有有效的 Bencher Plus 企业 许可证。 整个部分是可选的。 如果未指定,则不会启用与 GitHub 的认证。

名称示例默认值是否必要描述
client_idIv1.12864abcd1232048---为您的 GitHub App 指定 client ID。client ID 与 app ID 不同。您可以在应用的设置页面上找到 client ID。有关导航到 GitHub 应用设置页面的更多信息,请参见 修改 GitHub App 注册.
client_secret00000abcd12345wxyz123456789abcdefgh0000---您的 GitHub 应用的client secret。您可以在应用的设置页面上生成 client secret。

plus.stats

该部分指定是否以及何时收集服务器统计信息。 整个部分是可选的。 如果未指定,将使用列出的默认值。 也就是说,服务器统计信息是默认启用的。 设置enabledfalse以禁用服务器统计。

名称示例默认是否必需描述
offset1124211242指定从午夜开始以秒为单位的偏移量以收集服务器统计信息。默认情况下,它在03:07:22 UTC进行运行。
enabledtruetrue控制是否收集服务器统计信息。设置为false以选择不收集。