14.3. Prometheus의 페더레이션 끝점을 사용하여 메트릭 쿼리
Prometheus의 페더레이션 엔드포인트를 사용하여 클러스터 외부의 네트워크 위치에서 플랫폼 및 사용자 정의 지표를 스크랩할 수 있습니다. 이렇게 하려면 OpenShift Container Platform 경로를 통해 클러스터의 Prometheus /federate
끝점에 액세스합니다.
지표 데이터 검색에 지연이 지연되면 페더레이션을 사용할 때 발생합니다. 이러한 지연은 스크랩된 메트릭의 정확도 및 타임라인에 영향을 미칠 수 있습니다.
페더레이션 엔드포인트를 사용하면 특히 페더레이션 엔드포인트를 사용하여 대량의 지표 데이터를 검색하는 경우 클러스터의 성능과 확장성이 저하될 수 있습니다. 이러한 문제를 방지하려면 다음 권장 사항을 따르십시오.
- Prometheus의 페더레이션 엔드포인트를 통해 모든 메트릭 데이터를 검색하지 마십시오. 제한된 집계 데이터 세트를 검색하려는 경우에만 쿼리합니다. 예를 들어 각 요청에 대해 1,000개 미만의 샘플을 검색하면 성능 저하 위험을 최소화할 수 있습니다.
- Prometheus의 페더레이션 엔드포인트를 자주 쿼리하지 마십시오. 쿼리를 30초마다 최대 1개로 제한합니다.
대량의 데이터를 클러스터 외부로 전달해야 하는 경우 대신 원격 쓰기를 사용합니다. 자세한 내용은 원격 쓰기 스토리지 구성 섹션을 참조하십시오.
사전 요구 사항
-
OpenShift CLI(
oc
)가 설치되어 있습니다. cluster-monitoring-view
클러스터 역할의 사용자로 클러스터에 액세스하거나네임스페이스
리소스에 대한get
권한을 사용하여 전달자 토큰을 가져올 수 있습니다.참고전달자 토큰 인증을 사용하여 Prometheus 페더 엔드포인트에 액세스할 수 있습니다.
Prometheus 페더레이션 경로를 가져올 수 있는 권한이 있는 계정에 로그인되어 있습니다.
참고계정에 Prometheus 페더레이션 경로를 가져올 수 있는 권한이 없는 경우 클러스터 관리자가 경로에 대한 URL을 제공할 수 있습니다.
절차
다음 명령을 실행하여 전달자 토큰을 검색합니다.
$ TOKEN=$(oc whoami -t)
다음 명령을 실행하여 Prometheus 페더레이션 경로 URL을 가져옵니다.
$ HOST=$(oc -n openshift-monitoring get route prometheus-k8s-federate -ojsonpath={.spec.host})
/federate
경로에서 지표를 쿼리합니다. 다음 예제 명령은 메트릭을 쿼리합니다
.$ curl -G -k -H "Authorization: Bearer $TOKEN" https://$HOST/federate --data-urlencode 'match[]=up'
출력 예
# TYPE up untyped up{apiserver="kube-apiserver",endpoint="https",instance="10.0.143.148:6443",job="apiserver",namespace="default",service="kubernetes",prometheus="openshift-monitoring/k8s",prometheus_replica="prometheus-k8s-0"} 1 1657035322214 up{apiserver="kube-apiserver",endpoint="https",instance="10.0.148.166:6443",job="apiserver",namespace="default",service="kubernetes",prometheus="openshift-monitoring/k8s",prometheus_replica="prometheus-k8s-0"} 1 1657035338597 up{apiserver="kube-apiserver",endpoint="https",instance="10.0.173.16:6443",job="apiserver",namespace="default",service="kubernetes",prometheus="openshift-monitoring/k8s",prometheus_replica="prometheus-k8s-0"} 1 1657035343834 ...