Prometheus Operator는 Prometheus 및 관련 모니터링 구성 요소의 Kubernetes 기본 배포 및 관리를 제공합니다. 이 프로젝트의 목적은 Kubernetes 클러스터에 대한 Prometheus 기반 모니터링 스택 구성을 단순화하고 자동화하는 것입니다.
Prometheus 연산자에는 다음 기능이 포함되지만 이에 국한되지는 않습니다.
Kubernetes 사용자 정의 리소스 : Kubernetes 사용자 정의 리소스를 사용하여 Prometheus, Alertmanager 및 관련 구성 요소를 배포하고 관리합니다.
단순화된 배포 구성 : 기본 Kubernetes 리소스의 버전, 지속성, 보존 정책 및 복제본과 같은 Prometheus의 기본 사항을 구성합니다.
Prometheus 대상 구성 : 익숙한 Kubernetes 레이블 쿼리를 기반으로 모니터링 대상 구성을 자동으로 생성합니다. Prometheus 관련 구성 언어를 배울 필요가 없습니다.
Prometheus Operator에 대한 소개는 시작 가이드를 참조하세요.
운영자 자체는 생산 준비가 완료된 것으로 간주됩니다. 각 CRD의 상태는 사용자 정의 리소스 정의(CRD) 버전을 참조하세요.
monitoring.coreos.com/v1
: 안정적인 CRD 및 API, 변경 사항은 이전 버전과 호환되는 방식으로 이루어집니다.
monitoring.coreos.com/v1beta1
: 불안정한 CRD 및 API, 변경이 발생할 수 있지만 팀은 이를 피하는 데 중점을 두고 있습니다. 주요 변경 사항의 위험을 감수하는 사용자는 프로덕션 환경에서 사용하는 것이 좋습니다.
monitoring.coreos.com/v1alpha1
: 불안정한 CRD 및 API, 변경이 자주 발생할 수 있으므로 미션 크리티컬 환경에서는 사용을 피하는 것이 좋습니다.
Prometheus Operator는 Kubernetes 사용자 정의 리소스를 사용하여 Prometheus, Alertmanager 및 관련 모니터링 구성 요소의 배포 및 구성을 단순화합니다.
kube-prometheus는 Prometheus 및 Prometheus Operator를 기반으로 하는 전체 클러스터 모니터링 스택에 대한 예시 구성을 제공합니다. 여기에는 여러 Prometheus 및 Alertmanager 인스턴스 배포, 노드 메트릭 수집을 위한 node_exporter와 같은 메트릭 내보내기, Prometheus를 다양한 메트릭 엔드포인트에 연결하는 스크랩 대상 구성, 클러스터의 잠재적 문제 알림을 위한 경고 규칙 예가 포함됩니다.
prometheus-community/kube-prometheus-stack Helm 차트는 kube-prometheus와 유사한 기능 세트를 제공합니다. 이 차트는 Prometheus 커뮤니티에서 관리합니다. 자세한 내용은 차트의 추가 정보를 참조하세요.
Prometheus Operator에는 Kubernetes 버전 1.16.0
이상이 필요합니다. Prometheus Operator를 처음 시작하는 경우 최신 안정 릴리스를 사용하는 것이 좋습니다.
Prometheus Operator의 핵심 기능은 Kubernetes API 서버에서 특정 개체에 대한 변경 사항을 모니터링하고 현재 Prometheus 배포가 이러한 개체와 일치하는지 확인하는 것입니다. Operator는 다음 CRD(사용자 정의 리소스 정의)에 따라 작업합니다.
Prometheus
- 원하는 Prometheus 배포를 정의합니다.
원하는 Prometheus 배포를 정의하지만 에이전트 모드에서 실행되는 PrometheusAgent
.
원하는 Alertmanager 배포를 정의하는 Alertmanager
.
원하는 Thanos Ruler 배포를 정의하는 ThanosRuler
.
ServiceMonitor
- Kubernetes 서비스 그룹을 모니터링하는 방법을 선언적으로 지정합니다. Operator는 API 서버에 있는 객체의 현재 상태를 기반으로 Prometheus 스크레이프 구성을 자동으로 생성합니다.
PodMonitor
- Pod 그룹을 모니터링하는 방법을 선언적으로 지정합니다. Operator는 API 서버에 있는 객체의 현재 상태를 기반으로 Prometheus 스크레이프 구성을 자동으로 생성합니다.
Probe
- 수신 그룹 또는 정적 대상을 모니터링하는 방법을 선언적으로 지정합니다. Operator는 정의에 따라 Prometheus 스크레이프 구성을 자동으로 생성합니다.
Prometheus에 추가할 스크랩 구성을 선언적으로 지정하는 ScrapeConfig
. 이 CustomResourceDefinition은 Kubernetes 클러스터 외부의 리소스를 스크랩하는 데 도움이 됩니다.
PrometheusRule
- 원하는 Prometheus 경고 및/또는 기록 규칙 세트를 정의합니다. Operator는 Prometheus 인스턴스에서 사용할 수 있는 규칙 파일을 생성합니다.
Alertmanager 구성의 하위 섹션을 선언적으로 지정하여 경고를 사용자 정의 수신기로 라우팅하고 금지 규칙을 설정하는 AlertmanagerConfig
입니다.
Prometheus 운영자는 Kubernetes API 서버에서 위 객체에 대한 변경 사항을 자동으로 감지하고 일치하는 배포 및 구성이 동기화 상태로 유지되도록 합니다.
Prometheus Operator가 도입한 CRD에 대해 자세히 알아보려면 디자인 페이지를 살펴보세요.
잘못된 Prometheus 경고 및 기록 규칙으로 인해 배포된 Prometheus 인스턴스에서 오류가 발생하는 것을 방지하기 위해 초기 생성 또는 업데이트 시 PrometheusRule
리소스를 검증할 수 있는 허용 웹후크가 제공됩니다.
이 기능에 대한 자세한 내용은 사용자 가이드를 참조하세요.
참고: 이 빠른 시작은 전체 모니터링 스택을 프로비저닝하지 않습니다. 그것이 당신이 찾고 있는 것이라면 kube-prometheus 프로젝트를 참조하십시오. 전체 스택을 원하지만 이미 bundle.yaml
을 적용한 경우 먼저 번들을 삭제하십시오( kubectl delete -f bundle.yaml
).
클러스터 내에서 Prometheus Operator 만 빠르게 사용해 보려면 릴리스를 선택 하고 default
네임스페이스에 Operator를 배포하는 다음 명령을 실행하세요.
kubectl create -f Bundle.yaml
Prometheus 연산자를 다른 네임스페이스에 배포하려면 kustomize
도 필요합니다.
NAMESPACE=my_namespace kustomize 편집 세트 네임스페이스 $NAMESPACE && kubectl create -k .
참고: 기본 네임스페이스가 아닌 다른 네임스페이스에 배포하는 경우 ClusterRoleBinding의 네임스페이스를 조정해야 합니다.
클러스터 외부에서 Operator를 실행하려면 다음 안내를 따르세요.
만들다 scripts/run-external.sh
Operator와 Prometheus를 제거하려면 먼저 각 네임스페이스에서 생성한 사용자 지정 리소스를 삭제하세요. 운영자는 Prometheus 및 Alertmanager 포드와 관련 ConfigMap을 자동으로 종료하고 제거합니다.
for n in $(kubectl get 네임스페이스 -o jsonpath={..metadata.name}); 하다 kubectl delete --all --namespace=$n prometheus,servicemonitor,podmonitor,alertmanagerdone
몇 분 후에 계속해서 연산자 자체를 제거할 수 있습니다.
kubectl delete -f Bundle.yaml
운영자는 Prometheus 또는 Alertmanager 리소스를 생성한 각 네임스페이스에 서비스를 자동으로 생성하고 세 가지 사용자 지정 리소스 정의를 정의합니다. 이제 이것들을 정리할 수 있습니다.
for n in $(kubectl get 네임스페이스 -o jsonpath={..metadata.name}); 하다 kubectl delete --ignore-not-found --namespace=$n 서비스 prometheus 운영 Alertmanager-operateddonekubectl delete --ignore-not-found customresourcedefinitions prometheuses.monitoring.coreos.com servicemonitors.monitoring.coreos.com podmonitors.monitoring.coreos.com Alertmanagers.monitoring.coreos.com prometheusrules.monitoring.coreos.com Alertmanagerconfigs.monitoring.coreos.com scrapeconfigs.monitoring.coreos.com
테스트 참조
기여를 참조하세요.
Prometheus Operator와 관련된 보안 취약점을 발견한 경우 GitHub 문제를 열어 보고하지 말고 MAINTAINERS.md 파일에 있는 프로젝트 관리자에게 이메일을 보내주세요.
일반적인 문제와 자주 묻는 질문(FAQ)에 대한 문제 해결 설명서를 확인하세요.
prometheus-operator 조직 로고는 Bianca Cheng Costanzo가 만들고 기여했습니다.