Prometheus Metric&Label 네이밍 모범사례

backend developer interested in technical problem
Metric Name
1️⃣data model에 유효한 단어를 써야한다.
Specify the general feature of a system that is measured (e.g.
http_requests_total- the total number of HTTP requests received).Metric names may contain ASCII letters, digits, underscores, and colons. It must match the regex
[a-zA-Z_:][a-zA-Z0-9_:]*.
2️⃣metric이 속한 도메인과 관련있는 접두사 사용
종종 클라이언트쪽 라이브러리에서 접두사 는
namespace로 참조됩니다.애플리케이션과 관련된 측정항목의 경우 일반적으로 접두사는 애플리케이션 이름 자체입니다
그러나 클라이언트 라이브러리에서 내보낸 표준화된 측정항목과 같이 측정항목이 더 일반적인 경우도 있습니다.
예시
prometheus_notifications_total(specific to the Prometheus server)process_cpu_seconds_total(exported by many client libraries)http_request_duration_seconds(for all HTTP requests)
3️⃣단일 단위를 가져야한다.
- 초와 밀리초 또는 초와 바이트를 혼합하지 말 것
4️⃣기본 단위를 사용할 것
기본 단위
더 나은 호환성을 위해서는 기본 단위를 사용해야 합니다.
| 시간 | 초 | |
| 온도 | 섭씨 | 실용적인 이유로 켈빈 보다 섭씨가 선호됩니다 . 켈빈은 색온도와 같은 특수한 경우나 온도가 절대적이어야 하는 경우 기본 단위로 허용됩니다. |
| 길이 | 미터 | |
| 바이트 | 바이트 | |
| 비트 | 바이트 | 다양한 측정항목을 결합하여 혼동을 피하려면 비트가 더 일반적으로 나타나는 경우에도 항상 bytes 를 사용합니다. |
| 퍼센트 | 비율 | 값은 **0-1(0-100 아님!)**입니다. |
ratio는 disk_usage_ratio와 같은 이름의 접미사로만 사용됩니다 . 일반적인 측정 항목 이름은 A_per_B패턴을 따릅니다. | ||
| 전압 | 볼트 | |
| 전류 | 암페어 | |
| 에너지 | 줄 | |
| 힘 | 줄 카운터를 내보내는 것을 선호하고 rate(joules[5m])와트 단위로 전력을 제공합니다. | |
| 무게 | 그램 | 킬로 접두어 관련 문제를 피하기 위해 킬로그램 보다 그램을 선호합니다 . |
Label
측정 대상의 특성을 구별하려면 라벨을 사용합니다.
api_http_requests_totaloperation="create|update|delete": 요청 유형 구별api_request_duration_secondsstage="extract|transform|load": 요청 단계 구별
측정항목 이름에 라벨 이름을 넣지 마세요. 이렇게 하면 중복이 발생하고 해당 라벨이 집계되면 혼란이 생길 수 있습니다.
사용자 ID, 이메일 주소 또는 기타 무제한 값 집합과 같이 카디널리티가 높은 차원(다양한 레이블 값)을 저장하는 데 레이블을 사용하지 마십시오.참고
프로메테우스 공식문서 [https://prometheus.io/docs/practices/naming/]




