12.4. 가상 머신의 사용자 정의 메트릭 노출
OpenShift Container Platform에는 핵심 플랫폼 구성 요소에 대한 모니터링을 제공하는 사전 구성된 사전 설치된 자체 업데이트 모니터링 스택이 포함되어 있습니다. 이 모니터링 스택은 Prometheus 모니터링 시스템을 기반으로 합니다. Prometheus는 시계열 데이터베이스이며 메트릭에 대한 규칙 평가 엔진입니다.
OpenShift Container Platform 모니터링 스택을 사용하는 것 외에도 CLI를 사용하여 사용자 정의 프로젝트에 대한 모니터링을 활성화하고 node-exporter
서비스를 통해 가상 머신에 노출되는 사용자 정의 지표를 쿼리할 수 있습니다.
12.4.1. 노드 내보내기 서비스 구성 링크 복사링크가 클립보드에 복사되었습니다!
node-exporter 에이전트는 메트릭을 수집하려는 클러스터의 모든 가상 머신에 배포됩니다. 가상 머신과 연결된 내부 지표 및 프로세스를 노출하도록 node-exporter 에이전트를 서비스로 구성합니다.
사전 요구 사항
-
OpenShift Container Platform CLI
oc
를 설치합니다. -
cluster-admin
권한이 있는 사용자로 클러스터에 로그인합니다. -
openshift-monitoring
프로젝트에서cluster-monitoring-config
ConfigMap
오브젝트를 생성합니다. -
enableUserWorkload
를true
로 설정하여openshift-user-workload-monitoring
프로젝트에서user-workload-monitoring-config
ConfigMap
오브젝트를 구성합니다.
프로세스
Service
YAML 파일을 생성합니다. 다음 예에서 파일을node-exporter-service.yaml
이라고 합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 가상 시스템에서 지표를 표시하는 node-exporter 서비스입니다.
- 2
- 서비스가 생성되는 네임스페이스입니다.
- 3
- 서비스의 레이블입니다.
ServiceMonitor
는 이 서비스와 일치하도록 이 레이블을 사용합니다. - 4
ClusterIP
서비스의 포트 9100에 지표를 표시하는 포트에 지정된 이름입니다.- 5
node-exporter-service
에서 요청을 수신 대기하는 데 사용하는 대상 포트입니다.- 6
monitor
레이블로 구성된 가상 머신의 TCP 포트 번호입니다.- 7
- 가상 머신의 Pod와 일치하는 데 사용되는 레이블입니다. 이 예에서는 레이블
monitor
가 있는 모든 가상 머신의 Pod가 있고지표
값이 일치합니다.
node-exporter 서비스를 생성합니다.
oc create -f node-exporter-service.yaml
$ oc create -f node-exporter-service.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.4.2. 노드 내보내기 서비스를 사용하여 가상 머신 구성 링크 복사링크가 클립보드에 복사되었습니다!
의 node-exporter
파일을 가상 머신에 다운로드합니다. 그런 다음 가상 머신이 부팅될 때 node-exporter 서비스를 실행하는 systemd
서비스를 생성합니다.
사전 요구 사항
-
구성 요소의 Pod가
openshift-user-workload-monitoring
프로젝트에서 실행되고 있습니다. -
이 사용자 정의 프로젝트를 모니터링해야 하는 사용자에게
monitoring-edit
역할을 부여합니다.
프로세스
- 가상 머신에 로그인합니다.
node-exporter
파일에 적용되는 디렉터리 경로를 사용하여 의node-exporter
파일을 가상 머신에 다운로드합니다.wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
$ wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 실행 파일을 추출하여
/usr/bin
디렉터리에 배치합니다.sudo tar xvf node_exporter-1.3.1.linux-amd64.tar.gz \ --directory /usr/bin --strip 1 "*/node_exporter"
$ sudo tar xvf node_exporter-1.3.1.linux-amd64.tar.gz \ --directory /usr/bin --strip 1 "*/node_exporter"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/systemd/system
에node_exporter.service
파일을 만듭니다. 이systemd
서비스 파일은 가상 머신이 재부팅될 때 node-exporter 서비스를 실행합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemd
서비스를 활성화하고 시작합니다.sudo systemctl enable node_exporter.service sudo systemctl start node_exporter.service
$ sudo systemctl enable node_exporter.service $ sudo systemctl start node_exporter.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
node-exporter 에이전트가 가상 시스템의 지표를 보고하는지 확인합니다.
curl http://localhost:9100/metrics
$ curl http://localhost:9100/metrics
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
go_gc_duration_seconds{quantile="0"} 1.5244e-05 go_gc_duration_seconds{quantile="0.25"} 3.0449e-05 go_gc_duration_seconds{quantile="0.5"} 3.7913e-05
go_gc_duration_seconds{quantile="0"} 1.5244e-05 go_gc_duration_seconds{quantile="0.25"} 3.0449e-05 go_gc_duration_seconds{quantile="0.5"} 3.7913e-05
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.4.3. 가상 머신의 사용자 정의 모니터링 레이블 생성 링크 복사링크가 클립보드에 복사되었습니다!
단일 서비스에서 여러 가상 머신에 대한 쿼리를 활성화하려면 가상 머신의 YAML 파일에 사용자 지정 레이블을 추가합니다.
사전 요구 사항
-
OpenShift Container Platform CLI
oc
를 설치합니다. -
cluster-admin
권한이 있는 사용자로 로그인합니다. - 웹 콘솔에 액세스하여 가상 머신을 다시 시작합니다.
프로세스
가상 머신 구성 파일의
template
사양을 편집합니다. 이 예에서 레이블모니터에
는 값지표
가 있습니다.spec: template: metadata: labels: monitor: metrics
spec: template: metadata: labels: monitor: metrics
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
가상 머신을 중지하고 다시 시작하여
monitor
레이블에 지정된 라벨 이름으로 새 Pod를 생성합니다.
12.4.3.1. 메트릭에 대한 node-exporter 서비스 쿼리 링크 복사링크가 클립보드에 복사되었습니다!
/metrics
표준 이름 아래의 HTTP 서비스 끝점을 통해 가상 머신에 대한 메트릭이 노출됩니다. 메트릭을 쿼리할 때 Prometheus는 가상 머신에서 노출하는 메트릭 끝점에서 메트릭을 직접 스크랩하고 볼 수 있도록 이러한 지표를 표시합니다.
사전 요구 사항
-
cluster-admin
권한 또는monitoring-edit
역할의 사용자로 클러스터에 액세스할 수 있습니다. - node-exporter 서비스를 구성하여 사용자 정의 프로젝트에 대한 모니터링을 활성화했습니다.
프로세스
서비스의 네임스페이스를 지정하여 HTTP 서비스 끝점을 가져옵니다.
oc get service -n <namespace> <node-exporter-service>
$ oc get service -n <namespace> <node-exporter-service>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow node-exporter 서비스에 사용 가능한 모든 지표를 나열하려면
지표
리소스를 쿼리합니다.curl http://<172.30.226.162:9100>/metrics | grep -vE "^#|^$"
$ curl http://<172.30.226.162:9100>/metrics | grep -vE "^#|^$"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.4.4. 노드 내보내기 서비스에 대한 ServiceMonitor 리소스 생성 링크 복사링크가 클립보드에 복사되었습니다!
Prometheus 클라이언트 라이브러리를 사용하고 /metrics
끝점에서 메트릭을 스크랩하여 node-exporter 서비스에서 노출하는 메트릭에 액세스하고 볼 수 있습니다. ServiceMonitor
CRD(사용자 정의 리소스 정의)를 사용하여 노드 내보내기 서비스를 모니터링합니다.
사전 요구 사항
-
cluster-admin
권한 또는monitoring-edit
역할의 사용자로 클러스터에 액세스할 수 있습니다. - node-exporter 서비스를 구성하여 사용자 정의 프로젝트에 대한 모니터링을 활성화했습니다.
프로세스
ServiceMonitor
리소스 구성에 대한 YAML 파일을 생성합니다. 이 예에서 서비스 모니터는 모든 서비스와 레이블지표
와 일치하고 30초마다exmet
포트를 쿼리합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow node-exporter 서비스에 대한
ServiceMonitor
구성을 생성합니다.oc create -f node-exporter-metrics-monitor.yaml
$ oc create -f node-exporter-metrics-monitor.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.4.4.1. 클러스터 외부에서 노드 내보내기 서비스에 액세스 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 외부에서 node-exporter 서비스에 액세스하여 노출된 지표를 볼 수 있습니다.
사전 요구 사항
-
cluster-admin
권한 또는monitoring-edit
역할의 사용자로 클러스터에 액세스할 수 있습니다. - node-exporter 서비스를 구성하여 사용자 정의 프로젝트에 대한 모니터링을 활성화했습니다.
프로세스
node-exporter 서비스를 노출합니다.
oc expose service -n <namespace> <node_exporter_service_name>
$ oc expose service -n <namespace> <node_exporter_service_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 경로에 대한 FQDN(완전화된 도메인 이름)을 가져옵니다.
oc get route -o=custom-columns=NAME:.metadata.name,DNS:.spec.host
$ oc get route -o=custom-columns=NAME:.metadata.name,DNS:.spec.host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME DNS node-exporter-service node-exporter-service-dynamation.apps.cluster.example.org
NAME DNS node-exporter-service node-exporter-service-dynamation.apps.cluster.example.org
Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl
명령을 사용하여 node-exporter 서비스에 대한 지표를 표시합니다.curl -s http://node-exporter-service-dynamation.apps.cluster.example.org/metrics
$ curl -s http://node-exporter-service-dynamation.apps.cluster.example.org/metrics
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
go_gc_duration_seconds{quantile="0"} 1.5382e-05 go_gc_duration_seconds{quantile="0.25"} 3.1163e-05 go_gc_duration_seconds{quantile="0.5"} 3.8546e-05 go_gc_duration_seconds{quantile="0.75"} 4.9139e-05 go_gc_duration_seconds{quantile="1"} 0.000189423
go_gc_duration_seconds{quantile="0"} 1.5382e-05 go_gc_duration_seconds{quantile="0.25"} 3.1163e-05 go_gc_duration_seconds{quantile="0.5"} 3.8546e-05 go_gc_duration_seconds{quantile="0.75"} 4.9139e-05 go_gc_duration_seconds{quantile="1"} 0.000189423
Copy to Clipboard Copied! Toggle word wrap Toggle overflow