loki-query

通过 API 查询 Kubernetes 中的 Loki 日志,支持按 traceid、关键词、时间范围等条件调试应用问题。

已扫描
适合谁
Kubernetes 运维工程师、后端开发与 SRE 团队
不适合谁
无 Kubernetes 环境的普通用户、未配置 Loki 访问权限的初学者
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @peintune/loki-query

Skill 说明

命令、参数、文件名以原文为准

Loki 日志查询

使用内置脚本从 Grafana Loki 查询日志。

两种访问方式

1. 直接 URL 访问(推荐)

当 Loki 可通过网络访问时使用(如云服务、远程服务器等):

# 使用远程 Loki 地址
python scripts/query_loki.py \
  --loki-url "https://loki.example.com:3100" \
  --query "{namespace=\"default\"}" \
  --start "now-1h" \
  --limit 50

2. Kubernetes 端口转发

当 Loki 仅可通过 kubectl 访问时使用:

# 终端 1:端口转发 Loki
kubectl port-forward -n prometheus svc/loki 3100:3100

# 终端 2:查询日志
python scripts/query_loki.py \
  --loki-url "http://localhost:3100" \
  --query "{namespace=\"default\"}"

或使用内联端口转发配合 kubectl exec:

kubectl exec -n prometheus <loki-pod> -- curl -s "http://localhost:3100/loki/api/v1/query_range?query={namespace=\"default\"}&limit=50"

查询脚本

使用 scripts/query_loki.py 查询日志:

python scripts/query_loki.py \
  --loki-url "http://localhost:3100" \
  --query '{namespace="default"}' \
  --start "now-1h" \
  --end "now" \
  --limit 100

默认值: 若未指定 --loki-url,则使用 http://localhost:3100

常用查询模式

按命名空间查询

{namespace="<namespace>"}

按 Pod 查询

{namespace="<namespace>", pod="<pod-name>"}

按标签查询

{namespace="<ns>", app="<app-label>"}

关键词搜索

{namespace="<ns>"} |= "ERROR"
{namespace="<ns>"} |= "traceid=<trace-id>"
{namespace="<ns>"} |= "Exception"

时间范围

  • 最近 1 小时:now-1h
  • 最近 30 分钟:now-30m
  • 具体时间范围:2026-03-27T10:00:00Z2026-03-27T11:00:00Z

参数说明

  • loki-url: Loki API 端点(默认值:http://localhost:3100
  • query: LogQL 查询字符串(必填)
  • start: 开始时间(ISO 8601 格式或相对时间如 now-1h,默认值:now-1h
  • end: 结束时间(ISO 8601 格式或相对时间如 now,默认值:now
  • limit: 最大返回结果数(默认值:100)
  • direction: 查询方向,可选 "forward""backward"(默认值:backward
  • --json: 输出原始 JSON 格式,而非格式化文本

输出内容

返回格式化的日志行,每条记录包含时间戳和日志内容。

示例

查询过去一小时的错误日志

python scripts/query_loki.py --query '{namespace="production"} |= "ERROR"'

查询特定 trace ID 的日志

python scripts/query_loki.py --query '{namespace="default"} |= "traceid=abc123"'

查询指定 Pod 的日志并输出 JSON 格式

python scripts/query_loki.py --query '{namespace="default",pod="my-app-0"}' --json
P
@peintune

已收录 1 个 Skill

相关推荐