API-Server-Konfiguration
Der Bencher API-Server erfordert eine JSON-Konfiguration beim Start. Die Konfiguration kann auf drei Arten bereitgestellt werden:
BENCHER_CONFIG
Umgebungsvariable: Der Wert sollte auf die JSON-Konfiguration gesetzt seinBENCHER_CONFIG_PATH
Umgebungsvariable: Der Wert sollte auf den Pfad einer Datei gesetzt sein, die die JSON-Konfiguration enthält/etc/bencher/bencher.json
Datei: Eine Datei an diesem Ort, die die JSON-Konfiguration enthält
Wenn keine Konfiguration gefunden wird, wird eine Standardkonfiguration geladen.
Um die Konfiguration zu aktualisieren, während der Server läuft,
kann ein Administrator den CLI-Befehl bencher server config update
verwenden,
der den PUT /v0/server/config
Endpunkt ansteuert.
Alle aktualisierten Konfigurationen werden in der BENCHER_CONFIG
Umgebungsvariable
und auf der Festplatte bei BENCHER_CONFIG_PATH
gespeichert.
Beispiel einer JSON-Konfiguration:
console
Name | Beispiel | Standard | Erforderlich | Beschreibung |
---|---|---|---|---|
url | ”https://bencher.example.com” | ”http://localhost:3000” | Ja | Legt die URL für den Bencher UI-Konsolenhost fest. |
security
Name | Beispiel | Standard | Erforderlich | Beschreibung |
---|---|---|---|---|
issuer | ”https://api.bencher.example.com” | “bencher.dev” | Nein | Gibt 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 v4 | Ja | Gibt 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.
Name | Beispiel | Standard | Erforderlich | Beschreibung |
---|---|---|---|---|
bind_address | “0.0.0.0:61016” | “0.0.0.0:61016” | Ja | Legt 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. |
request_body_max_bytes | 1048576 | 1048576 | Ja | Gibt die maximale Anzahl von Bytes an, die in einem Anforderungskörper zulässig sind. Größere Anfragen erhalten einen 400 Fehler. |
tls.type | “als_datei” | --- | Nein | Gibt 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_file | Gibt 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_file | Gibt 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_bytes | Identisch mit tls.cert_file, jedoch als Array von Bytes von Zertifikatsdaten bereitgestellt. |
tls.key | --- | --- | Nur wenn tls.type = as_bytes | Identisch mit tls.key_file, jedoch als Array von Bytes von Schlüsseldaten bereitgestellt. |
logging
Dieser Abschnitt basiert auf der Dropshot Logging Konfiguration.
Name | Beispiel | Standard | Erforderlich | Beschreibung |
---|---|---|---|---|
name | “Bencher API” | “Bencher API” | Ja | Gibt den Namen des Loggers an. |
log.mode | “stderr_terminal” | “stderr_terminal” | Ja | Steuert, 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” | Ja | Gibt 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
Name | Beispiel | Standard | Erforderlich | Beschreibung |
---|---|---|---|---|
file | “pfad/zu/database.db” | “/var/lib/bencher/data/bencher.db” | Ja | Legt fest, wo die Serverdatenbank hingehen soll. |
data_store.service | “aws_s3” | --- | Nein | Gibt 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.
Name | Beispiel | Standard | Erforderlich | Beschreibung |
---|---|---|---|---|
hostname | “mailbonobo.com” | --- | Ja | Gibt den SMTP-Hostname an. |
port | 587 | 587 | Nein | Gibt den SMTP-Port an. |
starttls | true | true | Nein | Kontrolliert, ob die SMTP-Verbindung das STARTTLS-Protokoll verwendet. |
username | “bencher” | --- | Ja | Gibt den Benutzernamen beim SMTP-Host an. |
secret | “WM3F2u9cqSNdBPLfy9sJ5kk9” | --- | Ja | Gibt das Geheimnis für den Benutzernamen beim SMTP-Host an. Im Protokoll erscheint es als ************ . |
from_name | “Bencher” | --- | Ja | Gibt den Namen an, der im Absenderbereich aller E-Mails erscheint. |
from_email | ”info@bencher.example.com” | --- | Ja | Gibt 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.
Name | Beispiel | Standard | Erforderlich | Beschreibung |
---|---|---|---|---|
client_id | Iv1.12864abcd1232048 | --- | Ja | Gibt 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_secret | 00000abcd12345wxyz123456789abcdefgh0000 | --- | Ja | Das Client-Geheimnis für Ihre GitHub App. Sie können ein Client-Geheimnis auf der Einstellungsseite für Ihre App generieren. |
plus.disaster_recovery
Dieser Abschnitt spezifiziert die Konfiguration der Notfallwiederherstellung.
Bencher unterstützt das kontinuierliche Replizieren aller Datenbankänderungen.
Für die Durchführung von bedarfs- oder zeitgesteuerten Backups siehe den Abschnitt database.data_store
der Konfiguration.
Es gibt vier Replikations-scheme
s:
file
: Replikation zu einem lokalen Dateipfadpath
: Pfad, zu dem repliziert wird
sftp
: Replikation über SFTPhost
: Zielsystem-Hostnameport
: Zielsystem-Portnummeruser
: Benutzername auf dem Zielsystempassword
: (Optional) Passwort auf dem Zielsystempath
: (Optional) Pfad auf dem Zielsystemkey_path
: (Optional) Pfad zum SSH-Schlüssel
s3
: Replikation zu einem S3-kompatiblen Blob-Speicherbucket
: Bucket-Namepath
: (Optional) Pfad im Bucketendpoint
: (AWS: Optional | Nicht-AWS: Erforderlich) Replikationsendpunktregion
: (Optional) Bucket-Regionaccess_key_id
: S3-Zugangsschlüsselsecret_access_key
: S3-Geheimzugangsschlüssel
abs
: Replikation zu Azure Blob Storageaccount_name
: Kontonamebucket
: Bucket-Namepath
: (Optional) Pfad im Bucketaccount_key
: Azure-Kontoschlüssel
gcs
: Replikation zu Google Cloud Storagebucket
: Bucket-Namepath
: (Optional) Pfad im BucketGOOGLE_APPLICATION_CREDENTIALS
: Umgebungsvariable, die auf den Dateipfad zeigt, der auf die Dienstkontoanmeldeinformationen verweist
Alle vier Replikations-scheme
s haben die folgenden zusätzlichen Optionen:
retention
: (Optional) Die Dauer, die Schnappschuss- und WAL-Dateien aufbewahrt werden. Nach dem Ablauf der Aufbewahrungsfrist wird ein neuer Schnappschuss erstellt und der alte entfernt. WAL-Dateien, die vor dem ältesten Schnappschuss existieren, werden ebenfalls entfernt. Standardwert ist24h
.retention_check_interval
: (Optional) Gibt an, wie oft Bencher überprüft, ob die Aufbewahrung durchgesetzt werden muss. Standardwert ist1h
.snapshot_interval
: (Optional) Gibt an, wie oft neue Schnappschüsse erstellt werden. Dies wird verwendet, um die Zeit für die Wiederherstellung zu verkürzen, da neuere Schnappschüsse weniger WAL-Frames zum Anwenden haben. Die Aufbewahrung gilt auch für diese Schnappschüsse. Wenn Sie kein Schnappschussintervall festlegen, wird ein neuer Schnappschuss erstellt, wann immer die Aufbewahrung durchgeführt wird. Die Aufbewahrung erfolgt standardmäßig alle 24 Stunden.validation_interval
: (Optional) Wenn angegeben, wird Bencher automatisch wiederherstellen und validieren, dass die Daten auf der Replik mit der lokalen Kopie übereinstimmen. Standardmäßig deaktiviert. Das Aktivieren kann die Kosten für den Betrieb von Bencher erheblich erhöhen, da die meisten Cloud-Services Gebühren für Downloads erheben.sync_interval
: (Optional) Häufigkeit, mit der Frames zur Replik übertragen werden. Standardwert ist1s
. Eine höhere Frequenz kann die Kosten für Cloud-Speicher erheblich erhöhen.
Name | Beispiel | Standardwert | Erforderlich | Beschreibung |
---|---|---|---|---|
busy_timeout | 5000 | 5000 | Nein | Gibt den Busy-Timeout für die Datenbank in Millisekunden an. |
replicas | [ … ] | --- | Ja | Gibt ein Array von Repliken an. |
replicas[replica] | { … } | --- | Ja | Gibt ein Replikationsobjekt an. |
replicas[replica].scheme | “s3” | --- | Ja | Gibt das Replikationsschema an. Für alle anderen replica -Schlüssel siehe die obige Liste. |
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.
Name | Beispiel | Standard | Erforderlich | Beschreibung |
---|---|---|---|---|
offset | 11242 | 11242 | Nein | Gibt den Offset von Mitternacht in Sekunden für die Serverstatistiksammlung an. Standardmäßig läuft es um 03:07:22 UTC. |
enabled | true | true | Nein | Steuert, ob Serverstatistiken gesammelt werden. Setzen Sie auf false , um sich abzumelden. |