AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

배포 모니터링

이 페이지에서는 Kubernetes 연산자용 MongoDB 컨트롤러를 사용하여 관리하는 MongoDB Search 및 벡터 검색 배포서버를 모니터링하는 방법을 설명합니다. 다음 같은 과찰 표면은 mongot 팝에서 사용할 수 있습니다.

  • Prometheus 호환 /metrics 엔드포인트입니다.

  • 과 을 노출하는 상태 확인 /health /ready엔드포인트입니다.

  • 팟의 stdout 및 stderr에 쓰여진 구조화된 JSON 로그.

  • 지원 및 사후 분석을 위한 FTDC (전시간 진단 데이터 캡처) 파일.

spec.clusters[].loadBalancer.managed를 통해 연산자 관리하는 load balancer를 활성화하면 Kubernetes Operator는 자체 관리 및 지표 표면을 노출하는 Envoy 프록시도 프로비저닝합니다.

이 페이지에서 참조되는 각 MongoDBSearch 설정의 전체 스키마는 MongoDB Search 및 벡터 검색 설정을 참조하세요. 특정 런타임 문제를 진단하고 해결하려면 mongot 배포서버 문제 해결을 참조하세요.

mongot 의 가장 직접적인 가용 신호는 Pod 의 상태와 MongoDBSearch 리소스의 상태입니다.

팝 상태와 재시작 횟수를 확인합니다.

kubectl get pods -n <namespace> --context <context> | grep search

건강한 mongot 팝은 모든 컨테이너가 준비되고 재시작 횟수가 증가하지 않는 Running 상태를 보고합니다. 재시작 횟수가 증가하면 메모리 부하 또는 구성 오류를 나타냅 수 있습니다. 자세한 내용은 mongot 배포서버 문제 해결을 참조하세요.

MongoDBSearch 리소스 상태 및 조건 검사:

kubectl describe mongodbsearch <MongoDBSearch.metadata.name> \
-n <namespace> --context <context>

기본적으로 mongot Prometheus 지표 엔드포인트는 비활성화되어 있습니다. 이를 활성화하려면 MongoDBSearch 리소스에 spec.observability.prometheus 블록을 추가하세요. 빈 블록은 기본 포트 9946에서 엔드포인트를 활성화합니다.

spec:
observability:
prometheus: {}

기본 값이 아닌 포트를 사용하려면 spec.observability.prometheus.port을 설정하세요.

spec:
observability:
prometheus:
port: 9090

엔드포인트는 팝 내부에 노출되며 구성된 포트에서 mongot 컨테이너의 팝 IP를 통해 액세스할 수 있습니다. Kubernetes 연산자는 지표 엔드포인트를 인증하지 않습니다.

클러스터가 Prometheus 연산자를 실행하는 경우 PodMonitor (포드 단위 스크랩이 권장됨) 또는 ServiceMonitor (서비스로 전면에 있는 경우)로 mongot 지표 엔드포인트를 스크랩합니다. Kubernetes 연산자가 mongot 파드에 적용하는 레이블과 일치시키고 spec.observability.prometheus.port에서 구성한 포트를 대상으로 합니다.

Prometheus의 ServiceMonitorMongoDB 리소스를 배포하는 예시는 Prometheus와 함께 사용할 리소스 배포를 참조하십시오.

mongot Prometheus 표면에서는 다음 카테고리의 지표를 노출합니다.

  • JVM — 힙 및 비힙 메모리, 가버지 컬렉션 횟수 및 일시 중지 시간, 스레드 횟수, 클래스 로더 통계.

  • 시스템mongot 프로세스의 CPU 사용량, 시스템 메모리, 디스크 사용량, 네트워크 I/O.

  • 인덱스 별 — 인덱스 크기, Lucene 문서 및 필드 개수, 인덱스 상태, 마지막 업데이트 타임스탬프.

  • 검색 엔진 — 쿼리 카운트, 실패한 쿼리 카운트, 쿼리 지연 시간 히스토그램.

지표 전송기는 mongot 지표를 MongoDB Ops Manager로 보내어 다른 배포 지표와 함께 볼 수 있게 합니다. Kubernetes 연산자는 mongot 지표 엔드포인트를 스크래하고 지표를 MongoDB Ops Manager로 푸시하는 별도의 Kubernetes Deployment 로 전송기를 배포합니다.

지표 전송기는 MongoDB Ops Manager 8.0.25 이상이 필요하며 Cloud Manager는 지원하지 않습니다.

포워더를 구성하려면 MongoDBSearch 리소스에서 spec.observability.metricsForwarder 아래의 다음 필드를 설정합니다.

  • mode Kubernetes 연산자가 포워더를 배포할 지 여부를 제어합니다. 다음 값 중 하나로 설정합니다.

    • auto (기본값) 내부 MongoDB 소스와 opsManager을 설정하는 경우 외부 소스에 대한 포워더를 자동으로 배포합니다.

    • enabled 항상 포워더를 배포합니다.

    • disabled 포워더를 배포하지 않습니다.

  • opsManager.projectConfigMapRef Ops Manager 프로젝트 구성이 있는 ConfigMap의 이름을 지정합니다. ConfigMap에 다음 키를 입력합니다.

    • baseUrl: Ops Manager 인스턴스의 URL입니다.

    • projectName: MongoDB Ops Manager 프로젝트 이름입니다.

    • orgId: MongoDB Ops Manager 조직의 ID입니다.

  • opsManager.agentCredentials Ops Manager API 키를 보관하는 Secret의 이름을 지정합니다. Secret에 다음 키를 입력합니다.

    • publicKeyMongoDB Ops Manager API 키의 공개 키입니다.

    • privateKey: MongoDB Ops Manager API 키의 개인 키입니다.

  • resourceRequirements 전송자 컨테이너의 CPU 및 메모리를 설정합니다.

opsManager을 설정하지 않으면 Kubernetes 연산자가 소스 MongoDB 리소스에서 Ops Manager 연결 세부 정보를 가져오게 됩니다. 외부 MongoDB 소스에 대해 opsManager 을 설정해야 합니다.

spec:
observability:
metricsForwarder:
mode: enabled
opsManager:
projectConfigMapRef:
name: my-om-project-config
agentCredentials:
name: my-om-agent-api-key

Kubernetes Operator는 MongoDBSearch 리소스의 status.metricsForwarder 아래에 포워더 상태를 보고합니다.

mongot 구조화된 JSON 로그를 컨테이너의 stdoutstderr 스트림에 쓰기 (write)하므로 표준 Kubernetes 로그 도구로 읽을 수 있습니다.

kubectl logs statefulset/<MongoDBSearch.metadata.name>-search-0

실시간으로 로그인하려면 --follow 플래그를 추가합니다. 재시작 후 이전 컨테이너 인스턴스의 로그를 보려면 --previous 플래그를 추가합니다.

로그 상세 수준을 변경하려면 MongoDBSearch 리소스에서 spec.logLevel 을 설정합니다. 유효한 값은 TRACE, DEBUG, INFO, WARN, ERROR입니다. 생략하면 mongotINFO에 로그를 기록합니다.

spec:
logLevel: DEBUG

mongot 자체 로그를 회전하지 않습니다. Kubernetes 배포에서는 컨테이너 런타임(대부분의 배포에서는 containerd 또는 CRI-O)이 노드 수준에서 로그 회전을 처리합니다. 로그를 외부 집계자에게 전송하는 경우 mongot 프로세스에서가 아니라 해당 시스템에서 보유기간을 구성합니다.

mongot 두 개의 엔드포인트가 있는 팝 내부의 포트 8080 에 HTTP 헬스 서버를 노출합니다.

엔드포인트
정상 응답
정상적이지 않은 응답

/health

200 SERVING

503 NOT_SERVING

/ready

200 SERVING

503 NOT_SERVING

엔드포인트는 mongot 스타트업, 라이브니스 및 인덱스 복제 초기화를 반영합니다. 엔드포인트는 비활성화할 수 없습니다.

Kubernetes Operator는 /health/readymongot 컨테이너의 라이브니스 및 준비 프로브에 자동으로 연결합니다. 일반적으로 이러한 프로브를 재정의할 필요가 없습니다. kubectl describe pod <mongot-pod> 에는 연산자가 적용한 프로브 구성이 표시됩니다.

mongot 포드의 데이터 경로에 마운트된 영구 볼륨에 diagnostic.data/ 하위 디렉토리로 Full-Time Diagnostic Data Capture(FTDC) 파일을 쓰기합니다. FTDC는 기본적으로 활성화되어 있으며 MongoDB 지원이 성능 및 안정성 문제를 분류하는 데 사용됩니다.

FTDC 파일에는 Prometheus 표면보다 높은 카디널리티 데이터가 포함되어 있습니다. 인덱스별 크기, 인덱싱 및 요청에 대한 지연 시간 분석, 요청 카탈로그 통계, 직렬화 지연 시간, Lucene 성능 카운터 등이 포함됩니다.

지원 사례에 대한 FTDC 파일을 수집하려면 kubectl cp를 사용하여 mongot 포드에서 diagnostic.data/ 디렉토리를 복사합니다.

kubectl cp <mongot-pod>:/mongot/data/diagnostic.data ./mongot-ftdc

인포드 마운트 경로는 spec.clusters[].persistence 구성에 관계없이 /mongot/data 으로 고정됩니다. 영구 설정은 마운트 위치가 아닌 PVC 크기 및 저장 클래스를 제어합니다.

spec.clusters[].loadBalancer.managed을 설정하면 Kubernetes 연산자가 mongot 팝의 앞에 있는 Envoy L7 프록시를 프로비저닝합니다. Envoy 컨테이너는 두 개의 관찰 표면을 노출합니다.

  • 통계 및 런타임 제어(로그 수준, 수신기 배출)를 위한 포트 9901관리 엔드포인트 입니다. 연산자는 관리 인터페이스를 허용 경로 목록( /ready, /stats*, /drain_listeners, /logging*)으로 제한합니다. 이 엔드포인트는 kubectl port-forward를 사용하여 임시 문제 해결을 위한 것이며, 외부 노출을 위한 것이 아닙니다.

  • 표준 /stats/prometheus 경로의 Envoy 관리 포트에서의 Prometheus 지표. 이 엔드포인트를 mongot 지표와 함께 스크래합니다. 이렇게 할 경우 검색 트래픽 플레인의 요청 흐름, 업스트림 상태 및 연결 상태에 대한 전체 가시성을 확보할 수 있습니다.

연산자는 MongoDBSearch 리소스의 status.loadBalancer.phase 에 대한 높은 수준의 Envoy 상태를 보고합니다.

kubectl get mongodbsearch <name> -o jsonpath='{.status.loadBalancer.phase}'

이 단계는 연산자가 managed Envoy Deployment 수명 주기(예시: Pending, Running, Failed)를 반영합니다.