1

我已在服务器上成功安装 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

假设我想访问 Host 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"},我正在使用正则表达式 但在 Grafana 中的 ${varApp} 中{filename=~"/work/java/tomcat${varApp}/logs/catalina.out"}选择所有内容时失败。

我怎么能做到这一点?

提前谢谢你!

4

1 回答 1

3

选择具有以下 LogQL 的文件名:

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

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

此处的 Grafana 文档中的更多信息。

于 2021-11-09T00:25:17.013 回答