Configuraci贸n del Servidor API


El servidor API de Bencher requiere una configuraci贸n JSON al iniciar. La configuraci贸n se puede proporcionar de tres maneras:

  • Variable de entorno BENCHER_CONFIG: El valor debe ser la configuraci贸n JSON
  • Variable de entorno BENCHER_CONFIG_PATH: El valor debe ser la ruta de un archivo que contenga la configuraci贸n JSON
  • Archivo /etc/bencher/bencher.json: Un archivo en esta ubicaci贸n que contenga la configuraci贸n JSON

Si no se encuentra ninguna configuraci贸n, se cargar谩 una configuraci贸n predeterminada.

Para actualizar la configuraci贸n mientras el servidor est谩 en funcionamiento, un administrador puede usar el comando de CLI bencher server config update que accede al endpoint PUT /v0/server/config. Todas las configuraciones actualizadas se guardan en la variable de entorno BENCHER_CONFIG y en disco en BENCHER_CONFIG_PATH.

Ejemplo de configuraci贸n 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"
}
]
},
"stats": {
"offset": 11242,
"enabled": true
}
}
}

console

NombreEjemploPredeterminadoObligatorioDescripci贸n
urlhttps://bencher.example.comhttp://localhost:3000S铆Especifica la URL para el host de la consola de Bencher UI.

security

NombreEjemploPredeterminadoObligatorioDescripci贸n
issuerhttps://api.bencher.example.com鈥渂encher.dev鈥NoEspecifica el emisor del Token Web JSON (JWT). ADVERTENCIA Cambiar este valor har谩 que todos los JWT generados anteriormente ya no se validen.
secret_key鈥淯Ju7Cpxb-zFaJYqXD-3mDDSDyj-ZvfxZFZs-X58xjxPy鈥UUID v4 aleatorioS铆Especifica la clave utilizada para generar todos los tokens. 隆DEBE SER MUY SEGURA! El valor predeterminado es un UUID v4 generado aleatoriamente. Cuando se registra, aparecer谩 de manera ofuscada como ************.

server

Esta secci贸n se basa en la configuraci贸n del servidor Dropshot.

NombreEjemploPredeterminadoObligatorioDescripci贸n
bind_address鈥0.0.0.0:61016鈥鈥0.0.0.0:61016鈥S铆Especifica que el servidor debe vincularse a la IP y puerto TCP proporcionados. En general, los servidores pueden vincularse a m谩s de una direcci贸n IP y puerto, pero esto no es (驴a煤n?) compatible.
request_body_max_bytes10485761048576S铆Especifica el n煤mero m谩ximo de bytes permitidos en el cuerpo de una solicitud. Las solicitudes m谩s grandes recibir谩n un error 400.
tls.type鈥渁s_file鈥---NoEspecifica si y c贸mo se proporciona la informaci贸n del certificado y llave TLS. Los valores v谩lidos incluyen 鈥渁s_file鈥 y 鈥渁s_bytes鈥.
tls.cert_file鈥/path/to/cert.pem鈥---Solo si tls.tipo = as_fileEspecifica la ruta a un archivo PEM que contiene una cadena de certificados para que el servidor se identifique. El primer certificado es el certificado de entidad final, y los restantes son certificados intermedios en camino a una CA de confianza. Si se especifica, el servidor solo escuchar谩 conexiones TLS.
tls.key_file鈥/path/to/key.pem鈥---Solo si tls.tipo = as_fileEspecifica la ruta a un archivo PEM codificado en PKCS #8 que contiene la llave privada que usar谩 el servidor. Si se especifica, el servidor solo escuchar谩 conexiones TLS.
tls.certs------Solo si tls.tipo = as_bytesId茅ntico a tls.archivo_cert, pero proporcionado como un array de bytes de datos de certificado.
tls.key------Solo si tls.tipo = as_bytesId茅ntico a tls.archivo_llave, pero proporcionado como un array de bytes de datos de llave.

logging

Esta secci贸n se basa en la configuraci贸n de registro de Dropshot.

NombreEjemploDefaultRequeridoDescripci贸n
name鈥淏encher API鈥鈥淏encher API鈥S铆Especifica el nombre del registro (logger).
log.mode鈥渟tderr_terminal鈥鈥渟tderr_terminal鈥S铆Controla d贸nde se enviar谩 el registro del servidor. Las modo v谩lidos son 鈥渟tderr_terminal鈥 y 鈥渇ile鈥. Si el modo es 鈥渟tderr_terminal鈥, los resultados legibles por humanos, con colores y otro formateo del terminal si es posible, se enviar谩n a stderr. Si el modo es 鈥渇ile鈥, la salida con formato Bunyan se enviar谩 al ruta del sistema de archivos que indique log.path. Ver tambi茅n log.if_exists, que controla el comportamiento si la ruta de destino ya existe.
log.level鈥渋nfo鈥鈥渋nfo鈥S铆Especifica qu茅 gravedad de mensajes de registro se deben incluir en el registro. Los valores v谩lidos incluyen 鈥渢race鈥, 鈥渄ebug鈥, 鈥渋nfo鈥, 鈥渨arn鈥, 鈥渆rror鈥 y 鈥渃ritical鈥, que est谩n en orden creciente de gravedad. Los mensajes de registro en el nivel especificado y en niveles m谩s severos se incluir谩n en el registro.
log.path------Solo si log.mode = 鈥渇ile鈥Si log.mode es 鈥渇ile鈥, esta propiedad determina el camino al archivo de registro. Ver tambi茅n log.if_exists.
log.if_exists------Solo si log.mode = 鈥渇ile鈥Si log.mode es 鈥渇ile鈥, esta propiedad especifica qu茅 hacer si el archivo de registro destino ya existe. Los valores v谩lidos incluyen 鈥渁ppend鈥 (que agrega al archivo existente), 鈥渢runcate鈥 (que trunca el archivo existente y luego lo usa como si acabara de ser creado), y 鈥渇ail鈥 (que hace que el servidor se cierre inmediatamente con un error).

database

NombreEjemploDefaultRequeridoDescripci贸n
file鈥渞uta/hacia/database.db鈥鈥/var/lib/bencher/data/bencher.db鈥S铆Controla hacia donde ir谩 la base de datos del servidor.
data_store.service鈥渁ws_s3鈥---NoEspecifica el servicio de almacenamiento de datos remoto. Los valores v谩lidos son 鈥渁ws_s3鈥.
data_store.access_key_id鈥淎BC123DoRemMiABC123鈥---Solo si data_store.service = 鈥渁ws_s3鈥Si data_store.service = 鈥渁ws_s3鈥, esta propiedad especifica el ID de clave de acceso de AWS. Ver tambi茅n data_store.service.
data_store.secret_access_key鈥淎A3Chr-JSF5sUQqKwayx-FvCfZKsMev-5BqPpcFC3m7鈥---Solo si data_store.service = 鈥渁ws_s3鈥Si data_store.service = 鈥渁ws_s3鈥, esta propiedad especifica la clave de acceso secreta de AWS. Ver tambi茅n data_store.service. Cuando se registra, aparecer谩 ofuscado como ************.
data_store.access_point鈥渁rn:aws:s3:alguna-region-1:123456789:accesspoint/mi-bucket/ruta/hacia/directorio/de/respaldo鈥---Solo si data_store.service = 鈥渁ws_s3鈥Si data_store.service = 鈥渁ws_s3鈥, esta propiedad especifica el punto de acceso S3 de AWS. Ver tambi茅n data_store.service.

smtp

Esta secci贸n especifica una configuraci贸n del servicio SMTP. La secci贸n completa es opcional. Si no se especifica, todos los mensajes se enviar谩n a logging en su lugar.

NombreEjemploDefaultRequeridoDescripci贸n
hostname鈥渕ailbonobo.com鈥---S铆Especifica el hostname de SMTP.
port587587NoEspecifica el puerto de SMTP.
starttlstruetrueNoControla si la conexi贸n SMTP utiliza el protocolo STARTTLS.
username鈥渂encher鈥---S铆Especifica el nombre de usuario en el host SMTP.
secret鈥淲M3F2u9cqSNdBPLfy9sJ5kk9鈥---S铆Especifica el secreto para el nombre de usuario en el host SMTP. Cuando se registra, aparecer谩 ofuscado como ************.
from_name鈥淏encher鈥---S铆Especifica el nombre que aparecer谩 en la secci贸n 鈥渇rom鈥 de todos los correos electr贸nicos.
from_emailinfo@bencher.example.com---S铆Especifica el correo electr贸nico que aparecer谩 en la secci贸n 鈥渇rom鈥 de todos los correos electr贸nicos.

plus

Esta secci贸n es para las caracter铆sticas que est谩n cubiertas por la Licencia Bencher Plus.

plus.github

Esta secci贸n especifica la configuraci贸n para una aplicaci贸n de GitHub utilizada para la autenticaci贸n OAuth2. Debes tener una licencia v谩lida de Bencher Plus Enterprise para al menos una organizaci贸n en el servidor. Toda la secci贸n es opcional. Si no se especifica, la autenticaci贸n con GitHub no estar谩 habilitada.

NombreEjemploPredeterminadoRequeridoDescripci贸n
client_idIv1.12864abcd1232048---S铆Especifica el ID de cliente de tu aplicaci贸n de GitHub. El ID de cliente es diferente del ID de la aplicaci贸n. Puedes encontrar el ID de cliente en la p谩gina de configuraci贸n de tu aplicaci贸n. Para m谩s informaci贸n sobre c贸mo navegar a la p谩gina de configuraci贸n de tu aplicaci贸n de GitHub, consulta Modificar el registro de una aplicaci贸n de GitHub.
client_secret00000abcd12345wxyz123456789abcdefgh0000---S铆El secreto de cliente para tu aplicaci贸n de GitHub. Puedes generar un secreto de cliente en la p谩gina de configuraci贸n de tu aplicaci贸n.

plus.disaster_recovery

Esta secci贸n especifica la configuraci贸n de recuperaci贸n ante desastres. Bencher admite la replicaci贸n continua de todos los cambios en la base de datos. Para ejecutar copias de seguridad bajo demanda o programadas, consulte la secci贸n database.data_store de la configuraci贸n.

Hay cuatro esquemas de replicaci贸n:

  • file: Replicar a una ruta de archivo local
    • path: Ruta para replicar a
  • sftp: Replicar a trav茅s de SFTP
    • host: Nombre de host del sistema de destino
    • port: N煤mero de puerto del sistema de destino
    • user: Nombre de usuario en el sistema de destino
    • password: (Opcional) Contrase帽a en el sistema de destino
    • path: (Opcional) Ruta en el sistema de destino
    • key_path: (Opcional) Ruta a la clave SSH
  • s3: Replicar a cualquier almacenamiento compatible con S3
    • bucket: Nombre del bucket
    • path: (Opcional) Ruta en el bucket
    • endpoint: (AWS: Opcional | No AWS: Requerido) Punto final de replicaci贸n
    • region: (Opcional) Regi贸n del bucket
    • access_key_id: Clave de acceso S3
    • secret_access_key: Clave secreta de acceso S3
  • abs: Replicar en Azure Blob Storage
    • account_name: Nombre de cuenta
    • bucket: Nombre del bucket
    • path: (Opcional) Ruta en el bucket
    • account_key: Clave de cuenta de Azure
  • gcs: Replicar a Google Cloud Storage
    • bucket: Nombre del bucket
    • path: (Opcional) Ruta en el bucket
    • GOOGLE_APPLICATION_CREDENTIALS: Variable de entorno establecida en la ruta del archivo que apunta a las credenciales de la cuenta de servicio

Los cuatro esquemas de r茅plica tienen las siguientes opciones adicionales:

  • retention: (Opcional) Cantidad de tiempo que se conservar谩n los archivos de snapshot y WAL. Despu茅s del per铆odo de retenci贸n, se crear谩 una nueva instant谩nea y se eliminar谩 la antigua. Los archivos WAL que existan antes de la instant谩nea m谩s antigua tambi茅n se eliminar谩n. Por defecto es 24h.
  • retention_check_interval: (Opcional) Especifica con qu茅 frecuencia Bencher comprobar谩 si necesita aplicar la retenci贸n. Por defecto es 1h.
  • snapshot_interval: (Opcional) Especifica con qu茅 frecuencia se crear谩n nuevas instant谩neas. Esto se utiliza para reducir el tiempo de restauraci贸n, ya que las instant谩neas m谩s nuevas tendr谩n menos marcos WAL que aplicar. La retenci贸n a煤n se aplica a estas instant谩neas. Si no establece un intervalo de instant谩neas, se crear谩 una nueva instant谩nea siempre que se realice la retenci贸n. Por defecto, la retenci贸n ocurre cada 24 horas.
  • validation_interval: (Opcional) Cuando se especifica, Bencher restaurar谩 autom谩ticamente y validar谩 que los datos en la r茅plica coincidan con la copia local. Deshabilitado por defecto. Habilitar esto puede aumentar significativamente el costo de ejecutar Bencher, ya que la mayor铆a de los servicios en la nube cobran por las descargas.
  • sync_interval: (Opcional) Frecuencia en la que se env铆an marcos a la r茅plica. Por defecto es 1s. Aumentar la frecuencia puede aumentar significativamente los costos de almacenamiento en la nube.
NombreEjemploPor defectoRequeridoDescripci贸n
busy_timeout50005000NoEspecifica el tiempo de espera ocupado para la base de datos en milisegundos.
replicas[ 鈥 ]---S铆Especifica una matriz de r茅plicas.
replicas[replica]{ 鈥 }---S铆Especifica un objeto de r茅plica.
replicas[replica].scheme鈥渟3鈥---S铆Especifica el esquema de replicaci贸n. Para todas las dem谩s claves replica, consulte la lista anterior.

plus.stats

Esta secci贸n especifica si y cu谩ndo se recogen las estad铆sticas del servidor. Toda la secci贸n es opcional. Si no se especifica, se utilizar谩n los valores predeterminados listados. Es decir, las estad铆sticas del servidor son de opt-out. Establece enabled en false para desactivar las estad铆sticas del servidor.

NombreEjemploPredeterminadoObligatorioDescripci贸n
offset1124211242NoEspecifica el desplazamiento desde la medianoche en segundos para la recogida de estad铆sticas del servidor. Por defecto, se ejecuta a las 03:07:22 UTC.
enabledtruetrueNoControla si se recogen las estad铆sticas del servidor. Establece en false para optar por no participar.


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