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

如何使用jq基于time字段部分匹配提取Grafana日志指定字段?

解决方法

你可以用 jq 工具结合传入的 date 变量来实现需求,具体命令和逻辑如下:

核心命令示例

假设你的日志文件名为 grafana.log,要过滤log字段包含特定关键词(比如"error"),可以执行:

jq --arg date "$(date '+%Y-%m-%dT%H:%M')" 'select(.time | startswith($date)) | select(.log | contains("error"))' grafana.log

各部分说明

  • 传入时间变量:--arg date "$(date '+%Y-%m-%dT%H:%M')" 把当前系统时间的「年-月-日T时:分」格式字符串传给jq,作为变量$date使用。
  • 匹配当前分钟日志:select(.time | startswith($date)) 筛选出time字段以$date开头的记录——因为你的日志time字段是带秒和毫秒的完整时间,用startswith就能精准匹配到当前分钟内的所有日志。
  • 过滤log字段:select(.log | contains("error")) 进一步筛选log字段包含指定内容的记录。如果需要精确匹配某段文本,把contains("error")改成== "目标文本"即可;要是需要正则匹配,换成test("正则表达式")。

其他场景适配

如果日志是通过管道输入(比如从容器日志读取),直接去掉文件名即可:

docker logs grafana-container | jq --arg date "$(date '+%Y-%m-%dT%H:%M')" 'select(.time | startswith($date)) | select(.log | contains("error"))'

内容的提问来源于stack exchange,提问作者Aleksey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 04:24:57