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"        }      ]    },    "rate_limiting": {      "window": 86400,      "user_limit": 255,      "unclaimed_limit": 255,      "claimed_limit": 65536,    },    "stats": {      "offset": 11242,      "enabled": true    }  }}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ポートを指定します。 | 
| insecure_host | --- | false | いいえ | SMTP接続で無効なTLS証明書を許可するかどうかを制御します。 | 
| starttls | true | true | いいえ | SMTP接続でSTARTTLSプロトコルを使用するかどうかを制御します。 | 
| username | ”bencher” | --- | はい | SMTPホストでのユーザー名を指定します。 | 
| secret | ”WM3F2u9cqSNdBPLfy9sJ5kk9” | --- | はい | SMTPホストでのユーザー名の秘密を指定します。ログに記録される際には、 ************として隠蔽されます。 | 
| from_name | ”Bencher” | --- | はい | すべてのメールのfromセクションに表示される名前を指定します。 | 
| from_email | ”info@bencher.example.com” | --- | はい | すべてのメールのfromセクションに表示されるメールを指定します。 | 
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.google
このセクションでは、OAuth2 認証に使用される Google クライアント の設定を指定します。 サーバー上の少なくとも1つの組織に対して有効な Bencher Plus Enterprise ライセンスが必要です。 このセクションは任意です。指定しない場合、Googleによる認証は有効になりません。
| Name | Example | Default | Required | Description | 
|---|---|---|---|---|
| client_id | 0123456789-abcdefg0112358envs.apps.googleusercontent.com | --- | はい | Google OAuth2 クライアントの client ID を指定します。 | 
| client_secret | GOCSPX-xyz987654321 | --- | はい | Google OAuth2 クライアントの client secret です。 | 
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.rate_limiting
このセクションでは、APIサーバーのレート制限を指定します。 このセクション全体はオプションです。 指定しない場合、リストされたデフォルト値が使用されます。
unclaimedプロジェクトの作成を防ぐには、
unclaimed_limitを0に設定します。
| 名前 | 例 | デフォルト | 必須 | 説明 | 
|---|---|---|---|---|
| window | 86400 | 86400 | いいえ | レート制限ウィンドウを秒数で指定します。デフォルトでは1日に設定されています。 | 
| user_limit | 255 | 255 | いいえ | ユーザーが作成した特定のリソース(組織やAPIトークン)のレート制限を制御します。 | 
| unclaimed_limit | 255 | 255 | いいえ | unclaimedプロジェクトのレート制限を制御します。unclaimedプロジェクトの作成を防ぐには、この値を0に設定します。 | 
| claimed_limit | 65536 | 65536 | いいえ | claimedプロジェクトのレート制限を制御します。 | 
plus.stats
このセクションは、サーバー統計がどのくらいの頻度で収集されるのかを指定します。
このセクション全体は任意です。
何も指定されない場合は、リストされたデフォルト値が使用されます。
つまり、サーバー統計はオプトアウトです。
サーバー統計を無効にするには、enabledをfalseに設定します。
| 名前 | 例 | デフォルト | 必須 | 説明 | 
|---|---|---|---|---|
| offset | 11242 | 11242 | いいえ | サーバー統計の収集を深夜から何秒後に開始するかを指定します。デフォルトでは03:07:22 UTCに実行されます。 | 
| enabled | true | true | いいえ | サーバー統計の収集を制御します。 falseに設定してオプトアウトします。 |