Prometheus标签的管理
Prometheus 在处理数据指标的过程中,包括【抓取的生命周期】和【标签的生命周期】。
默认情况下,当 Prometheus加载 Target 实例完成后,这些Target时候都会包含一些默认的标签:这些标签将会告诉Prometheus如何从该Target实例中获取监控数据。
3、Prometheus的标签配置
Prometheus通过标签可以实现查询过滤,并且还支持重新标签实现动态生成标签、过滤、删除无用标签等灵活配置。在采集数据之前可以使用relabel_configs进行重新标记,存储数据之前可以使用metric_relabel_configs重新标记。两种重新打标签的方式都支持以下动作:
· replace:默认动作,将匹配到的标签内容做替换
• keep:通过正则匹配,仅保留正则匹配到的标签
• drop:通过正则匹配,删除正则匹配到的标签
• labeldrop:删除指定标签,比如一些默认标签并不需要,可以用该动作删除
• labelkeep:仅保留指定标签
4、为了删除标签,我们指定一个正则表达式,然后指定删除标签的操作labeldrop。这将删除与正则表达式匹配的所有标签。此操作还有一个对应的反向操作labelkeep,它将保留与正则表达式匹配的标签,并删除所有其他标签。
# my global config global: scrape_interval: 5s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 5s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: - 127.0.0.1:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: - "simulator_alert_rules.yml" # - "second_rules.yml" # A scrape configuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_configs: # 任意写,建议英文,不要包含特殊字符 - job_name: 'http-simulator' # 多久采集一次数据 scrape_interval: 15s # 采集时的超时时间 scrape_timeout: 10s # 采集的路径是啥 metrics_path: '/prometheus' # 采集服务的地址,设置成上面Spring Boot应用所在服务器的具体地址。 # 静态配置 static_configs: # 指定要抓取的目标地址 - targets: ['localhost:8080'] # 给抓取出来的所有指标添加指定的标签 labels: my: label your: label
上面使用labels标签标记了两个标签:
在收集的指标中就可以看到对应的两个标签的值
第二种方式使用metric_relabel_configs添加标签:
# my global config global: scrape_interval: 5s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 5s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: - 127.0.0.1:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: - "simulator_alert_rules.yml" # - "second_rules.yml" # A scrape configuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_configs: # 任意写,建议英文,不要包含特殊字符 - job_name: 'http-simulator' # 多久采集一次数据 scrape_interval: 15s # 采集时的超时时间 scrape_timeout: 10s # 采集的路径是啥 metrics_path: '/prometheus' # 采集服务的地址,设置成上面Spring Boot应用所在服务器的具体地址。 # 静态配置 static_configs: # 指定要抓取的目标地址 - targets: ['localhost:8080'] # 给抓取出来的所有指标添加指定的标签 metric_relabel_configs: - target_label: test_key replacement: 中国
我们可以看到在添加的指标中,已经携带了对应的标签纸test_key对于的标签的值为中国
我们可以通过这种方式metrics添加自己想要的标签,更灵活的使用Prometheus的标签处理自己的监控项。
针对中间件的拉取需要配置下面的信息:
- job_name: redis_exporter static_configs: - targets: ['10.100.11.53:9121','10.100.11.54:9121','10.100.11.55:9121'] labels: instance: redis - job_name: 'linux' static_configs: - targets: ['10.100.11.53:9100','10.100.11.54:9100','10.100.11.55:9100'] labels: instance: linux
prometheus配置文件动态管理
每次新加监控节点的时候,只需要添加一个新的targets即可,“instance”是一个label标签,方便区分。那么这里就产生一个问题,当targets的数量达到几百上千之后,配置文件看起来就会特别冗余。所以有经验的运维人就会想到用include的方式,把其他的配置文件包含进来,这样就把一个大而冗余的主配置文件,切分成一个个小的配置文件。Prometheus这里用的方法就是基于文件的服务发现–“file_sd_config”。
- job_name: 'file_ds' file_sd_configs: - refresh_interval: 1m files: - ./conf.d/*.json
prometheus 实时更新./conf.d/下以.json结尾的文件。有变化自动更新到prometheus的监控页面上展示。
我们来看下我们的一个案例
# my global config global: scrape_interval: 5s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 5s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: - 127.0.0.1:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: - "simulator_alert_rules.yml" # - "second_rules.yml" # A scrape configuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_configs: # 任意写,建议英文,不要包含特殊字符 - job_name: 'http-simulator' # 多久采集一次数据 scrape_interval: 15s # 采集时的超时时间 scrape_timeout: 10s # 采集的路径是啥 metrics_path: '/prometheus' # 采集服务的地址,设置成上面Spring Boot应用所在服务器的具体地址。 # 静态配置 static_configs: # 指定要抓取的目标地址 - targets: ['localhost:8080'] # 给抓取出来的所有指标添加指定的标签 params: collect[]: - go_memstats_heap_inuse_bytes - tomcat metric_relabel_configs: - target_label: test_key replacement: 中国 - job_name: 'file_ds' # 多久采集一次数据 scrape_interval: 15s # 采集时的超时时间 scrape_timeout: 10s # 采集的路径是啥 metrics_path: '/prometheus' file_sd_configs: - refresh_interval: 1m files: - C:\1.json
我们对应的1.json文件如下
[ { "targets": [ "127.0.0.1:8080" ], "labels": { "env": "product", "job": "prometheus", "instance": "100.100.110.71_prometheus_server" } }, { "targets": [ "100.100.110.53:9121" ], "labels": { "env": "product", "job": "redis", "instance": "redis53" } } ]
我们在普罗米修斯下面能够看到对应的文件
一个job对应下面的一条记录
我们来看监控的指标记录中就已经添加了下面的信息和记录
https://www.cnblogs.com/zqj-blog/p/11024834.html pushgateway的使用方式
posted on 2021-01-20 17:32 luzhouxiaoshuai 阅读(1548) 评论(0) 编辑 收藏 举报