Loki json 日志按检测到的 grafana 字段进行过滤

Tim*_*mam 17 grafana grafana-loki logql

我正在向 loki 发送 json 日志并在 grafana 中进行可视化。最初,我的日志如下所示。

  {   
     "log": "{\"additionalDetails\":{\"body\":{},\"ip\":\"::ffff:1.1.1.1\",\"params\":{},\"query\":{},\"responseTime\":0,\"userAgent\":\"ELB-HealthChecker/2.0\"},\"context\":\"http\",\"endpoint\":\"/healthz\",\"level\":\"info\",\"message\":\"[::ffff:1.1.1.1] HTTP/1.1 GET 200 /healthz 0ms\",\"requestId\":\"9fde4910-86cd-11ec-a1c5-cd8277a61e4a\",\"statusCode\":200}\n",   
     "stream": "stdout",   
     "time": "2022-02-05T21:49:58.178290044Z" 
  }
Run Code Online (Sandbox Code Playgroud)

为了使其更可用,我使用以下查询。

{app="awesome-loki-logs-with-grafana"} | json | line_format "{{.log}}" 
Run Code Online (Sandbox Code Playgroud)

结果真的很好。它会自动检测以下文件。

在此输入图像描述

如何通过 grafana 已检测到的 statusCode 进行过滤?

Mar*_*ira 16

您可以创建一个值为 200、401、403、404 等的“状态”自定义变量,并在 LogQL 中使用该变量,如下例所示:

{app="awesome-loki-logs-with-grafana"} | json | statusCode=$status
Run Code Online (Sandbox Code Playgroud)