解包做什么
解包把日志行里解析出的数值字段当作样本值使用:从此可以对日志里的耗时、字节数求平均或分位,而不再只统计条数。它把原本只能检索的日志,变成了可以做数值统计的数据源。
使用前提是字段能解析
用之前必须先解析:把结构化字段解出来,再指定哪个字段作为数值。如果字段缺失或不是数值,该行会被跳过并计入错误指标,因此上线前要抽样验证字段质量,否则统计结果会系统性偏低。
基本信息
| 前提 | 先用解析表达式取出结构化字段 |
|---|---|
| 限制 | 一次查询只能有一个解包 |
| 异常处理 | 非数值行被跳过并计入错误指标 |
| 常见用法 | 耗时与字节数的数值统计 |
典型使用场景
- 接口耗时统计:从日志里取出耗时字段计算分位
- 响应体大小:统计返回大小的均值与分布
- 业务指标:对日志里的业务数值字段做统计
- 慢请求排名:按接口分组统计耗时分位
- 交叉验证:与指标侧的分位曲线互相印证
数值统计示例
数值统计示例
# 请求耗时的 P95(从结构化字段取数)
quantile_over_time(0.95,
{app="api"} | json | unwrap duration_ms [5m]) by (route)
# 响应体大小均值
avg_over_time({app="api"} | logfmt | unwrap bytes [1m])
# 先验证解析结果:确认字段确实被解出来
{app="api"} | json | __error__="" [5m]用法与注意
| 用法 | 作用 | 注意 |
|---|---|---|
| 平均统计 | 窗口内数值平均 | 字段缺失会让分母变小 |
| 分位统计 | 按解包值算分位 | 分组维度要控制基数 |
| 求和 | 累计数值总量 | 注意单位统一 |
| 按维度分组 | 拆分成多条曲线 | 高基数分组会拖慢查询 |
解包统计依赖字段完整性:被跳过的行不参与计算,结果口径是已解析样本,与日志总量口径并不相同。
解包配合高基数分组会产生大量序列,容易触发查询上限,分组维度要提前收敛到可控范围。