在 grafana loki 查询 (LogQL) 上使用变量

Use variables on grafana loki queries (LogQL)

我已经在服务器上成功安装了 Loki,并在数据中心的多台主机上成功安装了 Promtail。 每台主机运行不同数量的tomcat,如tomcat10、tomcat11...tomcat20。

所以在 promtail 上,我的工作得到一个带有主机名的标签,__path__ 类似于 work/java/tomcat*/logs*

现在我在 Postgre 上添加与这些 tomcat 相关的不同应用程序名称,以及主机及其名称。

但我正在努力使用 Grafana 上的 LogQL 查询来访问这些变量。例如,我在 Grafana 中定义了以下名为 varHost

的变量

select server __value, server __text from loki_promtail.servers order by id ASC

假设我想访问主机 Saturn 上的每个日志。使用 {job="saturn"} 很容易,但我想使用 ${varHost} 而不是 Saturn(主机名),这样同一个面板可以显示多个主机信息。

以同样的方式,假设我正在尝试访问 /work/java/tomcat10/logs/catalina.out。我希望能够在 LogQL 查询中连接 varApp,所以,而不是 {filename="/work/java/tomcat10/logs/catalina.out"} 我想要像 {filename="/work/java/tomcat${varApp}/logs/catalina.out"} 这样的东西,我正在用正则表达式做 {filename=~"/work/java/tomcat${varApp}/logs/catalina.out"} 但在 Grafana 的 ${varApp} 中选择 all 时失败。

我怎样才能做到这一点?

谢谢你的预付款!

Select 具有以下 LogQL 的文件名:

{filename=~"/work/java/tomcat(${varApp:pipe})/logs/catalina.out"}

例如,“:pipe”修饰符会将“$varApp”更改为 10|11|20。

Grafana 文档中的更多信息here