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 sein
  • BENCHER_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": {
"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"
}
]
},
"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.
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.
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.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-schemes:

  • file: Replikation zu einem lokalen Dateipfad
    • path: Pfad, zu dem repliziert wird
  • sftp: Replikation über SFTP
    • host: Zielsystem-Hostname
    • port: Zielsystem-Portnummer
    • user: Benutzername auf dem Zielsystem
    • password: (Optional) Passwort auf dem Zielsystem
    • path: (Optional) Pfad auf dem Zielsystem
    • key_path: (Optional) Pfad zum SSH-Schlüssel
  • s3: Replikation zu einem S3-kompatiblen Blob-Speicher
    • bucket: Bucket-Name
    • path: (Optional) Pfad im Bucket
    • endpoint: (AWS: Optional | Nicht-AWS: Erforderlich) Replikationsendpunkt
    • region: (Optional) Bucket-Region
    • access_key_id: S3-Zugangsschlüssel
    • secret_access_key: S3-Geheimzugangsschlüssel
  • abs: Replikation zu Azure Blob Storage
    • account_name: Kontoname
    • bucket: Bucket-Name
    • path: (Optional) Pfad im Bucket
    • account_key: Azure-Kontoschlüssel
  • gcs: Replikation zu Google Cloud Storage
    • bucket: Bucket-Name
    • path: (Optional) Pfad im Bucket
    • GOOGLE_APPLICATION_CREDENTIALS: Umgebungsvariable, die auf den Dateipfad zeigt, der auf die Dienstkontoanmeldeinformationen verweist

Alle vier Replikations-schemes 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 ist 24h.
  • retention_check_interval: (Optional) Gibt an, wie oft Bencher überprüft, ob die Aufbewahrung durchgesetzt werden muss. Standardwert ist 1h.
  • 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 ist 1s. Eine höhere Frequenz kann die Kosten für Cloud-Speicher erheblich erhöhen.
NameBeispielStandardwertErforderlichBeschreibung
busy_timeout50005000NeinGibt den Busy-Timeout für die Datenbank in Millisekunden an.
replicas[ … ]---JaGibt ein Array von Repliken an.
replicas[replica]{ … }---JaGibt ein Replikationsobjekt an.
replicas[replica].scheme“s3”---JaGibt 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.

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.


Published: Fri, October 27, 2023 at 8:40:00 AM UTC | Last Updated: Fri, June 21, 2024 at 6:14:00 PM UTC