1、通过JSON或者YAML格式的文件,定义所有的监控目标
以下是一个json示例:
[
{
"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个采集任务,以及每个任务对应的Target列表
(2)通过labels为这些实例添加一些额外的标签信息,采集到的样本信息将包含这些标签信息,从而可以通过该标签按照环境对数据进行统计。
2、创建Prometheus配置文件/etc/prometheus/prometheus-file-sd.yml,并添加以下内容
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
这里定义了一个基于file_sd_configs的监控采集任务,其中模式的任务名称为file_ds。在JSON文件中可以使用job标签覆盖默认的job名称。注意refresh_interval是可选的,该实例是每隔一分钟加载一次targets配置文件,如果不配置默认5分钟
3、启动Prometheus服务
prometheus --config.file=/etc/prometheus/prometheus-file-sd.yml --storage.tsdb.path=/data/prometheus
4、观察效果
在Prometheus UI的Targets下就可以看到当前从targets.json文件中动态获取到的Target实例信息以及监控任务的采集状态,同时在Labels列下会包含用户添加的自定义标签: