Loki Log Query
Query logs from Grafana Loki using the bundled script.
Two Access Modes
1. Direct URL Access (Recommended)
Use when Loki is accessible via network (cloud service, remote server, etc.):
CODEBLOCK0
2. Kubernetes Port-Forward
Use when Loki is only accessible via kubectl:
CODEBLOCK1
Or use inline port-forward with kubectl exec:
CODEBLOCK2
Query Script
Use scripts/query_loki.py to query logs:
CODEBLOCK3
Default: If --loki-url is not specified, uses http://localhost:3100.
Common Query Patterns
By Namespace
CODEBLOCK4
By Pod
CODEBLOCK5
By Labels
CODEBLOCK6
Search Keywords
CODEBLOCK7
Time Range
- - Last 1 hour: INLINECODE3
- Last 30 minutes: INLINECODE4
- Specific range:
2026-03-27T10:00:00Z to INLINECODE6
Parameters
- -
loki-url: Loki API endpoint (default: http://localhost:3100) - INLINECODE8 : LogQL query string (required)
- INLINECODE9 : Start time (ISO 8601 or relative like now-1h, default: now-1h)
- INLINECODE10 : End time (ISO 8601 or relative like now, default: now)
- INLINECODE11 : Max results (default: 100)
- INLINECODE12 : "forward" or "backward" (default: backward)
- INLINECODE13 : Output raw JSON instead of formatted text
Output
Returns formatted log lines. Each entry shows timestamp and log content.
Examples
Query error logs from last hour
CODEBLOCK8
Query specific trace ID
CODEBLOCK9
Query pod logs with JSON output
CODEBLOCK10
Loki 日志查询
使用内置脚本从 Grafana Loki 查询日志。
两种访问模式
1. 直接 URL 访问(推荐)
当 Loki 可通过网络访问时使用(云服务、远程服务器等):
bash
使用远程 Loki URL
python scripts/query_loki.py \
--loki-url https://loki.example.com:3100 \
--query {namespace=\default\} \
--start now-1h \
--limit 50
2. Kubernetes 端口转发
当 Loki 仅可通过 kubectl 访问时使用:
bash
终端 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 内联端口转发:
bash
kubectl exec -n prometheus -- curl -s http://localhost:3100/loki/api/v1/query_range?query={namespace=\default\}&limit=50
查询脚本
使用 scripts/query_loki.py 查询日志:
bash
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=}
按 Pod
{namespace=, pod=}
按标签
{namespace=, app=}
搜索关键词
{namespace=} |= ERROR
{namespace=} |= traceid=
{namespace=} |= Exception
时间范围
- - 最近 1 小时:now-1h
- 最近 30 分钟:now-30m
- 指定范围:2026-03-27T10:00:00Z 至 2026-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 而非格式化文本
输出
返回格式化的日志行。每条记录显示时间戳和日志内容。
示例
查询过去一小时的错误日志
bash
python scripts/query_loki.py --query {namespace=production} |= ERROR
查询特定追踪 ID
bash
python scripts/query_loki.py --query {namespace=default} |= traceid=abc123
查询 Pod 日志并输出 JSON
bash
python scripts/query_loki.py --query {namespace=default,pod=my-app-0} --json