Loki 数据源是什么
Loki 数据源在 Grafana 里以标签选择器检索日志,返回日志行列表与日志量直方图。它支持 LogQL 的行过滤与解析,还能用派生字段(Derived fields)把日志里的 trace_id 变成可点击链接,直接跳到 Tempo 或 Jaeger 的链路详情,实现日志与链路的互跳。
基本信息
| 数据源 URL | http://loki:3100 |
|---|---|
| 查询语言 | LogQL(标签选择器 + 行过滤 + 解析) |
| 检索入口 | Explore 或面板 |
| 直方图 | 按时间的日志量分布 |
| 派生字段 | 正则提取 + 链接到追踪系统 |
| 常用流标签 | app / env / namespace / level |
典型使用场景
- 按服务与环境筛选日志,定位错误与异常堆栈
- 先用直方图看突增时段,再叠加过滤条件收窄范围
- 解析 JSON 日志后按字段过滤(如 duration_ms > 1000)
- 从日志里的 trace_id 一键跳到链路详情,贯通日志与追踪
- 在面板里展示错误日志计数,做成值班看板的日志维度面板
- 把日志查询结果与指标面板并排,故障时一处对照
配置与查询
配置与查询
# 数据源 URL:http://loki:3100
# Explore 查询:
{app="api", env="prod"} |= "timeout" | json | duration_ms > 1000
# 只统计错误日志条数(用 metric query)
sum(count_over_time({app="api"} |= "error" [5m]))
# Derived fields:用正则从日志行提取 trace 标识,
# 链接到 Tempo/Jaeger 的 trace 页面常用操作对照
| 操作 | 写法 | 说明 |
|---|---|---|
| 流选择器 | {app="api", env="prod"} | 低基数标签缩小范围 |
| 行过滤 | |= "error" | 包含 / 排除关键字 |
| 解析 | | json / | logfmt | 把行内结构提取成字段 |
| 派生字段 | 正则 + URL 模板 | 生成可点击的跳转链接 |
| 计数 | count_over_time | 把日志量转成时间序列 |
日志量直方图能快速看出突增时段,再决定加哪个过滤条件深入,比直接翻日志行效率高得多。
派生字段的链接要带上时间范围参数,否则跳转后落在默认时间窗,上下文对不上。
Loki 的标签选择器只支持低基数的流标签:高基数字段要在解析后用过滤条件处理,不能写进选择器。
日志量很大时先做过滤再解析:先缩小流范围能显著降低查询的扫描量与服务端压力。