Google Distributed Cloud (GDC) 에어 갭에 배포된 워크로드에서 측정항목을 수집한 후 분석을 시작할 수 있습니다. 측정항목을 분석하려면 유용한 Grafana 대시보드에서 측정항목을 시각화하고 필터링하거나, 유연한 스크립팅 및 자동화를 위해 curl 도구를 사용하여 Cortex에서 직접 액세스하면 됩니다.
이 페이지에서는 Grafana 사용자 인터페이스와 Cortex 엔드포인트용 curl 도구를 모두 사용하여 측정항목을 쿼리하고 시각화하여 워크로드 성능에 대한 유용한 정보를 얻는 방법을 자세히 설명합니다.
다음 두 가지 방법 중 하나로 측정항목에 액세스할 수 있습니다.
- Grafana 대시보드: CPU 사용률, 스토리지 소비, 네트워크 활동과 같은 주요 측정항목을 직관적으로 시각화하여 추세를 살펴보고 비정상적인 활동을 식별합니다. Grafana는 대시보드에서 워크로드 데이터를 필터링하고 분석할 수 있는 사용자 친화적인 인터페이스를 제공합니다.
- Cortex 엔드포인트: 더 고급 사용 사례의 경우 명령줄에서
curl도구를 사용하여 프로젝트의 Cortex 인스턴스를 직접 쿼리합니다. Cortex는 프로젝트의 Prometheus 측정항목을 저장하고 프로그래매틱 액세스를 위한 HTTP 엔드포인트를 제공합니다. 이 액세스 권한을 사용하면 데이터를 내보내고, 작업을 자동화하고, 맞춤 통합을 빌드할 수 있습니다.
시작하기 전에
Grafana 대시보드에서 측정항목을 쿼리하고 시각화하는 데 필요한 권한을 얻으려면 조직 IAM 관리자 또는 프로젝트 IAM 관리자에게 사전 정의된 조직 Grafana 뷰어 또는 프로젝트 Grafana 뷰어 역할 중 하나를 부여해 달라고 요청하세요. 필요한 액세스 수준과 권한에 따라 조직 또는 프로젝트에서 Grafana 역할을 획득할 수 있습니다.
또는 Cortex 엔드포인트에서 측정항목을 쿼리하는 데 필요한 권한을 얻으려면 프로젝트 IAM 관리자에게 프로젝트 네임스페이스에 프로젝트 Cortex Prometheus 뷰어 역할을 부여해 달라고 요청하세요.
다음 표에는 PA persona의 Role 요구사항이 요약되어 있습니다.
| 페르소나 | 객체 | 클러스터 | 역할 | 네임스페이스 | 그룹/사용자 | 구성 |
|---|---|---|---|---|---|---|
| PA | grafana | org-admin | project-grafana-viewer |
platform-obs | 그룹 | 1 |
| PA | cortex | org-admin | project-cortex-prometheus-viewer |
platform-obs | 그룹 | 2 |
| PA | grafana | org-admin | project-grafana-viewer |
platform-obs | 사용자 | 3 |
| PA | cortex | org-admin | project-cortex-prometheus-viewer |
platform-obs | 사용자 | 4 |
다음 변수를 적절하게 바꿉니다.
| 변수 | 설명 |
|---|---|
KUBECONFIG |
이 RoleBinding이 적용될 NAMESPACE가 포함된 특정 클러스터의 kubeconfig가 필요합니다. |
RULE_NAME |
네임스페이스 내에서 이 RoleBinding 리소스의 고유한 이름입니다. 예를 들면 io-root-cortex-prometheus-viewer입니다. |
NAMESPACE |
이 RoleBinding가 생성되고 적용될 Kubernetes 네임스페이스입니다. 이전 표에서 Namespace 열을 찾습니다. |
EMAIL_ADDRESS |
역할이 부여된 사용자의 식별자입니다. 이메일 주소인 경우가 많습니다. 예를 들면 infrastructure-operator@example.com입니다. |
ROLE |
사용자에게 부여할 권한이 포함된 Role의 이름입니다. 이전 표에 나와 있는 역할을 찾습니다. |
GROUP_NAME |
사용자에게 부여할 권한이 포함된 Role의 이름입니다. 예를 들면 io-group입니다. |
ZONE |
영역 이름 |
구성 1
이 구성은 org-admin 클러스터의 grafana 객체를 타겟팅하는 PA 페르소나를 위한 것입니다.
platform-obs 네임스페이스 내의 project-grafana-viewer 역할을 Group에 부여합니다.
Kubectl 명령어
일반적인 명령어 형식은 다음과 같습니다.
kubectl --kubeconfig `KUBECONFIG` create rolebinding `RULE_NAME` -n platform-obs --group=`GROUP_NAME` --role=project-grafana-viewer예:
kubectl --kubeconfig <path-to-kubeconfig> create rolebinding project-grafana-viewers-binding --role=project-grafana-viewer --group=my-team --namespace=platform-obsIAC 파일 경로
/infrastructure/zonal/zones/`ZONE`/org-admin/rolebindings/`GROUP_NAME`/<YAML_FILE>YAML 파일
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: RULE_NAME namespace: platform-obs subjects: - kind: Group name: GROUP_NAME apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: project-grafana-viewer apiGroup: rbac.authorization.k8s.io
구성 2
이 구성은 org-admin 클러스터의 cortex 객체를 타겟팅하는 PA 페르소나를 위한 것입니다.
platform-obs 네임스페이스 내의 project-cortex-prometheus-viewer 역할을 Group에 부여합니다.
Kubectl 명령어
일반적인 명령어 형식은 다음과 같습니다.
kubectl --kubeconfig `KUBECONFIG` create rolebinding `RULE_NAME` -n platform-obs --group=`GROUP_NAME` --role=project-cortex-prometheus-viewer예:
kubectl --kubeconfig <path-to-kubeconfig> create rolebinding project-cortex-prometheus-viewer-binding --role=project-cortex-prometheus-viewer --group=my-team --namespace=platform-obsIAC 파일 경로
/infrastructure/zonal/zones/`ZONE`/org-admin/rolebindings/`GROUP_NAME`/<YAML_FILE>YAML 파일
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: RULE_NAME namespace: platform-obs subjects: - kind: Group name: GROUP_NAME apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: project-cortex-prometheus-viewer apiGroup: rbac.authorization.k8s.io
구성 3
이 구성은 org-admin 클러스터의 grafana 객체를 타겟팅하는 PA 페르소나를 위한 것입니다.
platform-obs 네임스페이스 내의 project-grafana-viewer 역할을 User에 부여합니다.
Kubectl 명령어
일반적인 명령어 형식은 다음과 같습니다.
kubectl --kubeconfig `KUBECONFIG` create rolebinding `RULE_NAME` -n platform-obs --user=`EMAIL_ADDRESS` --role=project-grafana-viewer예:
kubectl --kubeconfig <path-to-kubeconfig> create rolebinding project-grafana-viewers-binding --role=project-grafana-viewer --user=my-email@example.com --namespace=platform-obsIAC 파일 경로
/infrastructure/zonal/zones/`ZONE`/org-admin/rolebindings/`EMAIL_ADDRESS`/<YAML_FILE>YAML 파일
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: RULE_NAME namespace: platform-obs subjects: - kind: User name: EMAIL_ADDRESS apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: project-grafana-viewer apiGroup: rbac.authorization.k8s.io
구성 4
이 구성은 org-admin 클러스터의 cortex 객체를 타겟팅하는 PA 페르소나를 위한 것입니다.
platform-obs 네임스페이스 내의 project-cortex-prometheus-viewer 역할을 User에 부여합니다.
Kubectl 명령어
일반적인 명령어 형식은 다음과 같습니다.
kubectl --kubeconfig `KUBECONFIG` create rolebinding `RULE_NAME` -n platform-obs --user=`EMAIL_ADDRESS` --role=project-cortex-prometheus-viewer예:
kubectl --kubeconfig <path-to-kubeconfig> create rolebinding project-cortex-prometheus-viewer-binding --role=project-cortex-prometheus-viewer --user=my-email@example.com --namespace=platform-obsIAC 파일 경로
/infrastructure/zonal/zones/`ZONE`/org-admin/rolebindings/`EMAIL_ADDRESS`/<YAML_FILE>YAML 파일
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: RULE_NAME namespace: platform-obs subjects: - kind: User name: EMAIL_ADDRESS apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: project-cortex-prometheus-viewer apiGroup: rbac.authorization.k8s.io
이러한 역할에 대한 자세한 내용은 IAM 권한 준비를 참고하세요.
측정항목 가져오기 및 필터링
다음 방법 중 하나를 선택하여 쿼리를 작성하고, 추세를 시각화하고, 프로젝트 워크로드의 측정항목을 필터링합니다.
Grafana 대시보드
이 섹션에서는 Grafana 대시보드를 사용하여 측정항목에 액세스하는 방법을 설명합니다.
Grafana 엔드포인트 식별
다음 URL은 프로젝트의 Grafana 인스턴스의 엔드포인트입니다.
https://GDC_URL/PROJECT_NAMESPACE/grafana
다음을 바꿉니다.
GDC_URL: GDC의 조직 URL입니다.PROJECT_NAMESPACE: 프로젝트 네임스페이스예를 들어
org-1조직의platform-obs프로젝트에 대한 Grafana 엔드포인트는https://org-1/platform-obs/grafana입니다.
Grafana 사용자 인터페이스에서 측정항목 보기
Grafana 사용자 인터페이스에서 측정항목을 가져옵니다.
- GDC 콘솔에서 프로젝트를 선택합니다.
- 탐색 메뉴에서 작업 > 모니터링을 선택합니다.
Grafana에서 모두 보기를 클릭합니다.
새 페이지에 Grafana 엔드포인트가 열리고 사용자 인터페이스가 표시됩니다.
사용자 인터페이스의 탐색 메뉴에서 탐색 Explore을 클릭하여 Explore 페이지를 엽니다.
탐색 표시줄의 메뉴에서 유니버스 유형에 따라 측정항목을 가져올 데이터 소스를 선택합니다.
단일 영역 유니버스: prometheus를 선택하여 유니버스의 단일 영역에서 측정항목을 표시합니다.
멀티 영역 유니버스: Grafana는 여러 영역에 연결하여 영역 간 데이터를 표시할 수 있습니다. 측정항목 ZONE_NAME을 선택하여 로그인한 영역과 관계없이 유니버스의 모든 영역의 측정항목을 표시합니다.
또한 단일 대시보드에 교차 영역 데이터 시각화를 표시하고 쿼리에 여러 영역을 추가하려면 데이터 소스로 혼합을 선택합니다.
PromQL(Prometheus 쿼리 언어) 표현식을 사용하여 측정항목을 검색하는 쿼리를 입력합니다. 이 단계는 다음 두 가지 방법 중 하나로 수행할 수 있습니다.
- 측정항목 및 라벨 필터 메뉴에서 쿼리에 사용할 측정항목과 라벨을 선택합니다. 추가 추가를 클릭하여 쿼리에 라벨을 더 추가합니다. 그런 다음 쿼리 실행을 클릭합니다.
- 측정항목 텍스트 필드에 쿼리를 직접 입력하고 Shift+Enter를 눌러 쿼리를 실행합니다.
페이지에 쿼리와 일치하는 측정항목이 표시됩니다.

그림 1. Grafana 사용자 인터페이스에서 측정항목을 쿼리하는 메뉴 옵션
그림 1에서 prometheus 옵션은 Grafana에서 측정항목을 가져오기 위한 쿼리를 빌드할 수 있는 인터페이스를 표시합니다.
측정항목을 쿼리하는 데 사용할 수 있는 라벨의 값 예시는 샘플 쿼리 및 라벨을 참고하세요.
Cortex 엔드포인트
이 섹션에서는 Cortex를 사용하여 측정항목에 액세스하는 방법을 설명합니다.
Cortex 엔드포인트 확인
다음 URL은 프로젝트의 Cortex 인스턴스 엔드포인트입니다.
https://GDC_URL/PROJECT_NAMESPACE/cortex/prometheus/
다음을 바꿉니다.
GDC_URL: GDC의 조직 URL입니다.PROJECT_NAMESPACE: 프로젝트 네임스페이스예를 들어
org-1조직의platform-obs프로젝트에 대한 Cortex 엔드포인트는https://org-1/platform-obs/cortex/prometheus/입니다.
curl 요청 인증
- gdcloud CLI를 다운로드하고 설치합니다.
gdcloud
core/organization_console_url속성을 설정합니다.gdcloud config set core/organization_console_url https://GDC_URL-
gdcloud auth login 사용자 이름과 비밀번호를 사용하여 인증하고 로그인합니다.
로그인에 성공하면
gdcloud auth print-identity-token명령어를 통해 curl 요청에서 승인 헤더를 사용할 수 있습니다. 자세한 내용은 gdcloud auth를 참고하세요.
Cortex 엔드포인트 호출
curl 도구를 사용하여 Cortex 엔드포인트에 도달하려면 다음 단계를 완료하세요.
curl요청 인증curl를 사용하여 Cortex 엔드포인트를 호출하고 HTTP API 쿼리 형식을 사용하여 URL을 확장하여 측정항목을 쿼리합니다.다음은
curl요청의 예시입니다.curl https://GDC_URL/PROJECT_NAME/cortex/prometheus/api/v1/query?query=my_metric{cluster="my-cluster"}&time=2015-07-01T20:10:51.781Z \ -H "Authorization: Bearer $(gdcloud auth print-identity-token \ --audiences=https://GDC_URL)"명령어에 따라 출력을 가져옵니다. API 응답은 JSON 형식입니다.
샘플 쿼리 및 라벨
측정항목 이름과 라벨의 키-값 쌍을 사용하여 측정항목을 쿼리할 수 있습니다. PromQL 쿼리의 구문은 다음과 같습니다.
metric_name{label_one="value", label_two="value"}
라벨을 사용하면 측정항목의 특성을 구분할 수 있습니다. 이러한 방식으로 컨테이너 작성자는 워크로드가 측정항목을 생성하고 이러한 측정항목을 필터링하는 태그를 추가하도록 합니다.
예를 들어 수신된 HTTP 요청 수를 집계하는 api_http_requests_total 측정항목이 있을 수 있습니다. 그런 다음 이 측정항목에 request_method 라벨을 추가할 수 있습니다. 이 라벨은 POST, GET 또는 PUT 값을 사용합니다. 따라서 수신할 수 있는 각 요청 유형에 대해 세 개의 측정항목 스트림을 만듭니다. 이 경우 HTTP GET 요청 수를 찾으려면 다음 쿼리를 실행합니다.
api_http_requests_total{request_method="GET"}
측정항목 및 라벨에 대한 자세한 내용은 측정항목 및 라벨 이름 지정을 참고하세요.
다음은 MonitoringTarget 맞춤 리소스가 추가하는 기본 라벨의 일부입니다. 이러한 기본 라벨을 사용하여 측정항목을 쿼리할 수 있습니다.
_gdch_service: 서비스의 짧은 이름입니다.cluster: 클러스터의 이름입니다.container_name: 포드 내 컨테이너의 이름입니다.namespace_name: 프로젝트 네임스페이스pod_name: 포드 이름 접두사입니다.
다음 표에서는 Prometheus가 자동으로 추가하는 라벨을 설명합니다.
| 측정항목 라벨 | 설명 |
|---|---|
job |
측정항목을 수집하는 데 사용되는 스크랩 작업의 내부 이름입니다. MonitoringTarget 커스텀 리소스에 의해 생성된 작업에는 다음 패턴의 이름이 지정됩니다.obs-system/OBS_SHADOW_PROJECT_NAME/MONITORINGTARGET_NAME.MONITORINGTARGET_NAMESPACE/I/JI 및 J는 이름 충돌을 방지하기 위해 내부적으로 결정되는 고유한 숫자입니다. |
instance |
폐기된 서비스의 $IP:$PORT입니다. 워크로드 리소스에 복제본이 여러 개 있는 경우 이 필드를 사용하여 복제본을 구분합니다. |
다음 코드 샘플은 라벨의 키-값 쌍을 사용하여 다양한 측정항목을 쿼리하는 방법을 보여줍니다.
프로젝트에서 처리된 작업의 모든 측정항목 스트림을 확인합니다.
processed_ops_totalKubernetes 클러스터에서 수집된 처리된 작업을 확인합니다.
processed_ops_total{cluster="CLUSTER_NAME"}Kubernetes 클러스터에서 수집된 CPU 사용량을 확인합니다.
cpu_usage{cluster="CLUSTER_NAME"}
측정항목 라벨 재지정 도구를 사용하여 스크랩된 컨테이너에서 처음에는 노출되지 않는 라벨을 추가하고 생성된 측정항목의 이름을 바꿉니다. 수집하는 측정항목에 라벨을 추가하려면 MonitoringTarget 커스텀 리소스를 구성해야 합니다.
커스텀 리소스의 metricsRelabelings 필드에 이러한 라벨을 지정합니다.
자세한 내용은 라벨 측정항목을 참고하세요.
HTTP API 쿼리
형식 개요
API 응답은 일관되게 JSON 형식으로 지정됩니다. 성공한 요청은 항상 2xx 상태 코드를 수신합니다.
잘못된 요청의 경우 API 핸들러는 다음 HTTP 상태 코드 중 하나와 함께 JSON 오류 객체를 반환합니다.
- 400 잘못된 요청: 필수 매개변수가 누락되었거나 잘못 제공된 경우
- 503 서비스를 사용할 수 없음: 쿼리가 시간 제한을 초과하거나 중단된 경우
수집된 데이터는 응답의 'data' 필드에 포함됩니다.
JSON 응답 봉투 형식은 다음과 같습니다.
{
"status": "success" | "error",
"data": <data>,
// Only set if status is "error". The data field may still hold
// additional data.
"errorType": "<string>",
"error": "<string>",
// Only set if there were warnings while executing the request.
// There will still be data in the data field.
"warnings": ["<string>"],
// Only set if there were info-level annotations while executing the request.
"infos": ["<string>"]
}
즉석 쿼리
다음 엔드포인트는 특정 시점에 인스턴트 쿼리를 평가합니다.
GET /api/v1/query
POST /api/v1/query
Prometheus 표현식 쿼리에 사용할 수 있는 URL 쿼리 매개변수는 다음과 같습니다.
query=<string>: Prometheus 표현식 쿼리 문자열입니다.time=<rfc3339 | unix_timestamp>: 선택적 평가 타임스탬프로, RFC 3339 문자열 또는 Unix 타임스탬프로 지정됩니다. 생략하면 현재 서버 시간이 사용됩니다.timeout=<duration>: 평가 제한 시간(선택사항)입니다. 기본값은 query.timeout 플래그의 값으로 제한됩니다.limit=<number>: 반환할 계열의 최대 개수(선택사항)입니다. 이렇게 하면 행렬과 벡터의 계열이 잘리지만 스칼라나 문자열에는 영향을 미치지 않습니다. 값이 0이면 이 한도가 사용 중지됩니다.lookback_delta=<number>: 이 쿼리에 대한 조회 기간을 재정의하는 선택적 매개변수입니다.
시간 매개변수를 생략하면 현재 서버 시간이 사용됩니다.
URL 문자 제한을 초과할 수 있는 대규모 쿼리의 경우 POST 메서드를 사용하여 이러한 매개변수를 제출할 수 있습니다. 요청 본문이 URL로 인코딩되어 있고 Content-Type 헤더가 application/x-www-form-urlencoded로 설정되어 있는지 확인합니다.
쿼리 결과의 데이터 섹션은 다음 형식을 따릅니다.
{
"resultType": "matrix" | "vector" | "scalar" | "string",
"result": <value>
}
<value>는 쿼리 결과 데이터를 나타내며, resultType에 따라 형식이 달라집니다.
다음 예에서는 2015-07-01T20:10:51.781Z 시점의 표현식을 평가합니다.
curl 'http://localhost:9090/api/v1/query?query=up&time=2015-07-01T20:10:51.781Z'
{
"status" : "success",
"data" : {
"resultType" : "vector",
"result" : [
{
"metric" : {
"__name__" : "up",
"job" : "prometheus",
"instance" : "localhost:9090"
},
"value": [ 1435781451.781, "1" ]
},
{
"metric" : {
"__name__" : "up",
"job" : "node",
"instance" : "localhost:9100"
},
"value" : [ 1435781451.781, "0" ]
}
]
}
}
범위 쿼리
다음 엔드포인트는 일정 기간 동안 표현식 쿼리를 평가합니다.
GET /api/v1/query_range
POST /api/v1/query_range
Prometheus 표현식 쿼리에 사용할 수 있는 URL 쿼리 매개변수는 다음과 같습니다.
query=<string>: Prometheus 표현식 쿼리 문자열입니다.start=<rfc3339 | unix_timestamp>: 시작 타임스탬프(포함)end=<rfc3339 | unix_timestamp>: 종료 타임스탬프(포함)step=<duration | float>: 기간 형식 또는 초의 부동 소수점 숫자로 된 쿼리 해상도 단계 너비입니다.timeout=<duration>: 평가 제한 시간(선택사항)입니다. 기본값은 query.timeout 플래그의 값으로 제한됩니다.limit=<number>: 반환할 계열의 최대 개수(선택사항)입니다. 이렇게 하면 행렬과 벡터의 계열이 잘리지만 스칼라나 문자열에는 영향을 미치지 않습니다. 값이 0이면 이 한도가 사용 중지됩니다.lookback_delta=<number>: 이 쿼리에 대한 조회 기간을 재정의하는 선택적 매개변수입니다.
URL 문자 제한을 초과할 수 있는 대규모 쿼리의 경우 POST 메서드를 사용하여 이러한 매개변수를 제출할 수 있습니다. 요청 본문이 URL로 인코딩되어 있고 Content-Type 헤더가 application/x-www-form-urlencoded로 설정되어 있는지 확인합니다.
쿼리 결과의 데이터 섹션은 다음 형식을 따릅니다.
{
"resultType": "matrix",
"result": <value>
}
다음 예에서는 15초의 쿼리 해상도로 30초 범위에 걸쳐 up 표현식을 평가합니다.
curl 'http://localhost:9090/api/v1/query_range?query=up&start=2015-07-01T20:10:30.781Z&end=2015-07-01T20:11:00.781Z&step=15s'
{
"status" : "success",
"data" : {
"resultType" : "matrix",
"result" : [
{
"metric" : {
"__name__" : "up",
"job" : "prometheus",
"instance" : "localhost:9090"
},
"values" : [
[ 1435781430.781, "1" ],
[ 1435781445.781, "1" ],
[ 1435781460.781, "1" ]
]
},
{
"metric" : {
"__name__" : "up",
"job" : "node",
"instance" : "localhost:9091"
},
"values" : [
[ 1435781430.781, "0" ],
[ 1435781445.781, "0" ],
[ 1435781460.781, "1" ]
]
}
]
}
}
측정항목 및 라벨 이름 지정
측정항목 이름 지정 가이드라인
측정항목 이름을 정의할 때는 다음 원칙을 고려하세요.
측정항목 이름에는 클라이언트 라이브러리에서 '네임스페이스'라고도 하는 단어 하나로 된 애플리케이션 접두사가 포함되어야 합니다(SHOULD). 이 접두사는 측정항목이 속한 도메인을 식별합니다. 애플리케이션별 측정항목의 경우 일반적으로 애플리케이션 이름이 접두사로 사용됩니다.
예:
- prometheus_notifications_total (Prometheus 서버에만 해당)
- process_cpu_seconds_total (많은 클라이언트 라이브러리에서 내보냄)
- http_request_duration_seconds (모든 HTTP 요청)
측정항목 이름은 단일 단위를 나타내야 합니다(MUST)(예: 초와 밀리초 또는 초와 바이트를 혼합하지 않음).
측정항목 이름은 파생 단위(예: 밀리초, 메가바이트, 킬로미터)가 아닌 기본 단위(예: 초, 바이트, 미터)를 사용해야 합니다(SHOULD).
측정항목 이름에는 복수 단위 접미사가 포함되어야 합니다(SHOULD). 누적되는 수의 경우 해당하는 경우 단위 접미사 외에 'total' 접미사를 사용해야 합니다.
예:
- http_request_duration_seconds
- node_memory_usage_bytes
- http_requests_total (단위가 없는 누적 수)
- process_cpu_seconds_total (단위가 있는 누적 개수)
- foobar_build_info (실행 중인 바이너리에 관한 메타데이터를 제공하는 의사 측정항목)
측정항목 이름은 다른 모든 규칙을 준수하는 경우 사전순으로 정렬할 때 편리하게 그룹화할 수 있도록 구성요소를 정렬할 수 있습니다(MAY). 관련 측정항목은 함께 정렬되도록 공통 이름 구성요소가 앞에 배치되는 경우가 많습니다.
예:
- prometheus_tsdb_head_truncations_closed_total
- prometheus_tsdb_head_truncations_established_total
- prometheus_tsdb_head_truncations_failed_total
- prometheus_tsdb_head_truncations_total
측정항목 이름은 모든 라벨 측정기준에서 동일한 논리적 '측정 대상'을 일관되게 나타내야 합니다(SHOULD).
예:
- 요청 기간
- 데이터 전송 바이트
- 순간 리소스 사용량(백분율)
라벨 이름 지정 가이드라인
측정할 때 라벨을 사용하여 특성을 구분합니다. 예를 들면 다음과 같습니다.
- 총 API HTTP 요청(
api_http_requests_total)의 경우 작업 유형(예:create,update,delete(요청 유형:operation="create|update|delete"))으로 구분합니다. - API 요청 기간(초)(
api_request_duration_seconds)의 경우 요청 단계(예:extract,transform,load)로 구분합니다(요청 단계:stage="extract|transform|load").
라벨 이름이 측정항목 이름 자체에 포함되면 중복이 발생하고 나중에 이러한 라벨이 집계될 경우 혼동이 발생할 수 있으므로 라벨 이름을 포함하지 마세요.