首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dropwizard:自定义健康检查地址和格式

Dropwizard:自定义健康检查地址和格式
EN

Stack Overflow用户
提问于 2014-11-26 09:10:22
回答 2查看 1.1K关注 0票数 4

是否可以自定义Dropwizrd的健康检查输出,例如:/health用于健康检查,而不是/healthcheck和一些输出(如{“status”: 200} )。

我意识到我可以简单地写一个新的资源来做我所需要的任何事情,我只是想知道是否有一种更标准的方法来做到这一点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-28 15:58:20

根据我在0.7.1源代码中所读到的内容,很遗憾,无法更改用于健康检查的资源URI,我非常怀疑您能否更改healthcheck格式。我还记得人们抱怨不能向管理页面添加REST资源,只有servlet。可能是0.8.0?

这里是我迄今为止在源代码上跟踪的细节。也许我误解或误解了什么东西,所以有人可以修复它。

度量标准实际上已经编写了AdminServlet来添加healtcheck servlet,其方式是检查servlet配置是否定义了URI。

代码语言:javascript
复制
this.healthcheckUri = getParam(config.getInitParameter(HEALTHCHECK_URI_PARAM_KEY), DEFAULT_HEALTHCHECK_URI);

但是,下拉向导没有提供一种在AbstractServerFactory上以任何方式注入此配置的方法。

代码语言:javascript
复制
handler.addServlet(new NonblockingServletHolder(new AdminServlet()), "/*");

NonblockingServletHolder是一个向AdminServlet提供配置,但由AbstractServerFactory用空构造函数创建的配置,无法提供更改配置的方法。

我已经考虑并尝试从ServletHolder方法上的Environment对象访问Application.run,但是直到运行run方法之后才会创建admin。

代码语言:javascript
复制
environment.getAdminContext().getServletHandler().getServlets()[0].setInitParameter("healthcheck-uri", "/health");
票数 4
EN

Stack Overflow用户

发布于 2015-10-06 18:37:39

在您的run()函数中,类似这样的内容将帮助您控制健康检查的URI:

代码语言:javascript
复制
environment.servlets().addServlet(
      "HealthCheckServlet", 
      new HealthCheckServlet(environment.healthChecks())
 ).addMapping("/health");

如果要实际控制返回的内容,则需要编写自己的资源文件。从注册表中获取所有健康检查,运行它们,并根据结果返回所需的聚合值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27145108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档