我认为在实施解决方案之前,您需要非常仔细地考虑您的要求。即使您选择的解决方案是开源且“免费”的,您也将投入大量时间使其工作,并且您将继续投入时间使其随着您的应用程序和环境的变化而正常工作。
现在您已经提出了一个乍一看似乎很简单的要求,即了解某些关键服务是否已启动并正在运行。但是跑步是什么意思?运行是否意味着它没有停止或崩溃?或者运行是否意味着正常数量的数据流入和流出服务?这是您无法通过商品或免费工具确定的。
更进一步。运行是否意味着服务的性能与应有的一样好?您想使用什么性能定义?服务正在使用正常数量的资源(易于衡量),或者流入服务的事务正在以可接受的响应时间进行处理(再次超出商品或免费工具的范围)。
最重要的是,就像所有东西一样,你得到你所支付的。如果您想真正知道它正在工作并且工作包括事务响应时间,那么您将需要一个商业级 APM 工具。这些分为两类:
1)从应用程序容器(New Relic、AppDynamics 等)内部监视您的应用程序的那些
2) 从操作系统内部监视您的应用程序的那些(AppEnsure、BlueStripe、Correlsense 等)
如果您的应用程序在本地运行,并且您可以将设备连接到您的交换机,那么您还有第三种选择,即使用来自 ExtraHop 等供应商的网络深度数据包检查。