我必须在基于微服务体系结构的项目中使用Javalite,因此想检查是否可以通过某些现有插件获得跟踪支持(类似于/ bootuator / health和/ actuator / prometheus)。自定义更改以支持相同的内容?
答案 0 :(得分:0)
ActiveWeb没有对此的直接支持,但是我们通常会构建类似的服务。 “健康”对于不同的应用程序意味着许多不同的事物。我们已经使用JavaLite构建了许多企业项目,到目前为止,已经制定出以下方法。通常,我们有一个由多个应用组成的项目:
每个应用程序都是集群的,因此我们将有许多实例,并且我们需要了解每个实例的运行状况。每个实例的运行状况取决于:
所以...我们为每种类型的应用程序实现了一个所谓的StatusController
。这种状态控制器在调用其index()
方法时将依次调用所有服务,这是该应用程序生计所必需的,并将生成带有结果的JSON文档。如果一切都很好,那么JSON文档就是简单的{"status":"OK", "service1": "OK", "service2": "OK"}
或类似的东西。如果其中一项服务不可访问,它将生成一个异常并以包含确切异常的JSON文件作为响应:{"status":"ERROR", "service1": "OK", "service2": "Exception: exception stack trace"}
。
管理Web应用程序还包含一个“运行状况”页面,该页面将聚集对群集中所有应用程序的调用,并显示一个完整的报告,该报告也使用颜色编码(绿色-确定,红色-错误)。因此,通过浏览此页面,我们可以确切地知道如果出现问题,集群中有什么问题。
但是,“管理员健康”页面还具有第二个目的。这是Pingdom调用的Web服务。如果群集运行状况良好,则此页面返回HTTP代码200,如果存在至少一个问题,它将返回500。我们使用Pingdom中“运行状况页面”的URL,该页面每分钟跟踪一次。每当集群中的任何服务出现问题时,StatusController
都会向Pingdom返回500,并且它将向正在通话的任何人发送通知。收到通知后,我们会在“运行状况”页面上查看有关集群问题的信息。
几年前,我们制定了这种方法,从那时起,它就一直忠实地为我们服务。