Loki 标签确认
在练习第 4 步中,把 request_id 设为标签并再发送 30 行日志后,/series 返回的流数量大幅增加。为什么?
- 日志行数增加时,流的数量也会相应增加
- 只要有一个标签值不同,就会形成独立的流
- Loki 每 30 行日志就划分一个流
- 新增标签会把已有流拆成两个
一个流指的是什么?
- 来自同一个文件的一行日志
- 一种独立的标签组合
- 采集器打开的一个文件
- 发送日志的一个服务
在 {app="web"} |= "500" 中,|= "500" 是什么?
- 直接查询正文倒排索引的操作
- 利用正则表达式索引的操作
- 扫描前面的标签选择器所缩小范围的过滤器
- 查询预先计算的缓存的操作
把 request_id 设为标签会怎样?
- 索引增大,但按该值搜索会变快
- 与把值放在正文中没有区别
- 相同值会聚在一起,压缩效果更好
- 几乎每行都形成一个新流,导致流数量激增
把这个值留在日志正文中,就无法过滤了吗?
- 仍可用
| logfmt等解析器进行过滤 - 不是标签就完全无法过滤
- 只能用
|~正则表达式过滤 - 必须另建索引才能过滤
判断一个字段是否适合用作标签,关键标准是什么?
- 字段值是否足够短
- 字段值是否只含英文字母和数字
- 查询中是否经常使用该字段
- 不同值的数量是否会随时间持续增长
哪一种标签经常导致流数逐渐失控?
- pod 或 container_id——每次部署都会产生新值
- level——值通常固定在少数几种
- env——值通常只是生产或预发布等少数几种
- app——即使服务增多,也通常只有几十种值