API-Server-Konfiguration


Der Bencher API-Server benötigt eine JSON-Konfiguration beim Start. Die Konfiguration kann auf drei Arten bereitgestellt werden:

  • BENCHER_CONFIG Umgebungsvariable: Der Wert sollte auf die JSON-Konfiguration gesetzt werden
  • BENCHER_CONFIG_PATH Umgebungsvariable: Der Wert sollte auf den Pfad einer Datei gesetzt werden, die die JSON-Konfiguration enthält
  • Eine Datei, die die JSON-Konfiguration enthält und sich unter ./bencher.json befindet, relativ zur Serverausführungsdatei

Wenn keine Konfiguration gefunden wird, wird eine Standardkonfiguration geladen.

Um die Konfiguration während des Serverbetriebs zu aktualisieren, kann ein Admin den Befehl bencher server config update der CLI verwenden, der die PUT /v0/server/config Route trifft. Alle aktualisierten Konfigurationen werden in der BENCHER_CONFIG Umgebungsvariable gespeichert und auf der Festplatte unter BENCHER_CONFIG_PATH.

Beispiel für eine JSON-Konfiguration:

{
"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

NameBeispielStandardErforderlichBeschreibung
urlhttps://bencher.example.comhttp://localhost:3000JaLegt die URL für den Bencher UI-Konsolenhost fest.

security

NameBeispielStandardErforderlichBeschreibung
issuerhttps://api.bencher.example.com“bencher.dev”NeinGibt den JWT (JSON Web Token) Aussteller an. WARNUNG Änderungen dieses Wertes führen dazu, dass alle zuvor generierten JWTs nicht mehr validiert werden.
secret_key“UJu7Cpxb-zFaJYqXD-3mDDSDyj-ZvfxZFZs-X58xjxPy”Zufällige UUID v4JaGibt den Schlüssel an, der zur Generierung aller Tokens verwendet wird. ES SOLLTE SEHR SICHER SEIN! Der Standardwert ist eine zufällig generierte UUID v4. Jedes Mal, wenn es protokolliert wird, wird es als ************ verschleiert dargestellt.

server

Dieser Abschnitt basiert auf der Dropshot-Serverkonfiguration.

NameBeispielStandardErforderlichBeschreibung
bind_address“0.0.0.0:61016”“0.0.0.0:61016”JaLegt fest, dass der Server an die angegebene IP-Adresse und den TCP-Port gebunden sein sollte. Im Allgemeinen können Server an mehr als eine IP-Adresse und Port gebunden sein, dies wird jedoch (noch?) nicht unterstützt. Standardmäßig ist es “127.0.0.1:0”.
request_body_max_bytes10485761048576JaGibt die maximale Anzahl von Bytes an, die in einem Anforderungskörper zulässig sind. Größere Anfragen erhalten einen 400 Fehler. Standardmäßig auf 1024 festgelegt.
tls.type“als_datei”---NeinGibt an, ob und wie TLS-Zertifikat- und Schlüsselinformationen bereitgestellt werden. Gültige Werte sind “als_datei” und “als_bytes”.
tls.cert_file“/path/to/cert.pem”---Nur wenn tls.type = as_fileGibt den Pfad zu einer PEM-Datei an, die eine Zertifikatskette enthält, mit der sich der Server identifiziert. Das erste Zertifikat ist das End-Entity-Zertifikat und die verbleibenden sind Zwischenzertifikate auf dem Weg zu einer vertrauenswürdigen CA. Wenn angegeben, hört der Server nur auf TLS-Verbindungen.
tls.key_file“/path/to/key.pem”---Nur wenn tls.type = as_fileGibt den Pfad zu einer PEM-kodierten PKCS #8-Datei an, die den privaten Schlüssel enthält, den der Server verwenden wird. Wenn angegeben, hört der Server nur auf TLS-Verbindungen.
tls.certs------Nur wenn tls.type = as_bytesIdentisch mit tls.cert_file, jedoch als Array von Bytes von Zertifikatsdaten bereitgestellt.
tls.key------Nur wenn tls.type = as_bytesIdentisch mit tls.key_file, jedoch als Array von Bytes von Schlüsseldaten bereitgestellt.

logging

Dieser Abschnitt basiert auf der Dropshot Logging Konfiguration.

NameBeispielStandardErforderlichBeschreibung
name“Bencher API”“Bencher API”JaGibt den Namen des Loggers an.
log.mode“stderr_terminal”“stderr_terminal”JaSteuert, wo das Server-Logging hingeschickt wird. Gültige Modi sind “stderr-terminal” und “file”. Wenn der Modus `“stderr-terminal” ist, wird menschenlesbare Ausgabe, wenn möglich mit Farben und anderer Terminalformatierung, an stderr gesendet. Ist der Modus “file”, wird Bunyan-Format Ausgabe an den durch log.path angegebenen Dateipfad gesendet. Siehe auch log.if_exists, das steuert, was passiert, wenn der Zielpfad bereits existiert.
log.level“info”“info”JaGibt an, wie schwerwiegend die Protokollnachrichten sein sollten, die im Protokoll enthalten sind. Gültige Werte sind “trace”, “debug”, “info”, “warn”, “error” und “critical”, die in aufsteigender Reihenfolge der Schweregrad sind. Protokollnachrichten der angegebenen Stufe und schwerwiegendere Stufen werden im Protokoll enthalten sein.
log.path------Nur wenn log.mode = “file”Wenn log.mode “file” ist, bestimmt diese Eigenschaft den Pfad zur Protokolldatei. Siehe auch log.if_exists.
log.if_exists------Nur wenn log.mode = “file”Wenn log.mode “file” ist, wird durch diese Eigenschaft festgelegt, was passieren soll, wenn die Zielprotokolldatei bereits existiert. Gültige Werte sind “append” (hierbei wird zur vorhandenen Datei hinzugefügt), “truncate” (hierbei wird die vorhandene Datei abgeschnitten und dann verwendet, als ob sie gerade erstellt worden wäre) und “fail” (hierbei beendet der Server sofort mit einem Fehler).

database

NameBeispielStandardErforderlichBeschreibung
file“pfad/zu/database.db”“/var/lib/bencher/data/bencher.db”JaLegt fest, wo die Serverdatenbank hingehen soll.
data_store.service“aws_s3”---NeinGibt den entfernten Datenspeicherdienst an. Gültige Werte sind “aws_s3”.
data_store.access_key_id“ABC123DoRemMiABC123”---Nur wenn data_store.service = “aws_s3”Wenn data_store.service “aws_s3” ist, gibt diese Eigenschaft die AWS-Zugangsschlüssel-ID an. Siehe auch data_store.service.
data_store.secret_access_key“AA3Chr-JSF5sUQqKwayx-FvCfZKsMev-5BqPpcFC3m7”---Nur wenn data_store.service = “aws_s3”Wenn data_store.service “aws_s3” ist, gibt diese Eigenschaft den AWS geheimen Zugangsschlüssel an. Siehe auch data_store.service. Im Protokoll erscheint es als ************.
data_store.access_point“arn:aws:s3:some-region-1:123456789:accesspoint/my-bucket/pfad/zu/backup/dir”---Nur wenn data_store.service = “aws_s3”Wenn data_store.service “aws_s3” ist, gibt diese Eigenschaft den Zugangspunkt von AWS S3 an. Siehe auch data_store.service.

smtp

Dieser Abschnitt spezifiziert eine SMTP Dienstkonfiguration. Der gesamte Abschnitt ist optional. Wird er nicht angegeben, werden alle Nachrichten stattdessen an logging geschickt.

NameBeispielStandardErforderlichBeschreibung
hostname“mailbonobo.com”---JaGibt den SMTP-Hostname an.
port587587NeinGibt den SMTP-Port an.
starttlstruetrueNeinKontrolliert, ob die SMTP-Verbindung das STARTTLS-Protokoll verwendet.
username“bencher”---JaGibt den Benutzernamen beim SMTP-Host an.
secret“WM3F2u9cqSNdBPLfy9sJ5kk9”---JaGibt das Geheimnis für den Benutzernamen beim SMTP-Host an. Im Protokoll erscheint es als ************.
from_name“Bencher”---JaGibt den Namen an, der im Absenderbereich aller E-Mails erscheint.
from_emailinfo@bencher.example.com---JaGibt die E-Mail an, die im Absenderbereich aller E-Mails erscheint.

plus

Dieser Abschnitt betrifft Funktionen, die von der Bencher Plus-Lizenz abgedeckt sind.

plus.github

Dieser Abschnitt spezifiziert die Konfiguration für eine GitHub App, die für die OAuth2-Authentifizierung verwendet wird. Sie müssen eine gültige Bencher Plus Enterprise Lizenz für mindestens eine Organisation auf dem Server haben. Der gesamte Abschnitt ist optional. Wenn er nicht angegeben ist, wird die Authentifizierung mit GitHub nicht aktiviert.

NameBeispielStandardErforderlichBeschreibung
client_idIv1.12864abcd1232048---JaGibt die Client-ID für Ihre GitHub App an. Die Client-ID unterscheidet sich von der App-ID. Sie können die Client-ID auf der Einstellungsseite für Ihre App finden. Weitere Informationen zur Navigation zur Einstellungsseite für Ihre GitHub App finden Sie unter Ändern einer GitHub App-Registrierung.
client_secret00000abcd12345wxyz123456789abcdefgh0000---JaDas Client-Geheimnis für Ihre GitHub App. Sie können ein Client-Geheimnis auf der Einstellungsseite für Ihre App generieren.

plus.stats

Dieser Abschnitt gibt an, ob und wann Serverstatistiken gesammelt werden. Der gesamte Abschnitt ist optional. Wenn nicht angegeben, werden die aufgeführten Standardwerte verwendet. Das heißt, Serverstatistiken sind opt-out. Setzen Sie enabled auf false, um die Sammlung von Serverstatistiken zu deaktivieren.

NameBeispielStandardErforderlichBeschreibung
offset1124211242NeinGibt den Offset von Mitternacht in Sekunden für die Serverstatistiksammlung an. Standardmäßig läuft es um 03:07:22 UTC.
enabledtruetrueNeinSteuert, ob Serverstatistiken gesammelt werden. Setzen Sie auf false, um sich abzumelden.