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 界面可以看到目前的实例和任务相关情况:

image

同时,Prometheus 也会给每一个实例添加一个 UP 指标:

image

通过该指标,可以对实例存活性进行监测。

新增标签

除了系统提供的 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 之后查看:

image

该标签只对修改配置生效以后获取到的新数据生效,相较于以前获取到的数据其实属于全新的时间序列。

实例配置(文件发现)

如果监测的实例很少,可以直接写在 static_configs 下面的 targets 下,但是如果有成百上千的实例还这样写就不便于维护了。

Prometheus 提供了单独定义文件导入的方式,用户可以将 targets 的配置抽离成单独的文件,然后在主配置中引入。

  1. 新建 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

  1. 修改主配置文件 prometheus.yml:
# 指标采集配置
scrape_configs:
  ...
  # 新增用户测试文件的任务
  - job_name: "node-exporter-file"
    # 从文件获取实例
    file_sd_configs:
      - files:
        - /ezops/service/prometheus/conf/targets/node-exporter.yml

重启 Prometheus 之后查看:

image

当然还有其它发现方式,后面会专门说明!

其它任务参数

每个任务除了上面必备的参数以外,还有提供一些额外的参数以应对复杂的需求,下面是一些常见的参数:

# 指标采集配置
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:
      ...
posted @ 2022-08-23 17:00  不知名换皮工程师  阅读(449)  评论(0编辑  收藏  举报