Prometheus监控系统(7)标签配置与relabel重写
一、Prometheus 标签作用
对于线上环境,通常要将服务器分成不同的环境和角色,比如生产环境、测试环境、数据库服务器、应用服务器等。当角色划分后就需要监控系统能够知道每个实例所对应的环境或角色,以便更好的展示,便于运维人员分析监控数据。为了解决上面的需求,Prometheus 提供了标签(label)和标签重写(Relabel)的功能,通过为监控对象添加不同维度的标签用于角色区分,而relabel可以在抓取目标实例数据之前对标签进行改写
二、Prometheus 标签配置
1、Prometheus label标签用法
使用 label 可以为监控目标添加各种元数据信息,比如所属环境、服务类型等
global: scrape_interval: 15s scrape_configs: - job_name: "prometheus" metrics_path: "/metrics" static_configs: - targets: ["192.168.159.101:9090"] - job_name: "node" metrics_path: "/metrics" static_configs: - targets: ["192.168.159.101:9100"] labels: env: "test" role: "prometheus"
标签定义成功后,在查询数据时可以通过标签来筛选数据
2、Prometheus relabel标签用法
relabel 的本质是在 Prometheus 采集数据之前,对标签(label)进行增加、修改、删除等操作,就像是一个预处理器。relabel 决定了哪些数据可以采集(过滤)、采集后的数据带什么标签(修改)以及需不需要额外补充信息(添加)。通常使用relabel_configs对元标签重新标记,元标签中的数据在 Prometheus Web UI 的 Status -> Targets 页面中可以看到,但是无法直接使用标签进行查询
如果需要依赖这些标签。就需要relabel_configs重新标记,被重新标记的标签还需要指定特定动作进一步处理:
· replace:对标签进行替换(默认动作)
• keep:保留匹配的目标,
• drop:丢弃匹配的目标
· labelmap:将一个标签的值复制到另一个标签名
• labeldrop:删除指定标签,比如一些默认标签并不需要,可以用该动作删除
• labelkeep:仅保留指定标签
cat /data/prometheus/conf/prometheus.yml global: scrape_interval: 15s scrape_configs: - job_name: "prometheus" metrics_path: "/metrics" static_configs: - targets: ["192.168.159.101:9090"] - job_name: "node_by_consul" consul_sd_configs: - server: "192.168.159.101:8500" relabel_configs: # 示例1:给所有从 Consul 获取的目标统一添加一个 env=production 的标签,用于标记环境的场景 - target_label: env replacement: 'production' action: replace # 示例2:将 Consul 元数据中的服务名转为自定义标签,用于想保留服务发现的信息但需要更规范的标签名时 - source_labels: [__meta_consul_service] target_label: service_name action: replace # 示例3:删除以 __meta_ 开头的临时标签,用于清理不需要的标签 - regex: '__meta_.*' action: labeldrop
评论