素材阁

Loki / LogQL 速查

共 22 条 Grafana Loki 与 LogQL,覆盖日志流选择器、解析与格式化、日志指标与聚合、 logcli 与运维四组内容。支持搜索与分类筛选,点击即可复制。

日志流选择器

LogQL 查询以流选择器开头。

LogQL / 命令说明
按标签选择日志流(至少一个非空匹配器)
多标签与正则匹配(=~ 匹配、!~ 排除)
|= 行内容包含
!= 行内容不包含
|~ 正则匹配行内容(!~ 反向)

解析与格式化

从日志行提取字段。

LogQL / 命令说明
按 JSON 解析日志行,提取其中的字段
按 logfmt(key=value)解析
解析后按字段过滤
重写输出行格式
从已解析字段生成标签
用正则提取具名字段

日志指标与聚合

把日志当作指标来统计。

LogQL / 命令说明
每秒日志条数
区间内日志条数
按 level 分组统计
解析出的数值字段取平均
数值字段 P95
请求最多的 5 个路径

logcli 与运维

命令行查询与采集。

LogQL / 命令说明
执行 LogQL 查询
查询最近 1 小时(--from / --to 指定范围)
实时跟踪日志(类似 tail -f)
HTTP API(配合 Grafana 数据源)
用 Promtail 把日志送往 Loki

使用说明

Loki / LogQL 速查:日志流选择器、解析与格式化、日志指标聚合、logcli 与运维;支持搜索与分类筛选,点击即可复制。

  1. 按用途点分类:日志流选择器、解析与格式化、日志指标与聚合、logcli 与运维。
  2. 点「LogQL / 命令」列复制,替换标签值与关键字后查询。
  3. 查询以标签选择器开头(如 {app="api"}),再用 |= 过滤行内容。
  4. 统计用 rate / count_over_time,配合 sum by 分组。

常见问题

Loki 和 Elasticsearch 有什么区别?
Loki 只索引标签、不索引日志正文,因此存储与成本低得多,靠标签 + 关键字过滤;ES 做全文索引、检索更快更强但更重、更贵。按需求选。
为什么选择器不能只有空匹配?
LogQL 要求标签选择器至少有一个「非空」(如 {app="api"}),不能只写 {app=~".*"} 这类全匹配,否则会扫描全部日志,性能极差。
|= 和 |~ 有什么区别?
|= 是「行内容包含某字符串」(精确子串);|~ 是「按正则匹配行内容」。前者更快,能不用正则就不用。
怎么把日志当指标做统计?
用日志指标:rate({app="api"}[5m]) 求每秒条数、count_over_time 求区间条数,再用 sum by (label) 分组,NaN 场景可结合 label_format 生成维度。

延伸阅读

相关工具