기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
모니터링
졸업된 CNCF 프로젝트
Prometheus 지표 컬렉션의 상위 수준 아키텍처는 다음과 같습니다.

Prometheus는 풀 메커니즘을 사용하고 내보내기를 사용하는 대상과 kube 상태 지표를 사용하는 Kubernetes API에서 지표
내보내기를 사용하면 타사 지표를 Prometheus 형식의 지표로 사용할 수 있습니다. Prometheus 내보내기는 일반적으로 각 노드에 배포됩니다. 내보내기의 전체 목록은 Prometheus 내보내기
안정적인 Prometheus helm 차트
Windows 노드에 대한 Prometheus 모니터링을 설정하려면 Windows 서버 자체에 WMI 내보내기를 다운로드하여 설치한 다음 Prometheus 구성 파일의 스크레이프 구성 내에서 대상을 설정해야 합니다. 릴리스 페이지에서
노드를 부트스트랩하거나 선택한 구성 관리 도구(예: Chef, Ansible, SSM 등)를 사용하여 Windows 노드에 Windows Exporter를 설치하는 동안 taints/tolerations 또는 RuntimeClass를 사용하여 linux 노드에만 선택적으로 배포하는 것을 제안하는이 가이드의 예약 모범 사례 섹션을 확인할 수 있습니다.
노드 내보내기가 데몬 세트 로 설치된 Linux 노드와 달리 Windows 노드에서는 WMI 내보내기가 호스트 자체에 설치됩니다. 내보내기 도구는 CPU 사용량, 메모리 및 디스크 I/O 사용량과 같은 지표를 내보내고 IIS 사이트 및 애플리케이션, 네트워크 인터페이스 및 서비스를 모니터링하는 데 사용할 수도 있습니다.
windows_exporter는 기본적으로 활성화된 수집기의 모든 지표를 노출합니다. 이는 오류를 방지하기 위해 지표를 수집하는 데 권장되는 방법입니다. 그러나 고급 사용의 경우 windows_exporter에 지표를 필터링하기 위한 선택적 수집기 목록을 전달할 수 있습니다. Prometheus 구성에서 collect[] 파라미터를 사용하면 됩니다.
Windows의 기본 설치 단계에는 필터링하려는 수집기와 같은 인수를 사용하여 부트스트래핑 프로세스 중에 서비스로 내보내기를 다운로드하고 시작하는 작업이 포함됩니다.
> Powershell Invoke-WebRequest https://github.com/prometheus-community/windows_exporter/releases/download/v0.13.0/windows_exporter-0.13.0-amd64.msi -OutFile <DOWNLOADPATH> > msiexec /i <DOWNLOADPATH> ENABLED_COLLECTORS="cpu,cs,logical_disk,net,os,system,container,memory"
기본적으로 포트 9182의 /metrics 엔드포인트에서 지표를 스크레이프할 수 있습니다. 이때 Prometheus는 Prometheus 구성에 다음 scrape_config를 추가하여 지표를 사용할 수 있습니다.
scrape_configs: - job_name: "prometheus" static_configs: - targets: ['localhost:9090'] ... - job_name: "wmi_exporter" scrape_interval: 10s static_configs: - targets: ['<windows-node1-ip>:9182', '<windows-node2-ip>:9182', ...]
Prometheus 구성은를 사용하여 다시 로드됩니다.
> ps aux | grep prometheus > kill HUP <PID>
대상을 추가하는 더 나은 권장 방법은 ServiceMonitor 객체에 대한 정의를 제공하는 ServiceMonitor라는 사용자 지정 리소스 정의https://github.com/prometheus-operator/kube-prometheus/releases
Kubernetes 서비스 그룹을 모니터링하는 방법을 선언적으로 지정하는 ServiceMonitor는 Kubernetes 내에서 지표를 스크레이프하려는 애플리케이션을 정의하는 데 사용됩니다. ServiceMonitor 내에서 운영자가 Kubernetes 서비스를 식별하는 데 사용할 수 있는 Kubernetes 레이블을 지정합니다. 그러면 모니터링하려는 포드가 식별됩니다.
ServiceMonitor를 활용하려면 특정 Windows 대상, 헤드리스 서비스 및 Windows 노드용 ServiceMontor를 가리키는 엔드포인트 객체를 생성합니다.
apiVersion: v1 kind: Endpoints metadata: labels: k8s-app: wmiexporter name: wmiexporter namespace: kube-system subsets: - addresses: - ip: NODE-ONE-IP targetRef: kind: Node name: NODE-ONE-NAME - ip: NODE-TWO-IP targetRef: kind: Node name: NODE-TWO-NAME - ip: NODE-THREE-IP targetRef: kind: Node name: NODE-THREE-NAME ports: - name: http-metrics port: 9182 protocol: TCP --- apiVersion: v1 kind: Service ##Headless Service metadata: labels: k8s-app: wmiexporter name: wmiexporter namespace: kube-system spec: clusterIP: None ports: - name: http-metrics port: 9182 protocol: TCP targetPort: 9182 sessionAffinity: None type: ClusterIP --- apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor ##Custom ServiceMonitor Object metadata: labels: k8s-app: wmiexporter name: wmiexporter namespace: monitoring spec: endpoints: - interval: 30s port: http-metrics jobLabel: k8s-app namespaceSelector: matchNames: - kube-system selector: matchLabels: k8s-app: wmiexporter
운영자 및 ServiceMonitor 사용에 대한 자세한 내용은 공식 운영자