我已经成功地在服务器上安装了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时失败。
我怎样才能做到这一点?
谢谢你的预付款!
使用以下LogQL:选择文件名
{filename=~"/work/java/tomcat(${varApp:pipe})/logs/catalina.out"}
":管道;修饰符将改变"$varApp";例如10|11|20。
Grafana文档中的更多信息请点击此处。