【基础篇】Prometheus四种标签匹配模式

本篇内容介绍

4种查询类型:

  • = 等于
  • != 不等于
  • =~正则匹配
  • !~ 正则非匹配

四种标签匹配模式

  • = 等于

    • 查询举例:
      go_gc_duration_seconds{quantile=“0”}
      在这里插入图片描述
  • != 不等于

    • 查询举例:
      go_gc_duration_seconds{quantile!=“0”}
      在这里插入图片描述
  • =~正则匹配

    • 查询举例:
      prometheus_http_requests_total{handler=~“/api.*”}在这里插入图片描述
Prometheus 查询语言(PromQL)本身并不直接支持模糊匹配(fuzzy matching)的概念,但可以通过正则表达式匹配来实现类似的功能。正则表达式匹配允许使用 `=~` 和 `!~` 运算符来匹配或排除符合特定模式标签值。 ### 使用正则表达式进行模糊匹配 1. **匹配标签值** 使用 `=~` 运算符可以匹配符合正则表达式的标签值。例如,假设需要查询所有 `job` 标签值以 `api` 开头的时间序列,可以使用以下查询语句: ```promql {job=~"api.*"} ``` 此查询将匹配所有 `job` 标签值以 `api` 开头的时间序列,例如 `api-server`、`api-client` 等[^1]。 2. **排除标签值** 使用 `!~` 运算符可以排除符合特定正则表达式的标签值。例如,如果需要查询所有 `job` 标签值不以 `api` 开头的时间序列,可以使用以下查询语句: ```promql {job!~"api.*"} ``` 此查询将排除所有 `job` 标签值以 `api` 开头的时间序列[^1]。 ### 示例:结合指标名称和标签进行模糊匹配 假设需要查询所有指标名称以 `http_requests` 开头,并且 `status` 标签值为 `200` 或 `500` 的时间序列,可以使用以下查询语句: ```promql {__name__=~"http_requests.*", status=~"200|500"} ``` 此查询将匹配所有指标名称以 `http_requests` 开头,并且 `status` 标签值为 `200` 或 `500` 的时间序列[^1]。 ### 示例:组合多个正则表达式匹配 如果需要更复杂的匹配逻辑,可以结合多个正则表达式。例如,查询所有 `job` 标签值以 `api` 开头,并且 `method` 标签值为 `GET` 或 `POST` 的时间序列: ```promql {job=~"api.*", method=~"GET|POST"} ``` 此查询将匹配所有 `job` 标签值以 `api` 开头,并且 `method` 标签值为 `GET` 或 `POST` 的时间序列[^1]。 ### 注意事项 - **性能考虑**:使用正则表达式匹配时,尤其是复杂的正则表达式,可能会对 Prometheus 的性能产生影响。确保正则表达式尽可能具体,以减少不必要的匹配开销。 - **标签值限制**:Prometheus标签值是区分大小写的,因此正则表达式也需要根据实际标签值的大小写情况进行匹配。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值