如何在 Grafana-Loki 中过滤日志?

Sup*_*per 7 logging prometheus grafana-loki promtail

我使用的是最新版本:

  • 普罗米修斯
  • prometheus-cpp 库
  • 格拉法纳
  • 洛基
  • 普罗姆泰尔

在 Windows 10 中。

所以我只是启动这些应用程序的bin文件。我在 Grafana 面板中获取了logfile.log 。

带日志的 Grafana 面板

日志文件中有标记为 [INFO] 的行。
还可能有一个[ERROR]标记。我希望能够过滤面板中的行。例如,如何在面板中只显示标有[ERROR]的行?

rbe*_*nto 10

可以使用线路滤波器来实现这一目标:

|= : Log line contains string.
!= : Log line does not contain string.
|~ : Log line matches regular expression.
!~ : Log line does not match regular expression.
Run Code Online (Sandbox Code Playgroud)

例如:

来自目标集群和应用程序的给定日志行包含字符串ERROR

{cluster="my-dev-cluster", app="my-app"} |= "ERROR"
Run Code Online (Sandbox Code Playgroud)

目标集群和应用程序中的给定日志行包含字符串ERROR,但不包含字符串“TIMEOUT”:

{cluster="my-dev-cluster", app="my-app"} |= "ERROR" != "TIMEOUT"
Run Code Online (Sandbox Code Playgroud)

在此备忘单中查看更多内容。


Pau*_*ler 2

Loki 按标签对日志进行索引。当您查询 Loki 时,您必须首先以 format 指定流过滤器{<label><operator><value>}。我猜您已经意识到这一点,因为您已经在那里显示了日志,可能带有类似{app="vocoder"}. 然后,您可以通过纯文本或正则表达式{app="vocoder"} |= "[ERROR]"(请参阅日志查询文档)过滤日志流。如果您将 Promtail 抓取工具配置为从日志消息中提取其他标签(请参阅标签文档抓取文档),那么您还可以基于此编写流过滤器表达式,或基于此标签进行过滤作为过滤器管道的一部分:{app="vocoder"} | level = "error"