동기화 게이트웨이

Couchbase 동기화 게이트웨이와 함께 Prometheus 및 Grafana 사용

통계의 접근성을 개선하기 위해 Couchbase 동기화 게이트웨이 2.8 릴리스 를 통합하여  프로메테우스 내보내기 기능을 동기화 게이트웨이에 직접 추가하여 모니터링 스택을 설정하는 데 필요한 단계를 줄였습니다. 이 게시물에서는 통계의 출처에 대한 배경과 클라우드 네이티브 모니터링 및 통계 시각화를 위한 Prometheus 서버 및 Grafana 대시보드 설정 단계에 대해 설명합니다.

이 기능은 다음에서 사용할 수 있었습니다. 개발자 미리보기 모드가 2.8 릴리스에서 완전히 지원되는 기능이 되었으며, 2.8.2에서는 기본적으로 활성화되었습니다.

이 블로그 게시물은 일반적으로 이전 버전의 블로그 게시물과 동일한 형식을 따릅니다. "Prometheus 및 Grafana로 Couchbase 동기화 게이트웨이 모니터링" 독립형 동기화 게이트웨이를 사용한 동기화 게이트웨이 모니터링에 대해 설명했습니다. 동기화 게이트웨이 Prometheus 내보내기.

배경

동기화 게이트웨이 통계 보고 

동기화 게이트웨이 통계는 JSON으로 게시되며, 2.8 이전에는 관리자 REST 인터페이스에만 노출되었던 _expvar 엔드포인트를 통해 쉽게 액세스할 수 있습니다. 버전 2.8의 일부로 새로운 메트릭 인터페이스가 추가되어 전용 포트에 동기화 게이트웨이 통계를 노출하는 동시에 관리자 인터페이스는 계속 보호할 수 있습니다. 새로운 메트릭 인터페이스는 또한 새로운  /_metrics 엔드포인트에 통계를 노출하는 프로메테우스 호환 형식. 아래는 사용 가능한 모든 통계 카테고리의 예시입니다.

Sync Gateway Stats "Map"

프로메테우스

Prometheus는 오픈 소스 시스템 모니터링 및 알림 플랫폼으로, Cloud Native Computing Foundation에서 호스팅합니다. 이 플랫폼의 핵심은 'Prometheus 대상'에 대한 통계를 폴링하고 이를 시계열 데이터로 저장하는 역할을 하는 Prometheus 서버입니다. Prometheus 대상은 정적으로 구성되거나 Prometheus에서 검색할 수 있습니다.

Grafana

Grafana는 오픈 소스 데이터 시각화 및 알림 플랫폼입니다. Prometheus를 데이터 소스로 지원하며 종합적인 대시보드를 구축하는 데 사용할 수 있습니다.

프로메테우스 동기화 게이트웨이 

앞서 설명한 것처럼 Prometheus는 통계를 폴링할 대상이 필요합니다. 동기화 게이트웨이 2.8 이전에는 동기화 게이트웨이 외부에 있는 독립형 내보내기가 있었습니다. 이 내보내기는 별도의 애플리케이션으로, 폴링 시 동기화 게이트웨이에서 expvar JSON 메트릭을 가져와 이를 Prometheus 형식으로 변환했습니다. 이제 내보내기 기능이 동기화 게이트웨이에 직접 통합되어 /_metrics 엔드포인트에서 액세스할 수 있으므로 앞으로는 더 이상 이 작업이 필요하지 않습니다. 즉, 구성이 설정되면 Sync Gateway를 Prometheus의 대상으로 바로 사용할 수 있습니다.

Sync Gateway Metrics Endpoint

배포 아키텍처

Typical Couchbase Mobile Setup With Monitoring

  • 동기화 게이트웨이 - 선택한 모든 포트에 메트릭 인터페이스를 노출할 수 있습니다. 이 포트에서 사용할 수 있는 유일한 데이터는 expvar 통계와 Prometheus 통계입니다.
  • Prometheus 서버는 지속적으로 동기화 게이트웨이 인스턴스에서 통계를 폴링합니다. 서버는 yaml 파일을 사용하여 폴링할 동기화 게이트웨이 인스턴스를 검색하고 규칙 yaml을 사용하여 변경 관리자에게 경고를 푸시합니다.
  • Grafana 서비스는 Prometheus 서버와 통신하여 Prometheus 쿼리 언어(promQL)를 사용하여 쿼리하고 통계를 웹 기반 대시보드에 그래프로 표시합니다.

설정

이 글의 나머지 부분에서는 Prometheus와 Grafana를 사용하여 모니터링 기능을 갖춘 동기화 게이트웨이 클러스터를 설정하는 단계를 안내해 드리겠습니다. 이 안내는 개발 환경을 위한 것이지만 프로덕션 환경에 적합하도록 쉽게 수정할 수 있습니다.

이를 쉽게 설정하기 위해 다음을 사용할 것입니다. Docker 환경 설정을 위해 모든 단계를 직접 설치로 비교적 쉽게 변환할 수 있어야 합니다.

Docker 네트워크 만들기

이 프로세스에는 여러 구성 요소와 여러 컨테이너가 관련되어 있으므로 모든 구성 요소를 동일한 Docker 네트워크에서 실행하는 것이 좋습니다. 따라서 다음 명령을 사용하여 sgmonitoring이라는 Docker 네트워크를 생성합니다:

카우치베이스 서버 설정 

동기화 게이트웨이가 통신할 수 있도록 Couchbase Server 인스턴스도 설정해야 합니다. 설정 과정을 더 쉽게 하기 위해 샘플 트래블 샘플 버킷과 Sync Gateway가 연결에 사용할 '애플리케이션 액세스' 권한이 있는 사용자와 함께 Couchbase Server v6.0.1이 포함된 사전 구성된 Docker 이미지를 사용하겠습니다.

또는 Couchbase Server의 바닐라 Docker 이미지를 설치하고 버킷과 사용자를 수동으로 설정할 수도 있습니다.

동기화 게이트웨이 설정

동기화 게이트웨이를 설정하려면 먼저 동기화 게이트웨이를 카우치베이스 서버 인스턴스에 연결하고 메트릭 인터페이스를 노출하는 적절한 구성을 설정해야 합니다. 사용되는 구성은 다음과 같습니다:

이러한 구성 옵션의 대부분은 비교적 익숙할 것이며 유일한 새로운 옵션은 다음과 같습니다. 메트릭 인터페이스. 앞서 언급했듯이 이 옵션을 사용하면 JSON expvars와 Prometheus 형식의 메트릭이 나머지 동기화 게이트웨이 REST 인터페이스와는 별도의 포트에 모두 노출될 수 있습니다. 기본적으로 메트릭 인터페이스는 "127.0.0.1:4986"에 노출되며, 이는 기본적으로 로컬 호스트에서만 사용할 수 있음을 의미합니다. 위의 구성 예에서는 이를 ":4986"으로 수정하여 4986 포트의 모든 주소에 노출되도록 했습니다. 이 구성은 어디에나 저장할 수 있지만 다음 명령은 현재 디렉터리에 "sync-gateway-config.json"으로 저장되어 있다고 가정합니다.

그런 다음 다음을 사용하여 동기화 게이트웨이 인스턴스를 불러올 수 있습니다:

동기화 게이트웨이가 실행 중이고 metricsInterface가 활성화되어 있는지 확인하려면 http://localhost:4986/_metrics 에서 액세스할 수 있는 엔드포인트에서 Prometheus 통계를 가져와 보세요. 아래는 엔드포인트에서 가장 아래에 있는 메트릭의 일부입니다.

Prometheus 및 Grafana 샘플 구성 받기

설정의 이 시점에서는 동기화 게이트웨이 인스턴스가 Couchbase Server와 통신하고 있으며, 해당 인스턴스에는 Prometheus 메트릭 엔드포인트가 노출되어 있습니다.

다음 몇 단계에서는 Prometheus 및 Grafana 서버를 설정합니다. 미리 준비된 Prometheus 구성 파일과 예제 Grafana 대시보드는 Sync Gateway GitHub 리포지토리의 예제 디렉터리에서 찾을 수 있습니다. 작업 디렉터리에서 아래 명령을 실행하기만 하면 이 파일을 얻을 수 있습니다.

프로메테우스

이제 /_metrics 엔드포인트에서 읽을 Prometheus 서버를 설정해야 합니다. 

prometheus.yml 파일 구성

prometheus.yml 파일은 Prometheus 서버의 기본 설정을 구성합니다. 예시 prometheus.yml 파일은 이전에 다운로드한 동기화 게이트웨이 리포지토리의 예제/프로메테우스 폴더에 있습니다. 파일에는 여러 매개변수가 있으며 각 매개변수는 아래에 설명되어 있습니다:

  • 스크랩_간격 는 Prometheus 서버가 메트릭 엔드포인트를 폴링하는 빈도를 지정하는 매개변수입니다.
  • 평가_간격 는 규칙을 평가하는 빈도를 지정하는 매개변수입니다. 규칙에 대한 자세한 설명은 아래에 나와 있습니다.

  • 규칙_파일 매개변수는 Prometheus 규칙 파일 디렉터리의 위치를 지정합니다. 위의 구성 파일에 정의된 대로 /etc/prometheus/rules 디렉터리에 마운트해야 하는 예제 디렉터리의 examples/prometheus/rules/sync-gateway.rules.yml에 Prometheus 규칙 파일을 미리 준비해 놓았습니다. 이 마운팅은 docker 컨테이너 설정 명령의 일부로 표시됩니다. 예제 규칙 파일에는 몇 가지 알림과 쿼리 수를 total_queries라는 새 레코드로 집계하는 레코드가 포함되어 있습니다.

- 그리고 스크랩_컨피그 매개변수는 통계를 수집하기 위해 Prometheus가 통신할 대상을 지정하는 데 사용됩니다. 이것은 대상 이름을 'swg'로 지정하며, 이 대상은 sync_gateway:4986/_metrics에서 폴링할 수 있습니다. 동일한 Docker 네트워크의 일부인 경우 해당 이름을 가진 다른 컨테이너와 통신할 수 있으므로 sync_gateway를 사용하여 동기화 게이트웨이 인스턴스와 통신할 수 있습니다.

도커 컨테이너 설정

복제된 동기화 게이트웨이 디렉토리로 이동한 다음 아래 명령을 실행합니다. 이 탐색은 아래 명령에 사용된 yaml 파일에 액세스하는 데 필요하며, 또는 이러한 파일을 선택한 작업 디렉터리로 이동할 수도 있습니다.

이렇게 하면 동기화 게이트웨이 인스턴스를 대상으로 하는 Prometheus 컨테이너가 설정됩니다. 이는 웹 브라우저에서 http://localhost:9090 에 접속하여 확인할 수 있습니다. "상태" 버튼을 클릭한 다음 "대상" 버튼을 클릭하여 대상이 올바르게 설정되었는지 확인합니다. 타겟이 (1/1 업) 상태인지 확인합니다.

Prometheus View Of Sync Gateway Target

Grafana 

이제 통계를 시각화할 수 있는 Grafana를 설정하겠습니다. 앞서 언급했듯이 사용 가능한 대부분의 통계를 유용하다고 생각되는 방식으로 표시하는 Grafana 대시보드를 미리 준비했지만, 웹 UI 내에서 완전히 구성할 수 있으므로 필요에 가장 적합하게 변경할 수 있습니다.

먼저 아래 명령어를 사용하여 Grafana Docker 이미지를 설치해야 합니다:

이 명령의 -v 플래그는 대시보드 및 기타 관련 데이터를 유지하는 데 사용되는 Grafana 데이터베이스를 바인딩합니다. 위 명령에서는 이 디렉터리를 현재 디렉터리인 grafana/data 폴더에 바인딩하고 있지만, 필요한 경우 다른 곳에 바인딩할 수도 있습니다.

기본 대시보드는 예제/그라파나 디렉터리에 있는 동기화 게이트웨이 리포지토리의 일부로 사용할 수 있습니다. 이 디렉터리에는 두 가지 옵션이 있습니다:

  •  실행 그라파나 만들기 이렇게 하면 grafana 대시보드.json 파일이 생성되며, 이 파일을 Grafana로 가져올 수 있습니다. 이 작업을 수행하는 방법에는 두 가지가 있습니다: 브라우저를 통해 업로드 또는 API를 통한 업로드.
  •  실행 그라파나-개발 만들기 위의 명령을 실행하여 dashboard.json 파일을 생성한 다음, 로컬 호스트:3000에서 실행될 것으로 예상되는 Grafana 인스턴스에 대시보드를 업로드하고 포트 3000에서 컨테이너 이름이 "prometheus"인 Prometheus 데이터 소스를 설정하려고 시도할 것입니다.

 이러한 명령에는 다음이 필요합니다. Golang 그리고 Jsonnet 를 설치해야 성공적으로 실행할 수 있습니다. 요구 사항 및 잠재적인 문제 해결 단계에 대한 자세한 내용은 다음을 참조하세요. README

스크립트가 성공적으로 실행되면 Grafana 내에서 동기화 게이트웨이 대시보드를 사용할 수 있어야 합니다. 확인하려면 웹 브라우저에서 Grafana를 열고 로그인하면 됩니다. 기본 자격 증명은 사용자 이름 "admin"과 비밀번호 "admin"입니다.

Grafana Login Page

로그인하면 사용 가능한 대시보드 목록에서 "Couchbase 동기화 게이트웨이 대시보드"를 찾을 수 있습니다. 

Grafana Dashboard Page Showing Sync Gateway Dashboard

이를 클릭하면 기본 대시보드에 그래프로 표시된 다양한 통계를 모두 볼 수 있습니다:

Sync Gateway Grafana Dashboard Snippet

각 패널은 완전히 구성할 수 있으며, 패널을 클릭하면 특정 그래프나 기타 구성 요소가 어떻게 만들어지는지 비교적 쉽게 확인할 수 있습니다. 이 대시보드는 완전한 기능을 갖추고 있지만 실제로 프로덕션에 사용하기 위한 것이 아니라 특정 사용 사례를 더 잘 지원하기 위해 대시보드를 구축할 수 있는 방법과 가능성에 대한 예시를 보여주기 위한 것입니다.

이것으로 모든 작업이 완료되었습니다! 기본 제공 Prometheus 내보내기 및 Grafana 대시보드를 사용하여 동기화 게이트웨이에 대한 모니터링을 성공적으로 설정했습니다.

요약

동기화 게이트웨이의 새로운 메트릭 엔드포인트는 동기화 게이트웨이 클러스터의 상태 및 상태 모니터링을 대폭 간소화합니다. Prometheus 내보내기 기능을 Sync Gateway에 직접 구축함으로써 전체 프로세스를 비교적 쉽게 만들 수 있으므로 별도의 내보내기가 필요하지 않습니다. 특히 클라우드 네이티브 환경의 경우 별도의 내보내기 컨테이너를 배포하고 관리할 필요 없이 사이드카 패턴.

또한 동기화 게이트웨이에서 제공하는 통계와 Prometheus 내보내기 기능을 쉽게 보여줄 수 있는 Grafana 대시보드도 제공했습니다. 이 대시보드를 사용자 지정하면 그래픽을 조정하여 설정에 적용되는 통계를 더 잘 모니터링할 수 있습니다.

질문이나 피드백이 있으시면 아래에 댓글을 남기거나 다음 주소로 언제든지 문의해 주세요. jacques.rascagneres@couchbase.com

 

 

 

 

 

 

 

 

 

 

 

 

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 Jacques Rascagneres, 동기화 게이트웨이 소프트웨어 엔지니어

Jacques Rascagneres는 카우치베이스의 소프트웨어 엔지니어로 카우치베이스 모바일 팀의 일원으로 동기화 게이트웨이를 담당하고 있습니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.