Kubernetes

Prometheus가 포함된 Couchbase Autonomous Operator 2.0 - 2부

전제 조건

에서 언급했듯이 1부 블로그의 경우, Amazon EKS의 Kubernetes 환경에서 Prometheus와 Grafana를 실행해야 합니다. 권장되는 방법은 큐브-프로메테우스오픈 소스 프로젝트입니다. 이렇게 하면 배포가 간소화될 뿐만 아니라 다음과 같은 훨씬 더 많은 구성 요소가 추가됩니다. Prometheus 노드 익스포터 는 Linux 호스트 메트릭을 모니터링하며 일반적으로 Kubernetes 환경에서 사용됩니다. 

복제 https://github.com/coreos/kube-prometheus 리포지토리에 저장하되 아직 매니페스트는 만들지 마세요.

이 패키지에 포함된 구성 요소:

참고:

이 튜토리얼은 Prometheus Operator에 대한 관련 리소스를 불러오는 매니페스트가 여전히 폴더에 있다는 것을 전제로 작동합니다. 매니페스트.

리포지토리는 실험 중이며 변경될 수 있으므로 변경 사항이 있는 경우 그에 따라 조정하세요.

 

카우치베이스 서비스모니터 만들기

ServiceMonitor는 카우치베이스 내보내기가 제공하는 들어오는 메트릭에 대해 Prometheus가 스크랩하는 엔드포인트를 정의하는 서비스 리소스를 모니터링하도록 Prometheus에 지시합니다. 이 파일입니다,couchbase-serviceMonitor.yaml는 다음과 같아야 합니다. 큐브-프로메테우스/매니페스트 디렉터리로 이동합니다. 

범례:

  1. 카우치베이스를 포함할 수 있습니다. 서비스 모니터 에서 모니터링 네임스페이스와 함께 다른 서비스 모니터. 이 튜토리얼의 예제를 위해 방금 만든 기본값 네임스페이스를 사용하여 쉽게 사용할 수 있습니다.
  2. 그리고 포트 는 문자열 값일 수 있으며 이름이 일치하는 한 서비스의 다른 포트 번호에서도 작동합니다.
  3. 간격 는 프로메테우스에게 엔드포인트를 얼마나 자주 스크래핑할지 알려줍니다. 여기서는 네임스페이스와 일치시키려고 합니다. 서비스 다음 단계에서 만들게 될 것입니다,
  4. 네임스페이스는 서비스 가 실행될 네임스페이스는 메트릭을 스크랩하려는 Couchbase 클러스터의 네임스페이스와 동일해야 합니다.
  5. 유사하게 네임스페이스 선택자이 간단한 레이블 선택기 를 클릭하면 생성할 서비스를 선택할 수 있습니다.

Couchbase 메트릭 서비스 만들기

그리고 서비스 에서 서비스 모니터에 설명한 포트를 정의합니다. spec.endpoint[0].port 아까 그 파일요couchbase-service.yaml는 다음과 같아야 합니다. 큐브-프로메테우스/매니페스트 디렉터리로 이동합니다. 

범례:

  1. 앞서 언급했듯이 서비스 가 메트릭을 스크랩하려는 Couchbase 클러스터와 동일한 네임스페이스에 있는지 확인해야 하며, 그렇지 않으면 파드가 선택되지 않고 Prometheus Targets에 엔드포인트가 표시되지 않습니다. 또한 이 값이 다음 값과 일치하는지 확인하세요. spec.namespaceSelector 에서 서비스 모니터.
  2. 이 포트는 카우치베이스 익스포터가 내보낼 포트이므로 기본값인 9091로 유지하세요.
  3. 동일한 네임스페이스에서 둘 이상의 Couchbase 클러스터가 실행되는 시나리오에서는 선택기에 더 세분화된 수준을 추가할 수 있습니다.

프로메테우스 동적 서비스 검색

Prometheus는 ServiceMonitor의 레이블을 클러스터와 엔드포인트(이 경우 포트 9091)를 지정하는 서비스와 일치시켜 모니터링 엔드포인트를 동적으로 검색합니다.

적하목록 생성

에 주어진 특정 명령을 따르십시오. Github README 를 클릭하면 생성된 리소스와 함께 제공된 다른 기본 매니페스트를 불러올 수 있습니다.

그러면 Prometheus, AlertManager, NodeExporter 및 Grafana와 같은 구성 요소가 시작되어야 하며 네임스페이스에서 파드를 검사하여 이를 확인할 수 있습니다. 모니터링.

시작하겠습니다.

쿠버네티스 네임스페이스 및 CRD 생성하기

다음 단계로 넘어가기 전에 몇 분 정도 기다리되, 모든 구성 요소가 성공적으로 생성되려면 명령을 여러 번 실행해야 할 수도 있습니다.

나머지 리소스 만들기

네임스페이스 모니터링 확인

그러면 Prometheus, AlertManager, NodeExporter 및 Grafana와 같은 구성 요소가 시작되어야 하며 네임스페이스에서 파드를 검사하여 이를 확인할 수 있습니다. 모니터링.

ServiceMonitor가 생성되었는지 확인합니다.

서비스가 생성되었는지 확인합니다.

위의 출력에서는 서비스뿐만 아니라 포트도 볼 수 있습니다. 이 정보를 사용하여 Couchbase 관리 UI에서 했던 것처럼 이러한 서비스에 액세스하기 위해 이러한 포트를 전달할 것입니다.

Prometheus 운영자 배포에서 모든 것이 올바르게 작동하는지 확인하려면 다음 명령을 실행하여 로그를 확인합니다:

포트 포워딩

이전에 이미 한 CouchBase 노드에서 CouchBase 관리자 UI 포트 8091을 전달한 적이 있지만 이번에는 서비스 관점에서 다시 전달해드리겠습니다. 

이 포트 외에도 실제로는 Grafana 서비스 액세스 포트 3000만 필요합니다. 하지만 Prometheus 서비스 포트 9090에도 액세스해 보겠습니다. 그러면 여러 내보내기의 모든 메트릭을 살펴보고 Prometheus 쿼리 언어인 PromQL도 사용해 볼 수 있습니다. 

이제 위의 3가지로 충분할 것입니다. 그러나 각 개별 서비스의 메트릭도 살펴보면 몇 가지 추가적인 이점이 있습니다. Couchbase 내보내기는 포트 9091에 Couchbase 메트릭을 노출합니다. 따라서 해당 포트도 전달할 수 있습니다. 실제로는 Grafana에 대한 액세스 권한만 있으면 됩니다.

프로메테우스 타깃 확인

액세스: https://localhost:9090/targets

모든 Prometheus 타깃이 UP되어야 합니다. Kube-Prometheus가 많은 내보내기를 배포했기 때문에 이러한 타깃이 꽤 많이 있습니다.

Couchbase 원시 메트릭을 확인하세요.

액세스: https://localhost:9091/metrics

이 출력은 목록을 빠르게 검색할 수 있어 유용합니다.

기본적인 PromQL 쿼리를 사용해 보세요.

위의 UI에서 그래프 먼저.

드롭박스에서 스크랩한 메트릭 목록을 확인할 수 있습니다. 다음은 전체 목록입니다. 모두 에 의해 스크랩된 메트릭 모두 내보내려면 꽤 많은 목록이 필요합니다. 물론 앞서 설명한 대로 9091 엔드포인트에 액세스하여 Couchbase 메트릭으로만 목록을 좁힐 수 있는 한 가지 방법이 있습니다.

Grafana 확인

액세스: https://localhost:3000

사용자 아이디와 비밀번호: admin/admin

Grafana의 큐브-프로메테우스 배포 이미 에는 Prometheus 데이터 소스가 정의되어 있으며 기본 대시보드. 를 확인해 보겠습니다. 기본 노드 대시보드

카우치베이스 메트릭을 모니터링하는 샘플 Grafana 대시보드 만들기

완전한 대시보드는 만들지 않고 몇 개의 패널로 구성된 작은 샘플을 만들어서 그 작동 방식을 보여드리겠습니다. 이 대시보드는 버킷에 있는 항목 수와 GET 및 SET 작업의 수를 모니터링합니다.

참고: 1부에서 설명한 대로 베개 싸움 애플리케이션을 실행하세요. 이렇게 하면 모니터링하고자 하는 작업이 생성됩니다.

프로메테우스 메트릭

액세스: https://localhost:9091/그래프

우리는 버킷의 현재 항목에 관심이 있습니다. 이를 제공하는 몇 가지 메트릭이 있는데, 클러스터 전체와 노드별로 제공됩니다. 노드별 메트릭을 사용하겠습니다. 그러면 모범 사례에 따라 Prometheus가 모든 집계를 처리하도록 할 수 있습니다. 또 다른 장점은 데이터 세트가 왜곡되어 있는지 확인하기 위해 버킷의 현재 항목을 노드별로 표시할 수도 있다는 것입니다.

한 가지 요소를 살펴보겠습니다:

위의 예에서는 이러한 레이블에 관심이 있습니다: 버킷의 일부 노드 (가운데 부분) cb-예시 클러스터 이름인 pod. 또한 다음에도 관심이 있습니다. 서비스 를 사용하여 필터링할 수 있습니다. 이렇게 하면 버킷, 노드 또는 클러스터별로 메트릭을 볼 수 있는 대시보드를 디자인하는 데 도움이 됩니다.

샘플 대시보드

새 빈 샘플 대시보드를 만들어 보겠습니다.

변수 추가

버킷, 노드 및 클러스터별 메트릭이 필요하므로 이러한 변수를 추가하여 드롭박스에서 선택할 수 있도록 하겠습니다.

위의 예는 변수 버킷을 생성합니다. 쿼리 및 정규식 표현식에 주목하세요. 

변수를 2개 더 생성하여 3개의 변수를 만들어 보겠습니다:

이 세 가지 쿼리는 변경되지 않지만 정규식 표현식은 다음과 같습니다:

패널 만들기

현재 항목, GET 및 SET에 대한 3개의 패널 만들기

각 패널을 복제하여 편집할 수 있습니다. 다음은 쿼리입니다:

항목 패널: 합계(cbpernodebucket_curr_items{버킷=~"$버킷",포드=~"$노드"}) by (버킷)

GETs 패널: sum(cbpernodebucket_cmd_get{버킷=~"$버킷",포드=~"$노드"}) by (버킷)

SETs 패널: 합계(cbpernodebucket_cmd_set{버킷=~"$버킷",포드=~"$노드"}) by (버킷)

완성된 샘플 Grafana 대시보드

최종 샘플 대시보드의 모습은 다음과 같습니다.

정리

마지막으로 배포를 정리합니다:

리소스:

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

Author

Posted by 프라사드 도디

Prasad is a Senior Product Manager in Couchbase Cloud. Prior to Couchbase, he worked at IBM in various departments including Development, QA, Support and Technical Sales. Prasad holds a master’s degree in Chem. Engg. from Clarkson University, NY.

댓글 남기기

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

구축 시작

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

카펠라 무료 사용

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

연락하기

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