流选择器的作用
日志查询从流选择器开始:先用标签匹配定位要扫描的数据流,再逐步叠加过滤条件。选择器写在最前面,决定这次查询要读取哪些数据;选择器越精确,扫描的数据量与响应时间就越小。
匹配语义
匹配运算符与指标查询一致:等号与不等号做精确匹配,带波浪号的做正则匹配且为全串匹配。查询至少要有一个非空的匹配条件,否则会被直接拒绝,这是为了避免无标签的全量扫描拖垮后端。
基本信息
| 四种匹配 | 等于、不等于、正则匹配、正则不匹配 |
|---|---|
| 空值匹配 | 用正则要求至少一个字符,以匹配已设置标签的流 |
| 前缀匹配 | 正则前缀明确时扫描更高效 |
| 组合方式 | 多个标签条件用逗号分隔,需同时满足 |
典型使用场景
- 按服务定位:用应用与环境的组合缩小检索范围
- 排除测试数据:用不等条件过滤测试命名空间
- 多值匹配:用正则一次选中多个服务或级别
- 空值补全:对未设置某标签的流用正则表达至少一个字符
- 探索起步:先用宽选择器观察有哪些标签,再逐步收窄
选择器写法
选择器写法
# 精确匹配
{app="api"}
# 正则多选与排除
{app=~"api|web", env!="test"}
# 要求某标签至少有一个字符
{cluster=~".+"}
# 无效写法:没有任何非空匹配条件,会被拒绝
# {}匹配方式
| 写法 | 含义 | 注意 |
|---|---|---|
| 等于 | 标签值完全一致 | 最精确,优先使用 |
| 不等于 | 排除某个取值 | 常用于排除测试环境 |
| 正则匹配 | 按模式匹配标签值 | 全串匹配,注意锚定 |
| 正则不匹配 | 按模式排除取值 | 过于宽泛会降低扫描效率 |
选择器越精细,扫描的流与数据块越少;正则前缀明确的写法比宽泛正则更容易被优化,检索更快。
标签值区分大小写:写错大小写不会报错,只会返回空结果,容易被误判为日志没有上报。