Skip to content

服务日志查询 ​

功能概述 ​

服务日志查询模块通过内嵌 WebView 打开 Grafana 日志查看器(Explore 页面),用于查看和分析系统各服务的运行日志。系统会自动检测目标地址是否为 Grafana 实例,并完成免密登录,用户无需手动输入账号密码。

日志系统架构 ​

系统采用 Promtail + Loki + Grafana 三件套实现分布式日志管理:

各服务器上的应用日志文件
        │
        ▼
   Promtail(日志收集)
   每台产生日志的服务器都需安装
        │
        ▼  推送到 Loki
     Loki(日志处理引擎)
     中心化部署,只需安装一个
     负责日志存储、索引、查询
        │
        ▼  数据源对接
    Grafana(日志查看器)
    中心化部署,只需安装一个
    提供 Explore 页面进行日志查询
        │
        ▼  WebView 内嵌显示
   本系统"服务日志查询"页面
   自动完成 Grafana 登录

各组件职责:

组件部署方式作用
Promtail每台日志服务器都安装监听日志文件变化,采集并推送到 Loki
Loki中心化部署一个接收、存储、索引日志数据,提供查询 API
Grafana中心化部署一个连接 Loki 数据源,提供可视化日志查询界面

操作说明 ​

打开日志查看器 ​

  1. 登录系统后,在菜单中选择 系统管理 → 服务日志查询
  2. 系统自动在 WebView 中打开 Grafana Explore 页面(地址如 http://10.11.5.49:3000/explore)
  3. 系统自动检测目标地址是否为 Grafana 实例(通过 /api/health 接口验证)
  4. 如果尚未登录,系统会自动完成 Grafana 登录并将 Session Cookie 注入 WebView,用户无需手动操作

查询日志 ​

在 Grafana Explore 页面中:

  1. 选择数据源:在左上角选择 Loki 数据源
  2. 输入查询条件:在查询栏输入 LogQL 查询语句,例如:
    • 查询某应用的所有日志:{app="RMES-APP-53"}
    • 按日志级别筛选:{app="RMES-APP-53"} |= "ERROR"
    • 按时间范围筛选:在右上角设置时间范围
  3. 点击 Run query 或按 Shift + Enter 执行查询
  4. 查看查询结果,支持按时间线浏览和搜索高亮

常用查询示例 ​

查询需求LogQL 语句
查看某应用全部日志{app="RMES-APP-53"}
只看 ERROR 级别日志{app="RMES-APP-53"} |~ "(?i)error"
只看 WARN 级别日志{app="RMES-APP-53"} |~ "(?i)warn"
搜索包含特定关键字的日志`
排除包含某文本的日志{app="RMES-APP-53"} != "DEBUG"
按日志文件名筛选{app="RMES-APP-53", filename="xxx.log"}

提示

日志的 app 标签对应 Promtail 配置中的 labels.app 值,filename 标签由 Promtail 自动从日志文件路径中提取。

Grafana 自动登录机制 ​

系统通过 HmxGrafanaUIWebViewPlugin 插件实现免密登录:

  1. 检测:WebView 加载 URL 时,插件调用 /api/health 接口判断是否为 Grafana 实例
  2. 登录:如果 WebView 中没有有效的 grafana_session Cookie,插件通过 HTTP POST /login 接口自动登录
  3. 注入:将获取到的 Session Cookie 注入 WebView,有效期 30 天
  4. 缓存:Grafana 实例的检测结果会被缓存,避免重复请求

日志文件格式 ​

应用日志由 NLog 生成,格式为:

2026-09-16 10:30:15.123 INFO  日志消息内容
2026-09-16 10:30:15.456 ERROR 发生错误的详细信息

Promtail 配置了多行日志合并规则:以时间戳格式 YYYY-MM-DD HH:MM:SS.mmm 开头的行被视为新日志的起始行,超出 3 秒未匹配到新起始行则强制分割。

关键配置参考 ​

Promtail 配置要点 ​

配置项值说明
http_listen_port3188Promtail 服务端口
clients.urlhttp://<Loki地址>:3100/loki/api/v1/pushLoki 推送地址
labels.app应用标识(如 RMES-APP-53)应用名称标签
path日志文件路径(支持通配符)如 D:\mes-apps\logs\*\*.log

Loki 配置要点 ​

配置项值说明
http_listen_port3100Loki 服务端口
retention_period2160h(90天)日志保留时长
reject_old_samples_max_age168h(7天)超过7天的日志拒绝写入

Grafana 配置要点 ​

配置项说明
默认端口3000
默认账号admin
数据源类型Loki
数据源地址http://<Loki地址>:3100

HiMind 工业互联网平台 技术文档