Metrics定义规则
-
Metrics名字以应用名为命名空间,即该metric是从哪个应用来的,比如:
-
pms_reservations_total
-
crs_failed_requests_total
-
-
Metrics必须有确定的单位,并且是基本单位,比如seconds, bytes, meters。而不是milliseconds, megabytes, kilometers。
-
每个单位都应该用复数,并且可以加描述性的后缀,比如total:
-
http_request_duration_seconds
-
node_memory_usage_bytes
-
http_requests_total(针对累加性质的计数集体)
-
-
Metrics应该代表一个整体性的描述,比如:
-
请求时长
-
数据bytes大小
-
瞬时资源使用百分比
-
sum()或者avg()之类的指标用于创建metric是很好的方式。Metric应该是有特定意义的词汇。如果一个metric无法描述清数据类型,那就分成几个metrics。
Labels
使用labels区分metric不同的特点,比如:
-
apt_http_requests_total - 区别不同的请求类型:
type="create|update|delete"
-
api_request_duration_seconds - 区别请求的阶段:
stage="extract|transform|load"
不要把label放到metric name中,这会造成冗余和混乱。
注意:每一个独立的lable键值对组合都代表一个新的time series,这很有可能增加数据量。不要用labels存储数据量大的指标,比如userId, email等。也就是说labels一般用作内容可能性比较少的指标。
基本单位
Prometheus使用部分基本单位列表:
Time: seconds
Temperature: celsius
Length: meters
Bytes: bytes
Bits: bytes
Percent: ratio() (值为0~1, ratio通常不用做后缀,但是A_per_B类型除外,比如disk_usage_ratio会这么使用)
Voltage: volts
Electric current: amperes
Energy: joules
Weight: grams