1、通(tong)過JSON或者YAML格式的文件,定義所有的監控(kong)目標
以(yi)下(xia)是一個json示(shi)例(li):
[
{
"targets": [ "localhost:8080"],
"labels": {
"env": "localhost",
"job": "cadvisor"
}
},
{
"targets": [ "localhost:9104" ],
"labels": {
"env": "prod",
"job": "mysqld"
}
},
{
"targets": [ "localhost:9100"],
"labels": {
"env": "prod",
"job": "node"
}
}
]
示例說明:
(1)JSON文件中分別定義了3個采集(ji)任務,以及每個任務對應的Target列表
(2)通(tong)過labels為這(zhe)(zhe)些(xie)實例添(tian)加一些(xie)額外(wai)的標(biao)簽信息,采(cai)集到的樣本信息將包含(han)這(zhe)(zhe)些(xie)標(biao)簽信息,從(cong)而可以(yi)通(tong)過該標(biao)簽按照環境對數據(ju)進(jin)行統計。
2、創建Prometheus配置文件/etc/prometheus/prometheus-file-sd.yml,并(bing)添加以下內容
global:
scrape_interval: 15s
scrape_timeout: 10s
evaluation_interval: 15s
scrape_configs:
- job_name: 'file_ds'
file_sd_configs:
- refresh_interval: 1m
- files:
- targets.json
這(zhe)里定義(yi)了一(yi)個基于file_sd_configs的(de)監控采集任務(wu),其中模式的(de)任務(wu)名(ming)稱(cheng)為file_ds。在(zai)JSON文(wen)件中可(ke)以使用(yong)job標(biao)簽覆蓋默認的(de)job名(ming)稱(cheng)。注意refresh_interval是可(ke)選的(de),該(gai)實例是每隔一(yi)分(fen)鐘加載(zai)一(yi)次targets配(pei)置(zhi)文(wen)件,如果(guo)不配(pei)置(zhi)默認5分(fen)鐘
3、啟動Prometheus服務
prometheus --config.file=/etc/prometheus/prometheus-file-sd.yml --storage.tsdb.path=/data/prometheus
4、觀察效果
在Prometheus UI的Targets下(xia)就可以(yi)(yi)看到當前從targets.json文件中(zhong)動態獲取到的Target實例(li)信息以(yi)(yi)及監控任務(wu)的采集狀(zhuang)態,同時在Labels列下(xia)會包含(han)用戶添加的自(zi)定義標簽(qian):
