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” | ”http://localhost:3000” | はい | Bencher UIコンソールホストのURLを指定します。 |
security
名前 | 例 | デフォルト | 必須 | 説明 |
---|---|---|---|---|
issuer | ”https://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_bytes | 1048576 | 1048576 | はい | 要求の本文で許容されるバイト数の最大値を指定します。大きな要求は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_bytes | tls.cert_fileと同じですが、証明書データのバイト配列として提供されます。 |
tls.key | --- | --- | if tls.type = as_bytes | tls.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 ホスト名を指定します。 |
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ライセンスでカバーされる機能について説明しています。
plus.github
このセクションでは、OAuth2認証に使用されるGitHubアプリの設定を指定します。 サーバー上の少なくとも1つの組織に対して有効なBencher Plus エンタープライズ ライセンスが必要です。 このセクション全体はオプションです。 指定しない場合、GitHubによる認証は有効になりません。
名前 | 例 | デフォルト | 必須 | 説明 |
---|---|---|---|---|
client_id | Iv1.12864abcd1232048 | --- | はい | GitHub AppのクライアントIDを指定します。クライアントIDはアプリIDとは異なります。クライアントIDはアプリの設定ページで確認できます。GitHub Appの設定ページへの移動についての詳細は、GitHub Appの登録の変更を参照してください。 |
client_secret | 00000abcd12345wxyz123456789abcdefgh0000 | --- | はい | この項目では、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_timeout | 5000 | 5000 | No | データベースのビジータイムアウトをミリ秒単位で指定します。 |
replicas | [ … ] | --- | はい | 複製の配列を指定します。 |
replicas[replica] | { … } | --- | はい | 複製オブジェクトを指定します。 |
replicas[replica].scheme | “s3” | --- | はい | 複製スキームを指定します。 その他の replica キーについては、上記のリストを参照してください。 |
plus.stats
このセクションは、サーバー統計がどのくらいの頻度で収集されるのかを指定します。
このセクション全体は任意です。
何も指定されない場合は、リストされたデフォルト値が使用されます。
つまり、サーバー統計はオプトアウトです。
サーバー統計を無効にするには、enabled
をfalse
に設定します。
名前 | 例 | デフォルト | 必須 | 説明 |
---|---|---|---|---|
offset | 11242 | 11242 | いいえ | サーバー統計の収集を深夜から何秒後に開始するかを指定します。デフォルトでは03:07:22 UTCに実行されます。 |
enabled | true | true | いいえ | サーバー統計の収集を制御します。false に設定してオプトアウトします。 |