06. Prometheus - 任务和实例
任务和实例
任务(Job
)与实例(Instance
)是 Prometheus 监控中常提到的词汇。
每一个提供样本数据的端点称为一个实例,例如各种 exporter,或者自己开发的能够提供符合 Prometheus 要求的数据格式 ,并允许通过 HTTP 请求获取信息的服务。
而对于实例数据的采集,则是通过一个个任务来进行管理,每个任务会管理一类相同业务的实例。
以前面配置的 Prometheus 主配置文件为例,scrape_configs 字段就是用于管理任务的配置:
# 指标采集配置
scrape_configs:
# 任务名称
- job_name: "prometheus"
# 实例列表
static_configs:
- targets: ["127.0.0.1:9090"]
# 任务名称
- job_name: "node-exporter"
# 实例列表
static_configs:
- targets:
- "192.168.200.101:9100"
- "192.168.200.102:9100"
Prometheus 自带了一个名叫 prometheus 的任务,该任务主要用于收集 Prometheus 自己的相关指标。
用户可以根据采集实例进行分类然后分配到不同的任务。比如将所有 Node Exporter 的实例分到名为 node-exporter 任务。job_name 定义的任务名称会以 job=xxx
的格式作为标签被添加到时间序列中,这样就可以通过该标签对数据也进行分组。
通过 Prometheus 提供的 UI 界面可以看到目前的实例和任务相关情况:
同时,Prometheus 也会给每一个实例添加一个 UP
指标:
通过该指标,可以对实例存活性进行监测。
新增标签
除了系统提供的 instance 和 job 标签以外,用户也可以自己添加标签:
# 指标采集配置
scrape_configs:
...
- job_name: "node-exporter"
static_configs:
- targets:
- "192.168.200.101:9100"
- "192.168.200.102:9100"
# 新增自定义标签
labels:
group: "node"
env: "product"
重启 Prometheus 之后查看:
该标签只对修改配置生效以后获取到的新数据生效,相较于以前获取到的数据其实属于全新的时间序列。
实例配置(文件发现)
如果监测的实例很少,可以直接写在 static_configs 下面的 targets 下,但是如果有成百上千的实例还这样写就不便于维护了。
Prometheus 提供了单独定义文件导入的方式,用户可以将 targets 的配置抽离成单独的文件,然后在主配置中引入。
- 新建 node-exporter.yml(推荐使用 job_name 命名,便于区分):
cd /ezops/service/prometheus/conf
mkdir targets
cd targets
vim node-exporter.yml
配置如下:
- targets:
- "192.168.200.101:9100" # node-01
- "192.168.200.102:9100" # node-02
- 修改主配置文件 prometheus.yml:
# 指标采集配置
scrape_configs:
...
# 新增用户测试文件的任务
- job_name: "node-exporter-file"
# 从文件获取实例
file_sd_configs:
- files:
- /ezops/service/prometheus/conf/targets/node-exporter.yml
重启 Prometheus 之后查看:
当然还有其它发现方式,后面会专门说明!
其它任务参数
每个任务除了上面必备的参数以外,还有提供一些额外的参数以应对复杂的需求,下面是一些常见的参数:
# 指标采集配置
scrape_configs:
...
# 参数展示
- job_name: "node-exporter-demo"
# 定义单独的采集时间
scrape_interval: 20s
# 定义单独的超时时间
scrape_timeout: 10s
# 定义请求协议
scheme: http
# 定于接口地址
metrics_path: "/metrics"
# 应对需要传参的情景
params:
module: [http_2xx]
# 应对需要登录的情况
basic_auth:
username: demo
password: 123
# 从文件获取实例
file_sd_configs:
...