我必须在基于微服务架构的项目中使用 Javalite,因此想检查是否可以通过某些现有插件或有关自定义更改的任何建议来检查跟踪支持(类似于 Spring Boot 中的 /actuator/health 和 /actuator/prometheus )支持一样吗?
1 回答
ActiveWeb 对此没有直接支持,但我们经常构建类似的服务。“健康”对于不同的应用程序意味着许多不同的东西。我们已经使用 JavaLite 构建了许多企业项目,并且到目前为止制定了以下方法。通常我们有一个由多个应用程序组成的项目:
- 面向客户的 Web 应用程序 (Web)
- 用于控制帐户、报告等的后台应用程序(管理员)
- 网络服务 API (API)
- 后端处理应用程序(工人)
每个应用程序都是集群的,所以我们会有很多实例,我们需要知道每个实例的健康状况。每个实例的运行状况由以下因素决定:
- 当前可用堆空间
- 访问数据库(通常是多个)
- 访问缓存
- 访问本地服务(web 到 api、到 worker 等)
- 访问 NFS
- 任何其他对这个应用程序有意义的东西
StatusController
所以......我们为每种类型的应用程序实现了一个所谓的。这样的状态控制器会在调用它的方法时一个接一个地调用这个应用程序生存所必需的所有服务,index()
并生成一个带有结果的 JSON 文档。如果一切正常,则 JSON 文档很简单{"status":"OK", "service1": "OK", "service2": "OK"}
或类似。如果其中一项服务不可访问,它会生成异常并使用包含确切异常的 JSON 文件进行响应:{"status":"ERROR", "service1": "OK", "service2": "Exception: exception stack trace"}
.
Admin Web 应用程序还包含一个运行状况页面,它将聚合对集群中所有应用程序的调用,并将显示一个完整的报告,该报告也是彩色编码的(绿色 - 正常,红色 - 错误)。因此,通过浏览此页面,我们可以确切地知道如果出现问题,集群中出现了什么问题。
但是,Admin Health 页面还有第二个目的。它是由 Pingdom 调用的 Web 服务。如果集群是健康的,这个页面返回 HTTP 代码 200,如果至少有一个问题,它会返回 500。我们使用 Pingdom 中的健康页面的 URL,它每分钟跟踪一次这个页面。每当集群中的任何服务出现问题时,StatusController
都会向 Pingdom 返回 500,它会向待命的任何人发送通知。当我们收到通知时,我们会查看 Health Page 以获取集群出现问题的信息。
我们多年前就制定了这种方法,从那时起它就一直忠实地为我们服务。