查询加速
警告
在 Loki 和 Grafana Enterprise Logs (GEL) 中,使用 Bloom 过滤器进行查询加速是一个实验性功能。不提供工程和轮值支持。不提供 SLA。
在 Grafana Cloud 中,使用 Bloom 过滤器进行查询加速作为公开预览版为每月摄取超过 75TB 日志的部分大规模客户启用。提供的支持有限,且不提供 SLA。
如果启用了 Bloom 过滤器,您可以使用结构化元数据编写 LogQL 查询以受益于查询加速。
前提条件
- 必须启用Bloom 过滤器。开源和企业版客户必须启用 Bloom 过滤器。Grafana 支持团队会为参与公开预览的云客户启用 Bloom 过滤器。
- 日志必须发送结构化元数据。开源和企业版客户必须启用结构化元数据。在 Grafana Cloud 中,结构化元数据默认启用。
查询 Bloom
满足以下所有条件的标签过滤器表达式的查询将得到加速
- 使用**字符串相等性**的标签过滤器表达式,例如
| key="value"
。- 可以使用
or
和and
运算符匹配多个值,例如| detected_level="error" or detected_level="warn"
。 - **基本**正则表达式会自动简化为支持的表达式
| key=~"value"
被转换为| key="value"
。| key=~"value1|value2"
被转换为| key="value1" or key="value2"
。| key=~".+"
检查key
是否存在。不支持.*
。
- 可以使用
- 标签过滤器表达式正在查询结构化元数据,而不是流标签。
- 标签过滤器表达式必须放置在任何解析器表达式、标签格式化表达式、丢弃标签表达式或保留标签表达式之前。
要充分利用 Bloom 过滤器的查询加速功能,请确保在任何解析器表达式之前完成结构化元数据过滤
在以下示例中,查询未加速,因为结构化元数据过滤器 detected_level="error"
位于解析阶段 json
之后。
{cluster="prod"} | logfmt | json | detected_level="error"
在以下示例中,查询已加速,因为结构化元数据过滤器位于任何解析阶段之前。
{cluster="prod"} | detected_level="error" | logfmt | json