카우치베이스 서버에는 현재 KV 및 쿼리 단위의 데이터 액세스 처리량부터 디스크 IO 및 CPU와 같은 시스템 리소스, 이벤트와 같은 최신 서비스에 이르기까지 수많은 통계가 있습니다. 커뮤니티에서 작성한 수많은 Prometheus 내보내기 도구가 Couchbase용으로 작성되었으며, 또한 수출자 동기화 게이트웨이를 모니터링하는 데 사용할 수 있으며, 그 여세를 몰아 Kubernetes와 OpenShift에 공식적으로 동기화 게이트웨이를 먼저 추가하고 있습니다.

자율 운영자 2.0의 출시와 함께, 운영자 관리형 배포와 함께 Prometheus 통계가 지원됩니다. 하지만 아직 공식적으로 지원되며, 동일한 목표를 달성하기 위한 대체 런타임 구성도 있습니다. 이에 대한 자세한 내용은 마지막에 설명합니다.

이 블로그 게시물에서는 Prometheus 및 Grafana와 함께 내보내기를 설정하는 방법과 모니터링하는 방법에 대한 간략한 개요를 제공합니다. NoSQL 데이터베이스.

배경

따라서 내보내기의 작업은 이러한 메트릭을 가져와 Prometheus 친화적인 형식으로 출력하는 것입니다.

버킷 정보에 있는 다음과 같은 Couchbase Server의 REST 엔드포인트 통계를 다음과 같이 변환합니다.

다음과 같은 형식으로

이와 같은 대시보드를 만드는 데 사용할 수 있습니다.

컴포넌트 수준에서는 다음과 같이 결합됩니다:

각 구성 요소에 대해 조금 더 자세히 살펴보겠습니다.

카우치베이스 익스포터 

본질적으로 카우치베이스 익스포터는 Prometheus 서버에서 정의한 간격으로 가져오는 Prometheus 엔드포인트를 제공함으로써 이 워크플로우의 첫 번째 빌딩 블록을 제공합니다. 이를 통해 TLS 및 mTLS를 통한 네트워크 보안과 무기명 토큰을 통한 수출자의 잠재적인 민감한 데이터 보호 옵션도 제공합니다. 

자율 운영자 내에서 실행되는 동안, 카우치베이스 익스포터는 각 쿠버네티스 파드에서 사이드카로 존재하며, 특정 노드 통계와 관련하여 로컬 네트워킹을 극대화하고 클러스터 내 트래픽 양을 줄입니다. 또한 어느 정도의 중복성을 제공할 뿐만 아니라 하나의 파드가 다운되더라도 전체 클러스터 통계와 활성 파드의 통계는 유지됩니다.

즉, 이러한 노드별 통계를 사용하려면 Couchbase를 실행하는 각 노드가 내보내기의 복사본을 실행해야 합니다. 그러면 내보내기의 각 복사본은 실행 중인 노드에서 노드별 통계만 가져옵니다. 그런 다음 이러한 내보내기 각각은 일단 구성되면 모든 Prometheus 서버가 스크래핑할 수 있는 엔드포인트를 실행합니다.

프로메테우스

Prometheus는 오픈 소스 시스템 모니터링 및 알림 툴킷으로, Kubernetes에 이어 CNCF에 가입한 두 번째 프로젝트이므로 Kubernetes 환경에 자연스럽게 적합하며 널리 채택되고 있습니다.

대시보드 도구가 아니라 시계열 데이터베이스를 채우기 위한 프로토콜 및 도구 키트에 가깝습니다. 통계를 그래프로 표시하는 가벼운 기능도 있지만 Grafana를 사용하는 것이 더 일반적입니다. 

Grafana

Prometheus에서 수집한 데이터를 시각화하기 위해, 사용자 정의 가능한 대시보드를 만들기 위해 Prometheus API를 사용하는 놀랍도록 유연한 Grafana를 사용할 수 있습니다. Grafana는 오픈 소스 데이터 시각화 및 알림 플랫폼으로, 주로 놀랍도록 포괄적이고 사용자 정의 가능한 대시보드를 구축하는 데 사용됩니다.

대시보드는 사용자의 관심사에 따라 매우 구체적일 수 있으므로 그에 맞게 사용자 정의하고 싶을 것입니다. 시작점이 필요한 경우, 몇 가지 샘플 Grafana 대시보드가 있습니다. 카우치베이스 익스포터 GitHub 리포지토리 시간이 지남에 따라 개선될 예정입니다. 기여를 환영합니다!

설치

모든 것을 작동시키려면 이 모니터링 파이프라인의 네 가지 주요 구성 요소인 Couchbase Server 자체, Couchbase Exporter, Prometheus 및 Grafana를 설정해야 합니다.

내보내기는 Couchbase Server 버전 5.5.x 이상과 호환되지만, 곧 5.x의 EOL이 예정되어 있으므로 버전 6.0.4 이상을 사용하는 것이 좋습니다.

Grafana 구성

Grafana를 설치하고 설정하려면 해당 플랫폼을 선택하고 설치 과정을 따르세요. 가이드. 실행이 완료되면, Grafana를 처음 로드할 때 http://localhost:3000 를 입력하면 사용자 아이디와 비밀번호를 묻는 메시지가 표시되며, 두 가지 모두 'admin'입니다. 그런 다음 새 비밀번호를 설정하라는 메시지가 표시됩니다. 

다음 단계는 Prometheus를 데이터 소스로 추가하는 것입니다. Prometheus를 실행하는 위치에 따라 HTTP URL 주소는 로컬 호스트 또는 호스팅하거나 노출한 주소(포트 9090)가 됩니다. 아래는 Docker에서 실행되는 Prometheus의 예시입니다.

그런 다음 샘플 대시보드 중 하나를 가져와서 데이터를 시각화할 수 있습니다. 원하는 대시보드를 가져오려면 왼쪽 사이드바의 더하기 아이콘 위로 마우스를 가져가서 '가져오기'를 선택합니다. 시작점으로 를 복사하여 붙여넣습니다. 내보내기 Grafana 폴더에 제공된 JSON 를 클릭한 다음 로드를 누릅니다.

설정 -> 변수 -> 버킷으로 이동하여 업데이트를 눌러야 올바른 버킷이 로드되고 데이터가 표시될 수 있습니다.

보안

내보내기는 무기명 토큰 플래그를 사용하여 메트릭 정보를 볼 수 있는 사람을 제한할 뿐만 아니라 TLS 및 mTLS를 통한 통신을 지원합니다. 카우치베이스 오퍼레이터와 함께 베어러 토큰은 쿠버네티스 시크릿으로 제공됩니다. TLS와 mTLS는 쿠버네티스 운영자의 전체 클러스터. 무기명 토큰을 시크릿으로 사용하는 예시입니다:

독립형에서는 "-token" 플래그를 사용하여 토큰 파일의 위치를 제공하고, 모든 PKI 리소스에 대해서는 "-key", "-cert" 및 "-ca" 플래그를 사용하여 유사하게 제공합니다. 여기서 "-key"는 사용할 개인 키, "-cert"는 인증서 체인, "-ca"는 최상위 인증 기관을 나타냅니다.

독립 실행형 실행

아직 공식적으로 지원되지는 않지만, 앞서 언급했듯이 이를 프로세스로 실행하거나 Couchbase Server 노드와 함께 Docker 컨테이너로 실행할 수 있습니다.

내보내기의 경우, 소스 코드를 카우치베이스/카우치베이스 익스포터 GitHub 리포지토리.

또는 다음에서 공식 Dockerhub 이미지를 가져올 수 있습니다. 여기

그러나 이것은 항상 최신 버전이 아닐 수도 있지만 git 리포지토리는 최신 버전이 될 것입니다.
내보내기를 로컬에서 실행하려면 다음 명령을 사용하면 됩니다.

고급 구성에 대한 자세한 내용은 사용 설명서에 나와 있는 지침을 따르세요.

내보내기와 마찬가지로 로컬에서나 Docker를 통해 Prometheus를 실행할 수 있습니다.
로컬에서 Prometheus 다운로드 및 실행를 클릭한 다음 제공된 prometheus.yml 에 대한 조회를 포함하는 스크래프_구성 작업이 포함된 스크래프_구성 작업을 포함합니다. localhost:9091 - 로컬로 실행하는 경우 내보내기 메트릭이 제공되어야 하는 곳입니다. 그렇지 않은 경우 스크래핑_설정 작업에 내보내기에 대한 올바른 IP 주소가 포함되도록 필요한 경우 파일을 적절히 편집하세요.

- job_name: 'couchbase'

# 이러한 정밀도가 필요한 경우 이 두 값을 최소 1초 단위로 설정할 수 있습니다.
스크랩_간격: 60초 
스크래핑_타임아웃: 55s

 metrics_path: /metrics

static_configs:
   - 타겟: ['localhost:9091']

Docker를 통해 실행하려면 prometheus.yml 파일이 올바른지 확인한 다음 다음 명령 중 하나를 실행하세요:

이미지를 백그라운드에서 분리하여 실행하려면 플래그 -d를 사용합니다.
출처: https://prometheus.io/docs/prometheus/latest/installation/#using-docker

메트릭을 호스팅하는 Prometheus 및 내보내기를 다음 주소에서 실행합니다. localhost:9091/metrics, 를 클릭하고 내보내기 URL이 Prometheus 대상 목록에 표시되어야 합니다. localhost:9090/targets 를 클릭하고 UP으로 보고합니다.


내보내기와 Prometheus를 모두 Docker에서 실행하는 경우 설정이 약간 더 복잡해집니다. 다음 명령을 사용하세요. 도커 네트워크 목록 그리고 도커 네트워크 검사 를 사용하여 Couchbase Exporter 컨테이너의 IPv4 주소를 찾은 다음 이 값을 localhost 를 스크랩 대상 목록에 추가합니다.

다음 단계

이 프로젝트의 목표 중 하나는 카우치베이스용 공식 Prometheus 익스포터를 제공하는 것입니다. Prometheus와 이전에 존재했던 익스포터는 오픈 소스이기 때문에 프로젝트에 대한 커뮤니티 기여를 적극적으로 장려하고자 합니다.

버그, 문제 또는 기능 요청이 있는 경우, JIRA를 사용해 주세요.

카를로스 베커와 나머지 팀원들에게 특별히 감사드립니다. 기여자 이 프로젝트의 기본 영감을 제공한 Leansys 카우치베이스 익스포터와 TOTVS Labs 카우치베이스 익스포터 프로젝트에 감사드립니다!

추가 리소스

자율 운영자 2.0이 출시되었습니다, 문서에 튜토리얼이 제공됩니다..

이 글을 쓰는 시점에 Prometheus와 Grafana를 설정하는 가장 간단한 방법 중 하나는 Prometheus 오퍼레이터를 사용하는 것입니다. 링크된 튜토리얼은 kube-prometheus GitHub 프로젝트와 그에 해당하는 헬름 차트를 다룹니다.

https://github.com/coreos/kube-prometheus

https://github.com/helm/charts/tree/master/stable/prometheus-operator

https://github.com/coreos/prometheus-operator

 

작성자

게시자 Daniel Ma, 소프트웨어 엔지니어, Couchbase

맨체스터 지사에서 근무하는 소프트웨어 엔지니어로, 1년 반 넘게 Couchbase Autonomous Operator를 개발해 왔습니다.

댓글 남기기