本节重点介绍 :
- 多实例探针型采集配置解读
- relabel源码阅读
- __address__标签和target的关系
- 采集http请求时获取target最终参数
多实例探针型采集配置
进行一下解读
- prometheus首先读取job中的targets,把target赋值给
__address__
标签 ,此标签代表采集的地址 - 将
__address__
标签 赋值给__param_target
标签,因为prometheus 访问blackbox需要传参,__param_target
代表target参数 - 将
__param_target
标签 赋值给instance标签,因为后面监控数据需要instance标签做 被探测实例的标记 - 将
__address__
标签 替换成真实的blackbox地址,因为prometheus是请求blackbox地址而不是 探测的目标地址
relabel源码阅读
- 位置在D:\go_path\pkg\mod\github.com\prometheus\prometheus\scrape\target.go+ 328
- populateLabels函数 ,处理标签relabel流程
- 先设置job级别的 3个标签
job、__metrics_path__、 __scheme__
- 再根据job配置中的 params设置所有参数标签
__param_
- 调用 relabel.Process处理relabel config
- relabel.Process中会根据配置的action 进行处理
- 默认的action就是 replace
- 对于我们上面的例子中就是 source赋值给target
- 再回到populateLabels函数, 处理__address__标签,如果没有端口 则设置端口和scheme
- 删掉 __meta_开头的标签
- populateLabels最后一步 ,把将 instance标签设置为addr的值
- addr 就是 __address__的值
__address__标签和target的关系
- __address__标签来自于 各个服务发现给出的,比如常规的yaml解析的时候
- D:\go_path\pkg\mod\github.com\prometheus\prometheus@v1.8.2-0.20210321183757-31a518faab18\discovery\targetgroup\targetgroup.go
采集http请求时获取target最终参数
- 这些参数后面会加在请求目标地址的时候,代码位置 D:\go_path\src\github.com\prometheus\prometheus\scrape\target.go
- 在target的URL方法中可以看到 几个重要的参数 Schema、host、path、params
- 在最终的采集动作中,会获取target的URL方法获取 地址和参数,位置 D:\go_path\src\github.com\prometheus\prometheus\scrape\scrape.go
本节重点总结:
- 多实例探针型采集配置解读
- relabel源码阅读
- __address__标签和target的关系
- 采集http请求时获取target最终参数