Prometheus 标签生命周期
文章目录
一、Prometheus 时间序列介绍
time series 时间序列,由指标名(metric name)和标签组成(key value pairs, labels)
比如
1 2 |
<metric name>{<label name>=<label value>, ...} api_http_requests_total{method="POST", handler="/messages"} |
标签代表指标维度,通过不同组合描述不同的场景,常用做筛选条件,标签值一般为可枚举的字符串。
一个存入Prometheus里面的时间序列的标签由用户配置的抓取目标labels和exporter暴露的合并而成。
比如下面的一个Prometheus序列瞬时值
1
|
api_http_requests_total{method="POST", handler="/messages",app_name="service_name",env="prd",instance="1.1.1.1:9999"} 10 |
method
,handler
是exporter暴露的
app_name
,env
是targets labels配置的
instance
是怎么来的?
二、标签是如何被抓取合并的
一个抓取配置是怎么配置的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
job_name: <job_name> [ scrape_interval: <duration> | default = <global_config.scrape_interval> ] [ scrape_timeout: <duration> | default = <global_config.scrape_timeout> ] [ metrics_path: <path> | default = /metrics ] [ honor_labels: <boolean> | default = false ] [ scheme: <scheme> | default = http ] params: [ <string>: [<string>, ...] ] basic_auth: [ username: <string> ] [ password: <secret> ] [ password_file: <string> ] [ bearer_token: <secret> ] [ bearer_token_file: /path/to/bearer/token/file ] tls_config: [ <tls_config> ] [ proxy_url: <string> ] azure_sd_configs: [ - <azure_sd_config> ... ] consul_sd_configs: [ - <consul_sd_config> ... ] dns_sd_configs: [ - <dns_sd_config> ... ] ec2_sd_configs: [ - <ec2_sd_config> ... ] openstack_sd_configs: [ - <openstack_sd_config> ... ] file_sd_configs: [ - <file_sd_config> ... ] gce_sd_configs: [ - <gce_sd_config> ... ] kubernetes_sd_configs: [ - <kubernetes_sd_config> ... ] marathon_sd_configs: [ - <marathon_sd_config> ... ] nerve_sd_configs: [ - <nerve_sd_config> ... ] serverset_sd_configs: [ - <serverset_sd_config> ... ] triton_sd_configs: [ - <triton_sd_config> ... ] static_configs: [ - <static_config> ... ] relabel_configs: [ - <relabel_config> ... ] metric_relabel_configs: [ - <relabel_config> ... ] [ sample_limit: <int> | default = 0 ] |
Prometheus提供多种监控目标配置,一般情况我们使用静态配置或者一种发现配置就可以了
比如使用文件发现,动态添加删除虚拟机监控
|
|
dev.yml
|
|
Prometheus加载了配置文件之后并不是直接去http请求targets的地址抓取的而是经过了一些列的转换
1 加载targets配置
2 一个抓取目标被转为类似如下结构
|
|
3 relabel_config
,标签重写
用户修改上面的label
|
|
__address__
不存在就会删除抓取目标
4 生成http抓取目标 __schema__://__address____metrics_path?<params key>=<params value>&<params key>=<params value>
5 开始抓取http请求 如果失败添加up指标 = 0
6 判断targets labels是否和exporer暴露的重复
7 如有重复 判断 honor_labels
? 以exporter为准 : exporter的标签加上前缀 exported_
8 没有重复 合并targets labels和exporter的lables,去掉__前缀开头的
9 metric_relabel_config
,指标标签重写
10 添加up =1和 scrape_duration_seconds 新指标
三、relabel_config配置
文章作者 yangyang
上次更新 2019-03-14