- '데이터베이스'
- 'PROMETHEUS' dashboard:
- desc: 'CouchBase Exporter 내장 뷰' path: 'dashboard/ko/couchbase_prom'
monitor: - desc: 'CouchBase 모니터' path: 'monitor/ko/couchbase_prom'
CouchBase¶
수집기는 CouchBase 인스턴스에서 메모리와 디스크 사용량, 현재 연결 수 등 다양한 지표를 수집하여 Guance으로 전송하고, CouchBase의 다양한 이상 상황을 모니터링하고 분석하는 데 도움을 줍니다.
수집기 설정¶
사전 조건¶
버전 정보¶
CouchBase 버전:7.2.0 CouchBase Exporter 버전:
blakelead/couchbase-exporter:latest
CouchBase Exporter 설치¶
CouchBase용 클라이언트 수집기인 CouchBase Exporter를 사용하며, 수집기 문서는 여기를 참고합니다.
참고: 본문에서 사용하는 사용자 비밀번호는 CouchBase Server의 사용자 비밀번호입니다
docker run -d --name cbexporter --publish 9191:9191 --env EXPORTER_LISTEN_ADDR=:9191 --env EXPORTER_TELEMETRY_PATH=/metrics --env EXPORTER_SERVER_TIMEOUT=10s --env EXPORTER_LOG_LEVEL=debug --env EXPORTER_LOG_FORMAT=json --env EXPORTER_DB_URI=http://172.17.0.92:8091 --env EXPORTER_DB_TIMEOUT=10s --env EXPORTER_DB_USER=Administrator --env EXPORTER_DB_PASSWORD=pwd1234 --env EXPORTER_SCRAPE_CLUSTER=true --env EXPORTER_SCRAPE_NODE=true --env EXPORTER_SCRAPE_BUCKET=true --env EXPORTER_SCRAPE_XDCR=false blakelead/couchbase-exporter:latest
매개변수 소개:
| | | | |
| -------------------------- | ------------------- | -------------------------------------------------- | ----------------------------------------------- |
| 환경 변수 | 인자 | 설명 | 기본값 |
| | -config.file | 데이터를 로드할 구성 파일 | |
| EXPORTER_LISTEN_ADDR | -web.listen-address | HTTP 요청을 수신할 주소 | :9191 |
| EXPORTER_TELEMETRY_PATH | -web.telemetry-path | 메트릭을 노출할 경로 | /metrics |
| EXPORTER_SERVER_TIMEOUT | -web.timeout | 서버 읽기 타임아웃(초) | 10s |
| EXPORTER_DB_URI | -db.uri | CouchBase 클러스터 주소 | [http://127.0.0.1:8091](http://127.0.0.1:8091/) |
| EXPORTER_DB_TIMEOUT | -db.timeout | CouchBase 클라이언트 타임아웃(초) | 10s |
| EXPORTER_TLS_ENABLED | -tls.enabled | true이면 클러스터와의 TLS 통신을 활성화 | false |
| EXPORTER_TLS_SKIP_INSECURE | -tls.skip-insecure | true이면 인증서를 검증하지 않음 | false |
| EXPORTER_TLS_CA_CERT | -tls.ca-cert | 클러스터 루트 인증서 | |
| EXPORTER_TLS_CLIENT_CERT | -tls.client-cert | 클라이언트 인증서 | |
| EXPORTER_TLS_CLIENT_KEY | -tls.client-key | 클라이언트 개인 키 | |
| EXPORTER_DB_USER | *not allowed* | 관리자 사용자 이름 | |
| EXPORTER_DB_PASSWORD | *not allowed* | 관리자 비밀번호 | |
| EXPORTER_LOG_LEVEL | -log.level | 로그 수준: info,debug,warn,error,fatal | error |
| EXPORTER_LOG_FORMAT | -log.format | 로그 형식: text, `json` | text |
| EXPORTER_SCRAPE_CLUSTER | -scrape.cluster | false이면 클러스터 메트릭을 수집하지 않음 | true |
| EXPORTER_SCRAPE_NODE | -scrape.node | false이면 노드 메트릭을 수집하지 않음 | true |
| EXPORTER_SCRAPE_BUCKET | -scrape.bucket | false이면 버킷 메트릭을 수집하지 않음 | true |
| EXPORTER_SCRAPE_XDCR | -scrape.xdcr | false이면 `xdcr` 메트릭을 수집하지 않음 | false |
| | -help | 명령행 도움말 | |
설정 적용¶
- DataKit Prom 플러그인을 활성화하고 sample 파일을 복사합니다
couchbase-prom.conf설정 파일을 수정합니다
[[inputs.prom]]
## Exporter URLs
urls = [""]
## url 요청 오류 무시
ignore_req_err = false
## 수집기 별칭
source = "zookeeper"
## 수집 데이터 출력 소스
# 이 항목을 설정하면 수집한 데이터를 중앙으로 보내지 않고 로컬 파일에 기록할 수 있습니다
# 이후 `datakit --prom-conf /path/to/this/conf` 명령으로 로컬에 저장된 메트릭 집합을 바로 디버깅할 수 있습니다
# 이미 url을 로컬 파일 경로로 설정했다면 `--prom-conf`는 output 경로의 데이터를 우선 디버깅합니다
>
## 수집 데이터 최대 크기, 단위는 바이트
# 데이터를 로컬 파일로 출력할 때 수집 데이터 최대 크기를 설정할 수 있습니다
# 수집 데이터 크기가 이 한도를 초과하면 수집된 데이터는 버려집니다
# 수집 데이터 최대 크기의 기본값은 32MB입니다
# max_file_size = 0
## 메트릭 유형 필터, 선택값은 counter, gauge, histogram, summary입니다
# 기본적으로 counter와 gauge 유형의 메트릭만 수집합니다
# 비어 있으면 필터링하지 않습니다
metric_types = ["counter", "gauge"]
## 메트릭 이름 필터
# 정규식을 지원하며 여러 개를 설정할 수 있고, 그중 하나만 만족해도 됩니다
# 비어 있으면 필터링하지 않습니다
# metric_name_filter = ["cpu"]
## 메트릭 집합 이름 접두사
# 이 항목을 설정하면 메트릭 집합 이름에 접두사를 추가할 수 있습니다
measurement_prefix = ""
## 메트릭 집합 이름
# 기본적으로 메트릭 이름을 밑줄 "_" 기준으로 분리하고, 분리 후 첫 번째 필드를 메트릭 집합 이름으로, 나머지 필드를 현재 메트릭 이름으로 사용합니다
# measurement_name을 설정하면 메트릭 이름을 분리하지 않습니다
# 최종 메트릭 집합 이름에는 measurement_prefix 접두사가 추가됩니다
# measurement_name = "prom"
## 수집 간격 "ns", "us" (or "µs"), "ms", "s", "m", "h"
interval = "10s"
## tags 필터링, 여러 tag를 설정할 수 있습니다
# 일치하는 tag는 무시됩니다
# tags_ignore = ["xxxx"]
## TLS 설정
tls_open = false
# tls_ca = "/tmp/ca.crt"
# tls_cert = "/tmp/peer.crt"
# tls_key = "/tmp/peer.key"
## 사용자 정의 인증 방식, 현재는 Bearer Token만 지원합니다
# token과 token_file: 둘 중 하나만 설정하면 됩니다
# [inputs.prom.auth]
# type = "bearer_token"
# token = "xxxxxxxx"
# token_file = "/tmp/token"
## 사용자 정의 메트릭 집합 이름
# prefix를 포함한 메트릭을 하나의 메트릭 집합으로 묶을 수 있습니다
# 사용자 정의 메트릭 집합 이름 설정은 measurement_name 설정 항목보다 우선합니다
#[[inputs.prom.measurements]]
# prefix = "cpu_"
# name = "cpu"
# [[inputs.prom.measurements]]
# prefix = "mem_"
# name = "mem"
## 사용자 정의 Tags
[inputs.prom.tags]
#some_tag = "some_value"
# more_tag = "some_other_value"
- DataKit 재시작
현재는 ConfigMap 방식으로 수집기 설정을 주입하여 수집기를 활성화할 수 있습니다.
메트릭¶
아래의 모든 데이터 수집에는 기본적으로 host라는 전역 tag(tag 값은 DataKit가 설치된 호스트 이름)가 추가되며, 설정에서 [inputs.prom.tags]를 통해 다른 태그를 지정할 수도 있습니다:
클러스터 메트릭¶
태그
| name | description |
|---|---|
| bucket | 버킷 이름 |
| host | nginx가 설치된 호스트 이름 |
| instance | 호스트 |
메트릭
| name | description |
|---|---|
| cluster_rebalance_status | Rebalancing 상태 |
전체 메트릭은 여기를 참조하세요
노드 메트릭¶
태그
| name | description |
|---|---|
| bucket | 버킷 이름 |
| host | nginx가 설치된 호스트 이름 |
| instance | 호스트 |
메트릭
| name | description |
|---|---|
| node_stats_couch_docs_data_size | 노드의 CouchBase 문서 데이터 크기 |
| node_stats_get_hits | get hits 수 |
| node_uptime_seconds | 노드 가동 시간 |
| node_status | CouchBase 노드 상태 |
전체 메트릭은 여기를 참조하세요
버킷 메트릭¶
태그
| name | description |
|---|---|
| bucket | 버킷 이름 |
| host | nginx가 설치된 호스트 이름 |
| instance | 호스트 |
메트릭
| name | description |
|---|---|
| bucket_ram_quota_percent_used | 버킷이 사용하는 메모리 비율 |
| bucket_ops_per_second | 초당 작업 수 |
| bucket_item_count | 버킷 내 항목 수 |
| bucketstats_curr_connections | 현재 버킷 연결 수 |
| bucketstats_delete_hits | 삭제 hit 수 |
| bucketstats_disk_write_queue | 디스크 쓰기 큐 깊이 |
| bucketstats_ep_bg_fetched | 초당 디스크 읽기 수 |
| bucketstats_ep_mem_high_wat | 자동 evictions를 위한 메모리 사용량 최고 수위 |
전체 메트릭은 여기를 참조하세요
XDCR 메트릭¶
태그
| name | description |
|---|---|
| bucket | 버킷 이름 |
| host | nginx가 설치된 호스트 이름 |
| instance | 호스트 |
메트릭
전체 메트릭은 여기를 참조하세요
로그¶
CouchBase 로그를 수집하려면 다음과 같이 합니다:
- DataKit log 플러그인을 활성화하고 sample 파일을 복사합니다
주의: CouchBase 로그를 수집하려면 DataKit가 CouchBase가 설치된 호스트에 반드시 설치되어 있어야 합니다.
couchbase-prom.conf설정 파일을 수정합니다
# {"version": "1.9.2", "desc": "do NOT edit this line"}
[[inputs.logging]]
## 필수
## 추적할 파일 이름 또는 패턴.
logfiles = [
"/opt/couchbase/var/lib/couchbase/logs/couchdb.log",
]
## glob 필터
ignore = [""]
## 로그 소스입니다. 비어 있으면 'default'를 사용합니다.
source = "couchdb"
## service 태그를 추가합니다. 비어 있으면 $source를 사용합니다.
service = "couchdb"
## Grok 파이프라인 스크립트 이름.
pipeline = ""
## 선택 가능한 status:
## "emerg","alert","critical","error","warning","info","debug","OK"
ignore_status = []
## 선택 가능한 인코딩:
## "utf-8", "utf-16le", "utf-16le", "gbk", "gb18030" or ""
character_encoding = ""
## 패턴은 정규식이어야 합니다. '''이 정규식''' 사용에 유의하세요.
## regexp link: https://golang.org/pkg/regexp/syntax/#hdr-Syntax
# multiline_match = '''^\S'''
auto_multiline_detection = true
auto_multiline_extra_patterns = []
## 텍스트 문자열에서 ANSI 이스케이프 코드를 제거합니다.
remove_ansi_escape_codes = false
## 데이터 전송에 실패하면 영구적으로 재시도합니다.
blocking_mode = true
## 파일이 비활성 상태이면 무시됩니다.
## 시간 단위는 "ms", "s", "m", "h"입니다.
ignore_dead_log = "1h"
## 파일을 처음부터 읽습니다.
from_beginning = false
[inputs.logging.tags]
# some_tag = "some_value"
# more_tag = "some_other_value"