如何在 Tomcat 上添加健康检查?

How to add a health check on Tomcat?

我想在 Tomcat 上为 Linux 配置简单的健康检查,例如:http://localhost:8080/health

我一直在查看 Tomcat 文档,我发现了这个内置的服务器状态站点 /manager/status/all,它确实有很多信息,但需要我在那里登录,所以它不是如果我执行 "curl" 很有用,因为它不会检索任何 HTTP 响应。

我希望使用这样的东西:http://localhost:8080/health,其中 returns 一个 HTTP 响应,即 200,这样我就可以将这个 url 添加到我的监控工具中,以便显示当前状态。

一个简单的方法,你可以在webapps中创建一个像health这样的目录,并在webapps/health/中创建一个名为index.html的索引文件,内容如下。

<HTML>
  <HEAD>
    <TITLE>Tomcat status</TITLE>
  </HEAD>
  <BODY>
    <H1>Tomcat Running</H1>
   </BODY>
</HTML>

使用以下 URL

进行测试

http://localhost:8080/health

从 Tomcat 9 开始,您可以在配置中使用一个 Valve 来达到这个目的:HealthCheckValve。参见 https://tomcat.apache.org/tomcat-9.0-doc/config/valve.html#Health_Check_Valve

在 server.xml 中,类似于...

...
<Host name="localhost" ...>
   ...
   <Valve className="org.apache.catalina.valves.HealthCheckValve" />
   ...
</Host>
...

... 将创建 OP 正在寻找的 /health 端点。