prometheus 抓取生命周期

一、prometheus抓取生命周期

        prometheus server在interval间隔内检查job,生成target,这就是服务发现的过程;服务发现返回一个target列表,服务发现会根据target的配置来设置其标签,默认会有三个标签:

__scheme__: 目标的模式,默认为http

__address__:目标的地址,通常为instance标签的内容

__metrics_path__:目标的指标访问路径,默认为/metrics

注意:

1)这些__标签,在web端看不见,因为标签在生命周期后期被删除了

2) 标签可以在配置中被覆盖

  - job_name: "docker"

    scheme: https

    metrics_path: /testmetrics
    static_configs:
      - targets: ["192.168.161.118:8080"]

3) prometheus提供了重新标记目标的机会,你可以通过过滤目标,以删除或保留特定的条目

1.1 生命周期简化流程:

 流程简单说明:

1. 服务发现:通过服务发现,可以获取target列表

2. 通过服务发现中的target列表配置,生成标签

3. 在服务发现过程配置中,可以对标签进行重新标记,可覆盖、删除、过滤标签

4. 指标抓取

5. 在指标被抓取后,存入存储系统之前,可以对标签再次进行重新标记,可覆盖、删除

二、标签生命周期

        标签的定义: prometheus中标签提供了时间序列数据的维度,可以定义目标。

        标签结合指标名称,构成了时间序列数据的唯一标识;添加或修改标签,会创建新的时间序列

        prometheus_build_info{branch="HEAD", goversion="go1.19.2", instance="192.168.161.118:9090", job="prometheus", revision="dcd6af9e0d56165c6f5c6", version="2.39.1"}

        说明:

        1)对于先前存在的时间序列,如果抓取不再返回数据,那么该时间序列会被标识为陈旧;同样,被删除的时间序列,也会被标识为陈旧,图像中不会显示陈旧的数据

        2) 重新标记:我们说过了,添加或修改标签,会创建新的时间序列,那为何还要对时间序列数据进行重新标记?因为我们要控制该生命周期;

 重新标记常见的场景:

1. 删除不必要的标签

2. 删除敏感的标签

3. 添加或便捷、修改指标的标标签值

重新标记只有两个阶段可以操作:

1. 服务发现过程中,对目标进行重新标记;在job中的relabel_configs块中完成

2. 指标抓取后存入存储系统之前。在job内的metric_relabel_configs块中完成

案例一:

  - job_name: "docker"
    static_configs:
      - targets: ["192.168.161.118:8080"]
    metric_relabel_configs: 
      - source_labels: [__name__]
        regex: '(container_tasks_state|container_memory_failures_total)'
        action: drop

说明:
    source_labels选择要操作的指标并且还需要一组标签名称
    __name__: 标识指标名称的预留标签
    regex: 匹配的指标名称
    action:  #匹配后执行的动作
        drop: 数据存储之前删除指标
        keep:保留与正则表达式匹配的指标,并删除所有其他的指标
        replace: 默认操作
        labeldrop: 删除标签
   replacement: 替换标签

默认action就是replace

案例二:

我们运行一个nginx的docker容器

container_cpu_load_average_10s{container_label_maintainer="NGINX Docker Maintainers <docker-maint@nginx.com>",id="/system.slice/docker-aea232c9cb058438bc4920a06afa7de387fd11faad023b8c26503e338f38e575.scope",image="nginx",name="nginx-test"} 0

其中: id=""/system.slice/docker-aea232c9cb058438bc4920a06afa7de387fd11faad023b8c26503e338f38e575.scope"比较长,我们进行替换下

  - job_name: "docker"
    static_configs:
      - targets: ["192.168.161.118:8080"]
    metric_relabel_configs: 
    - source_labels: [id]
      regex: '/system.slice/([a-z0-9]+)'
      replacement: "$1"
      target_label: container_id

说明:

源标签为ID,通过regexp进行正则匹配,replacement包含新标签的值,target_label指定捕获信息的目标

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值