Javalite for Microservice项目,是否提供应用程序跟踪/监控支持?



我必须在基于微服务架构的项目中使用Javalite,所以想检查跟踪支持(类似于Spring Boot中的/actuator/health&/actuator/prometheus)是否可以通过一些现有的插件获得,或者关于自定义更改的任何建议来支持相同的内容?

ActiveWeb 对此没有直接支持,但我们经常构建类似的服务。对于不同的应用程序,"健康"意味着许多不同的东西。我们已经使用JavaLite构建了许多企业项目,到目前为止,我们已经制定了以下方法。通常,我们有一个由多个应用程序组成的项目:

  • 面向客户的 Web 应用 (Web)
  • 用于控制帐户、报告等的后台应用程序。 (管理员)
  • Web Services API (API)
  • 后端处理应用(辅助角色)

每个应用都是群集的,因此我们将有许多实例,并且我们需要知道每个实例的运行状况。每个实例的运行状况由以下因素决定:

  1. 当前可用堆空间
  2. 访问数据库(通常为多个)
  3. 访问缓存
  4. 访问本地服务(Web 到 api、worker 等)
  5. 访问 NFS
  6. 其他任何对此应用程序有意义的内容

因此,我们为每种类型的应用程序实现了所谓的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,并将向待命人员发送通知。收到通知后,我们会查看"运行状况"页,了解群集出了什么问题。

我们几年前就制定了这种方法,从那时起它就一直忠实地为我们服务。

最新更新