Prometheus處理metrics的標籤
Prometheus在拉取exporter的數據之後,會對數據標籤進行編輯,也允許用戶通過relabel_configs對標籤進行處理,包括修改、刪除標籤以及刪除不必要的標籤。
1、配置說明
相關配置具體如下:
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['47.95.32.229:9100']
relabel_configs:
- source_labels: '[' <labelname> [, ...] ']' #從target數據中現有標籤中選擇值,source_label的值使用separator的配置進行連接,當與regex的正則表達式匹配時,進行action中配置的動作,如:替換、保留、刪除等
separator: <string> | default = ; #連接source_label中的多個標籤,默認值是";"
target_label: <labelname> #目標標籤,當action配置爲replace時,target_label是必須的
regex: <regex> | default = (.*) #通過正則表達式匹配提取值
modulus: <uint64> #獲取source_labels的哈希值模數
replacement: <string> | default = $1 #如果正則表達式匹配到值的話,則用當前值進行替換
action: <relabel_action> | default = replace #對匹配到的標籤進行的操作,
其中,<relabel_action>包含以下幾種操作:
- replace:使用replacement的值替換被regex正則匹配到source_label;
- keep:保留被匹配到的標籤的metric,刪除未被匹配到標籤的 metric;
- drop:刪除被匹配到的標籤的metric,保留未被匹配到標籤的metric;
- hashmod:將target_label設置成source_label的modulus配置的hash值;
- labelmap:將regex匹配到的所有標籤的名稱配置成新的標籤,值配置成新標籤的值;
- labeldrop:將符合規則的標籤刪除,保留未被匹配的標籤;
- labelkeep:將符合規則的標籤保留,刪除未被匹配的標籤。
2. 給metrics添加標籤
在基於Prometheus進行監控平臺的設計的過程中,通過標籤對metrics進行分類,所以需要給metrics添加標籤。配置舉例如下:
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
metric_relabel_configs:
- target_label: test_key
replacement: test_value
在去Prometheus上查看收集到的metrics:
可以看到該node上的metrics都增加了test_key的label,內容爲指定的test_value。
(而且標籤的值還可以支持中文,這什麼神仙監控組件啊,我哭了o(╥﹏╥)o)
我們可以通過這種方式metrics添加自己想要的標籤,更靈活的使用Prometheus的標籤處理自己的監控項。
官方文檔如下:
https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
自勉小尾巴: 多少事,從來急;天地轉,光陰迫。一萬年太久,只爭朝夕。