You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Grafana+Loki中基于logFmt日志提取繁忙应用实例指标

解决方案

1. 每秒繁忙实例数(时间序列可视化)

使用以下LogQL查询,可统计每秒处于繁忙状态的应用实例总数:

accumulate(sum_over_time(
  ({job="你的应用任务名"} |= `logfmt` 
   |= `msg="Started processing request"` or |= `msg="Completed processing request"`
   | label_format delta=if(msg="Started processing request", "1", "-1")
   | unwrap delta | to_value
  )[1s:1s]
))

说明:

  • 替换{job="你的应用任务名"}为你实际的Loki日志标签筛选条件
  • 先过滤出所有请求开始/结束的日志,给开始事件标记delta=1、结束事件标记delta=-1
  • 按1秒窗口聚合求和,再通过accumulate函数累计计算当前的繁忙实例总数

2. 每个实例的繁忙时间区间(状态时间线可视化)

使用以下LogQL查询,配合Grafana的State Timeline面板,可直观展示每个实例的繁忙/空闲时间段:

{job="你的应用任务名"} |= `logfmt` 
|= `msg="Started processing request"` or |= `msg="Completed processing request"`
| logfmt
| label_format status=if(msg="Started processing request", "busy", "idle")

面板配置提示:

  • 选择State Timeline面板类型
  • 在Group by选项中选择instance.id,将数据按实例分组
  • 可自定义busy/idle状态的显示颜色,更清晰区分实例状态

如果需要精准查看每个请求的处理时间区间,可使用join配对每个实例的开始/结束日志:

join on(instance.id) (
  {job="你的应用任务名"} |= `logfmt` |= `msg="Started processing request"` | logfmt | label_format start_time=`{{.time}}`
  ,
  {job="你的应用任务名"} |= `logfmt` |= `msg="Completed processing request"` | logfmt | label_format end_time=`{{.time}}`
)

该查询会输出每个实例的请求开始/结束时间,适合在Table面板中查看或导出。


内容的提问来源于stack exchange,提问作者V.Lorz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 05:52:42