APIサーバー設定


Bencher APIサーバーは起動時にJSON設定を必要とします。 設定は3つの方法で提供できます:

  • 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": "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"
  },
  "apm": {
    "sentry": {
      "dsn": "https://0123abc1023abc@987efg987efg.ingest.sentry.io/0123456789"
    }
  },
  "plus": {
    "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アドレスとポートにバインドすることができますが、これはまだサポートされていません。デフォルトは “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”---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”“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.stats

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

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