APIサーバー設定


Bencher APIサーバーは、起動時にJSON構成を必要とします。 構成は以下の3つの方法で提供可能です:

  • 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"
},
"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": {
"busy_timeout": 5000,
"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トークン(JWT)の発行者を指定します。 警告 この値を変更すると、すでに生成されたすべてのJWTの検証ができなくなります。
secret_key“UJu7Cpxb-zFaJYqXD-3mDDSDyj-ZvfxZFZs-X58xjxPy”Random UUID v4はいすべてのトークンを生成するために使用されるキーを指定します。 非常に安全であるべきです! デフォルト値はランダムに生成された UUID v4です。ログに記録されるとき、それは絶対に ************ と表示されます。

server

このセクションは Dropshotサーバー設定 に基づいています。

名前例例デフォルト必須説明
bind_address“0.0.0.0:61016”“0.0.0.0:61016”はいサーバーが指定されたIPアドレスとTCPポートにバインドする必要があることを指定します。一般的に、サーバーは複数のIPアドレスとポートにバインドすることができますが、これはまだサポートされていません。
request_body_max_bytes10485761048576はい要求の本文で許容されるバイト数の最大値を指定します。大きな要求は400のエラーを受け取ります。
tls.type“as_file”---いいえTLS証明書とキー情報が提供される場合と方法を指定します。有効な値には “as_file” と “as_bytes” が含まれます。
tls.cert_file“/path/to/cert.pem”---if tls.type = as_fileサーバーが自身を識別するための証明書チェーンを含むPEMファイルへのパスを指定します。最初の証明書はエンドエンティティ証明書であり、残りは信頼できるCAへの途中の中間証明書です。指定された場合、サーバーはTLS接続のみを受け付けます。
tls.key_file“/path/to/key.pem”---if tls.type = as_fileサーバーが使用するプライベートキーを含むPKCS#8ファイルへのパスを指定します。指定した場合、サーバーはTLS接続のみをリッスンします。
tls.certs------if tls.type = as_bytestls.cert_fileと同じですが、証明書データのバイト配列として提供されます。
tls.key------if tls.type = as_bytestls.key_fileと同じですが、キーデータのバイト配列として提供されます。

logging

このセクションは、Dropshot logging configurationに基づいています。

名前デフォルト値必須項目説明
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 アクセスキー 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ライセンスでカバーされる機能について説明しています。

plus.github

このセクションでは、OAuth2認証に使用されるGitHubアプリの設定を指定します。 サーバー上の少なくとも1つの組織に対して有効なBencher Plus エンタープライズ ライセンスが必要です。 このセクション全体はオプションです。 指定しない場合、GitHubによる認証は有効になりません。

名前デフォルト必須説明
client_idIv1.12864abcd1232048---はいGitHub AppのクライアントIDを指定します。クライアントIDはアプリIDとは異なります。クライアントIDはアプリの設定ページで確認できます。GitHub Appの設定ページへの移動についての詳細は、GitHub Appの登録の変更を参照してください。
client_secret00000abcd12345wxyz123456789abcdefgh0000---はいこの項目では、GitHubアプリのクライアントシークレットを指定します。クライアントシークレットはアプリの設定ページで生成できます。

plus.disaster_recovery

このセクションは、災害復旧の設定を指定します。 Bencherはデータベースの全ての変更を継続的に複製することをサポートします。 オンデマンドまたは定期バックアップを実行するには、設定の database.data_store セクションをご覧ください。

複製には4つのスキームがあります:

  • file: ローカルファイルパスに複製
    • path: 複製先のパス
  • sftp: SFTPを使用して複製
    • host: 目標システムのホスト名
    • port: 目標システムのポート番号
    • user: 目標システムのユーザー名
    • password: (任意) 目標システムのパスワード
    • path: (任意) 目標システムのパス
    • key_path: (任意) SSHキーのパス
  • s3: S3互換の任意のブロブストレージに複製
    • 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 Cloudストレージに複製
    • bucket: バケット名
    • path: (任意) バケット内のパス
    • GOOGLE_APPLICATION_CREDENTIALS: サービスアカウントの資格情報を指すファイルパスに設定される環境変数

4つの複製スキーム全てに共通の追加オプションがあります:

  • retention: (任意) スナップショットおよびWALファイルが保持される時間。保持期間の後、新しいスナップショットが作成され、古いものは削除されます。最も古いスナップショットよりも前に存在するWALファイルも削除されます。デフォルトは 24h です。
  • retention_check_interval: (任意) Bencherが保持を強制する必要があるかどうかをどの頻度でチェックするかを指定します。デフォルトは 1h です。
  • snapshot_interval: (任意) 新しいスナップショットが作成される頻度を指定します。新しいスナップショットは適用されるWALフレームが少ないため、復元時間が短縮されます。保持はこれらのスナップショットにも適用されます。スナップショットの間隔を設定しない場合は、保持が行われるたびに新しいスナップショットが作成されます。保持はデフォルトで24時間ごとに行われます。
  • validation_interval: (任意) 指定された場合、Bencherは自動的に復元し、複製データがローカルコピーと一致するかどうかを検証します。デフォルトでは無効になっています。これを有効にすると、ほとんどのクラウドサービスがダウンロードに料金を課すため、Bencherの実行コストが大幅に増加する可能性があります。
  • sync_interval: (任意) フレームが複製にプッシュされる頻度。デフォルトは 1s です。頻度を上げるとクラウドストレージコストが大幅に増加する可能性があります。
名前デフォルト必須説明
busy_timeout50005000Noデータベースのビジータイムアウトをミリ秒単位で指定します。
replicas[ … ]---はい複製の配列を指定します。
replicas[replica]{ … }---はい複製オブジェクトを指定します。
replicas[replica].scheme“s3”---はい複製スキームを指定します。 その他の replica キーについては、上記のリストを参照してください。

plus.stats

このセクションは、サーバー統計がどのくらいの頻度で収集されるのかを指定します。 このセクション全体は任意です。 何も指定されない場合は、リストされたデフォルト値が使用されます。 つまり、サーバー統計はオプトアウトです。 サーバー統計を無効にするには、enabledfalseに設定します。

名前デフォルト必須説明
offset1124211242いいえサーバー統計の収集を深夜から何秒後に開始するかを指定します。デフォルトでは03:07:22 UTCに実行されます。
enabledtruetrueいいえサーバー統計の収集を制御します。falseに設定してオプトアウトします。


Published: Fri, October 27, 2023 at 8:40:00 AM UTC | Last Updated: Fri, June 21, 2024 at 6:14:00 PM UTC