跳到主要内容

日志查询使用指南

运维平台基于 Loki 提供日志查询能力,左侧"日志"组下有两个面板,按数据来源拆分:

面板数据来源主要 stream label适用场景
容器控制台Docker 容器 stdout/stderr(由 alloy 采集)container / service_name / log_source=docker排查中间件、基础设施层日志(MySQL、Redis、Kafka 等容器)
服务日志HAP 内部微服务的结构化 JSON 日志(serilog 直推 Loki)service_name / hostname / action / level / extras / stack排查业务调用、异常 stack trace、特定参数(手机号、用户 ID 等)

公共过滤器

两个面板顶部都有:

  • 搜索关键字(textbox):全文匹配(不区分大小写)
  • 多选下拉过滤器:容器控制台是「容器」,服务日志是「服务」+「级别」

时间窗口默认最近 30 分钟,可在右上角调整。

容器控制台

典型使用

查看某个容器的日志

  1. 「容器」下拉选择 container 名(如 milvus-etcdscript-app-1
  2. 列表显示该容器近期的 stdout 输出

按关键字筛选

  • 「搜索关键字」输入要搜的内容(支持中文)

服务日志

自动展开的 stream label

服务日志面板的每条日志会自动把结构化字段展开显示在原始 line 下方:

2026-05-13 17:43:22.911  {"Message":"未配置短信服务","level":"error"}
⏵ action: /MD.SmsService.Sms/SendMessage
⏵ level: error
⏵ elapsed_ms: 0
⏵ extras: [[Mobile, +8618596683881], [Message, 您的验证码是144249...]]
⏵ stack: 未配置短信服务
at MD.Sms.GrpcService.Implements.SmsImplement.PreValidAsync...
Stream Label含义
service_nameHAP 微服务名(如 smssenderserviceworkflowworksheetservice
action业务调用方法(gRPC 接口路径或 Java/Net 类方法)
detected_level日志级别(info / warn / error)
elapsedmilliseconds调用耗时(毫秒)
extras业务参数(请求/响应详情,常含手机号、ID 等业务数据)
stack异常调用栈(.NET / Java 完整 stack trace)
hostname服务运行的容器 hostname

典型查询场景

1. 按服务过滤

「服务」下拉选 smssenderservice → 只看短信服务相关日志。

2. 搜手机号 / 用户 ID / traceID

「搜索关键字」输入 18596683881 → 单 query 同时匹配日志正文和所有 stream label(手机号通常在 extras 而非正文)。

3. 只看错误

「级别」选 error,或在「搜索关键字」输入 error

4. 跨服务追踪一个 trace

搜索 traceID 关键字(如 traceID=4a45ebccbdd91418)即可看到所有相关服务的调用链日志。

Loki 数据保留时长

默认保留 30 天(ENV_LOKI_RETENTION=720h),可在 ops.yaml / ConfigMap 中调整。

进阶 LogQL

需要更复杂的查询(聚合、统计、复杂正则)时,进入 Grafana 的 Explore 视图(左下角 Grafana 图标 → Explore)直接写 LogQL,参考:

  • {service_name="smssenderservice", detected_level="error"} — 短信服务所有 error
  • {hostname=~".+"} |~ "(?i)18596683881" — 全 HAP 微服务搜手机号
  • sum(rate({hostname=~".+"}[5m])) by (service_name) — 各服务最近 5 分钟日志速率
  • {container=~"milvus-.*"} |= "error" | json — milvus 容器的 error 日志并 JSON 解析

更多语法参考 LogQL 官方文档