API 서버 설정
Bencher API 서버는 시작 시 JSON 구성을 필요로 합니다. 구성은 다음 세 가지 방법으로 제공될 수 있습니다:
BENCHER_CONFIG
환경 변수: 값은 JSON 구성으로 설정되어야 합니다.BENCHER_CONFIG_PATH
환경 변수: 값은 JSON 구성을 포함하는 파일의 경로로 설정되어야 합니다./etc/bencher/bencher.json
파일: 이 위치에 JSON 구성을 포함한 파일이 있어야 합니다.
구성을 찾을 수 없는 경우 기본 구성이 로드됩니다.
서버가 실행 중일 때 구성을 업데이트하려면,
관리자는 CLI bencher server config update
명령어를 사용하여
PUT /v0/server/config
엔드포인트를 실행할 수 있습니다.
업데이트된 모든 구성은 BENCHER_CONFIG
환경 변수와
디스크의 BENCHER_CONFIG_PATH
에 저장됩니다.
JSON 구성 예:
console
이름 | 예 | 기본값 | 필수 | 설명 |
---|---|---|---|---|
url | ”https://bencher.example.com” | ”http://localhost:3000” | 예 | Bencher UI 콘솔 호스트의 URL을 지정합니다. |
security
이름 | 예 | 기본값 | 필수 | 설명 |
---|---|---|---|---|
issuer | ”https://api.bencher.example.com” | “bencher.dev” | 아니오 | JWT(Jason Web Token) 발행자를 지정합니다. 경고 이 값을 변경하면 이전에 생성된 모든 JWT가 더 이상 유효하지 않습니다. |
secret_key | “UJu7Cpxb-zFaJYqXD-3mDDSDyj-ZvfxZFZs-X58xjxPy” | 랜덤 UUID v4 | 예 | 모든 토큰을 생성하는 데 사용되는 키를 지정합니다. 매우 안전해야 합니다! 기본값은 랜덤하게 생성된 UUID v4입니다. 로그에 기록될 때 ’************‘로 가려집니다. |
server
이 섹션은 Dropshot 서버 구성을 기반으로 합니다.
이름 | 예 | 기본값 | 필수 | 설명 |
---|---|---|---|---|
bind_address | “0.0.0.0:61016” | “0.0.0.0:61016” | 예 | 서버가 주어진 IP 주소와 TCP 포트에 바인딩해야 함을 지정합니다. 일반적으로 서버는 하나 이상의 IP 주소와 포트에 바인딩할 수 있지만, 이는 (아직?) 지원되지 않습니다. |
request_body_max_bytes | 1048576 | 1048576 | 예 | 요청 본문에서 허용되는 바이트 수의 최대값을 지정합니다. 더 큰 요청은 400 오류를 받게 됩니다. |
tls.type | “as_file” | --- | 아니오 | TLS 인증서 및 키 정보가 어떻게 제공되는지 지정합니다. 유효한 값에는 “as_file”과 “as_bytes”가 포함됩니다. |
tls.cert_file | “/path/to/cert.pem” | --- | tls.type = as_file인 경우에만 | 서버가 자신을 식별하기 위한 인증서 체인이 포함된 PEM 파일 경로를 지정합니다. 첫번째 인증서는 최종 사용자 인증서이며, 나머지는 신뢰할 수 있는 CA에 도달하기 위한 중간 인증서입니다. 설정될 경우, 서버는 TLS 연결만 수신합니다. |
tls.key_file | “/path/to/key.pem” | --- | tls.type = as_file인 경우에만 | 서버가 사용할 개인 키가 포함된 PEM 인코딩 PKCS #8 파일 경로를 지정합니다. 설정될 경우, 서버는 TLS 연결만 수신합니다. |
tls.certs | --- | --- | tls.type = as_bytes인 경우에만 | tls.cert_file과 동일하지만, 인증서 데이터의 바이트 배열로 제공됩니다. |
tls.key | --- | --- | tls.type = as_bytes인 경우에만 | tls.key_file과 동일하지만, 키 데이터의 바이트 배열로 제공됩니다. |
logging
이 섹션은 Dropshot 로깅 설정에 기반합니다.
이름 | 예제 | 기본값 | 필수 여부 | 설명 |
---|---|---|---|---|
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” | “/var/lib/bencher/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 secret access key를 지정합니다. 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 accesspoint를 지정합니다. data_store.service에 대해서도 참조하십시오. |
smtp
이 섹션은 SMTP 서비스 설정을 지정합니다.
전체 섹션은 선택 사항입니다.
지정되지 않으면 모든 메시지가 대신 logging
으로 전송됩니다.
이름 | 예제 | 기본값 | 필수 여부 | 설명 |
---|---|---|---|---|
hostname | “mailbonobo.com” | --- | 예 | SMTP 호스트 이름을 지정합니다. |
port | 587 | 587 | 아니오 | SMTP 포트를 지정합니다. |
starttls | true | true | 아니오 | SMTP 연결이 STARTTLS 프로토콜을 사용하는지 여부를 제어합니다. |
username | “bencher” | --- | 예 | SMTP 호스트의 사용자 이름을 지정합니다. |
secret | “WM3F2u9cqSNdBPLfy9sJ5kk9” | --- | 예 | SMTP 호스트의 사용자 이름에 대한 비밀번호를 지정합니다. 로그에 기록될 때 ************ 로 표시됩니다. |
from_name | “Bencher” | --- | 예 | 모든 이메일의 보내는 사람 섹션에 표시될 이름을 지정합니다. |
from_email | ”info@bencher.example.com” | --- | 예 | 모든 이메일의 보내는 사람 섹션에 표시될 이메일을 지정합니다. |
plus
이 섹션은 Bencher Plus 라이센스에서 다루는 기능에 대한 것입니다.
plus.github
이 섹션은 OAuth2 인증을 위해 사용되는 GitHub 앱의 설정을 지정합니다. 서버에 최소 한 개의 조직이 Bencher Plus Enterprise 라이센스를 유효하게 가져야 합니다. 전체 섹션은 선택 사항입니다. 지정되지 않으면 GitHub을 사용한 인증이 활성화되지 않습니다.
이름 | 예시 | 기본값 | 필수 | 설명 |
---|---|---|---|---|
client_id | Iv1.12864abcd1232048 | --- | 예 | GitHub 앱에 대한 클라이언트 ID를 지정합니다. 클라이언트 ID는 앱 ID와 다릅니다. 클라이언트 ID는 앱의 설정 페이지에서 찾을 수 있습니다. GitHub 앱 설정 페이지로 이동하는 방법에 대한 자세한 정보는 GitHub 앱 등록 수정를 참조하십시오. |
client_secret | 00000abcd12345wxyz123456789abcdefgh0000 | --- | 예 | GitHub 앱에 대한 클라이언트 시크릿입니다. 앱의 설정 페이지에서 클라이언트 시크릿을 생성할 수 있습니다. |
plus.disaster_recovery
이 섹션은 재해 복구 구성을 지정합니다.
Bencher는 모든 데이터베이스 변경 사항을 지속적으로 복제하는 기능을 지원합니다.
요청 시 실행하거나 예약된 백업을 실행하려면 구성의 database.data_store
섹션을 참조하십시오.
네 가지 복제 scheme
가 있습니다:
file
: 로컬 파일 경로로 복제path
: 복제할 경로
sftp
: SFTP를 통해 복제host
: 대상 시스템 호스트 이름port
: 대상 시스템 포트 번호user
: 대상 시스템의 사용자 이름password
: (선택사항) 대상 시스템의 비밀번호path
: (선택사항) 대상 시스템의 경로key_path
: (선택사항) SSH 키 경로
s3
: S3 호환 블롭 스토리지에 복제bucket
: 버킷 이름path
: (선택사항) 버킷 내 경로endpoint
: (AWS: 선택사항 | 비AWS: 필수) 복제 엔드포인트region
: (선택사항) 버킷 지역access_key_id
: S3 액세스 키secret_access_key
: S3 비밀 액세스 키
abs
: Azure Blob Storage에 복제account_name
: 계정 이름bucket
: 버킷 이름path
: (선택사항) 버킷 내 경로account_key
: Azure 계정 키
gcs
: Google Cloud Storage로 복제bucket
: 버킷 이름path
: (선택사항) 버킷 내 경로GOOGLE_APPLICATION_CREDENTIALS
: 서비스 계정 자격 증명이 있는 파일 경로를 가리키는 환경 변수
모든 네 가지 복제 scheme
에 다음과 같은 추가 옵션이 있습니다:
retention
: (선택사항) 스냅샷(WAL) 파일이 보관될 기간. 보관 기간 후 새 스냅샷을 생성하고 이전 파일을 제거합니다. 가장 오래된 스냅샷보다 이전에 존재하는 WAL 파일 또한 제거됩니다. 기본값은24h
입니다.retention_check_interval
: (선택사항) Bencher가 보관을 적용해야 하는지 확인하는 간격을 지정합니다. 기본값은1h
입니다.snapshot_interval
: (선택사항) 새로운 스냅샷이 생성되는 간격을 지정합니다. 이를 통해 복구 시간을 단축할 수 있습니다. 최신 스냅샷은 적용해야 할 WAL 프레임 수가 적기 때문입니다. 스냅샷 간격을 설정하지 않으면 보관이 수행될 때마다 새 스냅샷이 생성됩니다. 기본적으로 보관은 매 24시간마다 수행됩니다.validation_interval
: (선택사항) 지정된 경우, Bencher는 복제된 데이터가 로컬 사본과 일치하는지 자동으로 복원하고 검증합니다. 기본적으로 비활성화됩니다. 이를 활성화하면 대부분의 클라우드 서비스가 다운로드에 대한 요금을 부과하므로 Bencher 실행 비용이 크게 증가할 수 있습니다.sync_interval
: (선택사항) 프레임이 복제로 푸시되는 빈도입니다. 기본값은1s
입니다. 빈도를 증가시키면 클라우드 스토리지 비용이 크게 증가할 수 있습니다.
이름 | 예시 | 기본값 | 필수여부 | 설명 |
---|---|---|---|---|
busy_timeout | 5000 | 5000 | No | 데이터베이스의 busy 타임아웃을 밀리초(ms) 단위로 지정합니다. |
replicas | [ … ] | --- | 예 | 복제 배열을 지정 |
replicas[replica] | { … } | --- | 예 | 복제 객체를 지정합니다 |
replicas[replica].scheme | “s3” | --- | 예 | 복제 scheme을 지정합니다. 다른 모든 replica 키에 대해서는 위의 목록을 참조하십시오. |
plus.stats
이 섹션은 서버 통계가 수집되는 조건과 시간을 지정합니다.
전체 섹션은 선택 사항입니다.
지정되지 않으면 나열된 기본값이 사용됩니다.
즉, 서버 통계는 opt-out 형태입니다.
서버 통계를 비활성화하려면 enabled
를 false
로 설정합니다.
이름 | 예시 | 기본값 | 필수 | 설명 |
---|---|---|---|---|
offset | 11242 | 11242 | 아니오 | 서버 통계 수집을 위한 자정으로부터의 오프셋(초)를 지정합니다. 기본적으로 UTC 기준으로 03:07:22에 실행됩니다. |
enabled | true | true | 아니오 | 서버 통계가 수집되는지를 컨트롤합니다. false 로 설정하면 opt-out합니다. |