7.11. 모니터링 문제 조사
OpenShift Container Platform에는 핵심 플랫폼 구성 요소에 대한 모니터링을 제공하는 사전 구성된 사전 설치된 자체 업데이트 모니터링 스택이 포함되어 있습니다. OpenShift Container Platform 4.15에서 클러스터 관리자는 선택 옵션으로 사용자 정의 프로젝트에 대한 모니터링을 활성화할 수 있습니다.
다음 문제가 발생하는 경우 다음 절차를 사용하십시오.
- 자체 메트릭을 사용할 수 없습니다.
- Prometheus는 많은 디스크 공간을 사용하고 있습니다.
-
Prometheus에서
KubePersistentVolumeFillingUp경고가 실행됩니다.
7.11.1. 사용자 정의 프로젝트 메트릭을 사용할 수 없는 이유 조사 링크 복사링크가 클립보드에 복사되었습니다!
ServiceMonitor 리소스를 사용하면 사용자 정의 프로젝트에서 서비스에 의해 노출되는 메트릭을 사용하는 방법을 확인할 수 있습니다. ServiceMonitor 리소스를 생성했지만 메트릭 UI에서 해당 메트릭을볼 수 없는 경우 이 프로세스에 설명된 단계를 수행하십시오.
사전 요구 사항
-
cluster-admin역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. -
OpenShift CLI(
oc)가 설치되어 있습니다. - 사용자 정의 프로젝트에 대한 모니터링을 활성화 및 구성했습니다.
-
ServiceMonitor리소스가 생성되어 있습니다.
프로세스
프로젝트가 사용자 워크로드 모니터링에서 제외되지 않았는지 확인합니다. 다음 예제에서는
ns1프로젝트를 사용합니다.프로젝트에
openshift.io/user-monitoring=false라벨이 연결되어 있지 않은지 확인합니다.$ oc get namespace ns1 --show-labels | grep 'openshift.io/user-monitoring=false'참고사용자 워크로드 프로젝트에 설정된 기본 레이블은
openshift.io/user-monitoring=true입니다. 그러나 수동으로 적용하지 않는 한 레이블은 표시되지 않습니다.라벨이 연결된 경우 라벨을 제거하십시오.
프로젝트에서 레이블 제거 예
$ oc label namespace ns1 'openshift.io/user-monitoring-'출력 예
namespace/ns1 unlabeled
서비스 및
ServiceMonitor리소스 구성에서 해당 라벨이 일치하는지 확인합니다. 다음 예제에서는prometheus-example-app서비스,prometheus-example-monitor서비스 모니터 및ns1프로젝트를 사용합니다.서비스에 정의된 라벨을 가져옵니다.
$ oc -n ns1 get service prometheus-example-app -o yaml출력 예
labels: app: prometheus-example-appServiceMonitor리소스 구성의matchLabels정의가 이전 단계의 라벨 출력과 일치하는지 확인합니다.$ oc -n ns1 get servicemonitor prometheus-example-monitor -o yaml출력 예
apiVersion: v1 kind: ServiceMonitor metadata: name: prometheus-example-monitor namespace: ns1 spec: endpoints: - interval: 30s port: web scheme: http selector: matchLabels: app: prometheus-example-app참고프로젝트 보기 권한이 있는 개발자로서 서비스 및
ServiceMonitor리소스 라벨을 확인할 수 있습니다.
openshift-user-workload-monitoring프로젝트에서 Prometheus Operator의 로그를 검사합니다.openshift-user-workload-monitoring프로젝트의 Pod를 나열합니다.$ oc -n openshift-user-workload-monitoring get pods출력 예
NAME READY STATUS RESTARTS AGE prometheus-operator-776fcbbd56-2nbfm 2/2 Running 0 132m prometheus-user-workload-0 5/5 Running 1 132m prometheus-user-workload-1 5/5 Running 1 132m thanos-ruler-user-workload-0 3/3 Running 0 132m thanos-ruler-user-workload-1 3/3 Running 0 132mprometheus-operatorpod의prometheus-operator컨테이너에서 로그를 가져옵니다. 다음 예에서 Pod는prometheus-operator-776fcbbd56-2nbfm입니다.$ oc -n openshift-user-workload-monitoring logs prometheus-operator-776fcbbd56-2nbfm -c prometheus-operator서비스 모니터에 문제가 있는 경우 로그에 다음과 유사한 오류가 포함될 수 있습니다.
level=warn ts=2020-08-10T11:48:20.906739623Z caller=operator.go:1829 component=prometheusoperator msg="skipping servicemonitor" error="it accesses file system via bearer token file which Prometheus specification prohibits" servicemonitor=eagle/eagle namespace=openshift-user-workload-monitoring prometheus=user-workload
OpenShift Container Platform 웹 콘솔 UI의 Metrics 대상 페이지에서 끝점의 대상 상태를 확인합니다.
-
OpenShift Container Platform 웹 콘솔에 로그인하고 관리자 관점에서 모니터링
대상으 로 이동합니다. - 목록에서 지표 끝점을 찾고 상태 열에서 대상의 상태를 검토합니다.
- 상태 가 Down 인 경우 끝점의 URL을 클릭하여 해당 지표 대상의 대상 세부 정보 페이지에 대한 자세한 정보를 확인합니다.
-
OpenShift Container Platform 웹 콘솔에 로그인하고 관리자 관점에서 모니터링
openshift-user-workload-monitoring프로젝트에서 Prometheus Operator에 대한 디버그 수준 로깅을 구성합니다.openshift-user-workload-monitoring프로젝트에서user-workload-monitoring-configConfigMap오브젝트를 편집합니다.$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-configprometheusOperator의logLevel:debug를data / config.yaml아래에 추가하여 로그 수준을debug로 설정합니다.apiVersion: v1 kind: ConfigMap metadata: name: user-workload-monitoring-config namespace: openshift-user-workload-monitoring data: config.yaml: | prometheusOperator: logLevel: debug # ...-
파일을 저장하여 변경 사항을 적용합니다. 영향을 받는
prometheus-operatorPod가 자동으로 재배포됩니다. openshift-user-workload-monitoring프로젝트의prometheus-operator배포에debug로그 수준이 적용되었는지 확인합니다.$ oc -n openshift-user-workload-monitoring get deploy prometheus-operator -o yaml | grep "log-level"출력 예
- --log-level=debug디버그 수준 로깅은 Prometheus Operator가 수행한 모든 호출을 표시합니다.
prometheus-operatorPod가 실행되고 있는지 확인합니다.$ oc -n openshift-user-workload-monitoring get pods참고구성 맵에 인식할 수 없는 Prometheus Operator
loglevel값이 포함된 경우prometheus-operatorPod가 재시작되지 않을 수 있습니다.-
디버그 로그를 검토하여 Prometheus Operator에서
ServiceMonitor리소스를 사용하고 있는지 확인합니다. 기타 관련 오류에 대한 로그를 확인합니다.