如何监控(微)服务?

时间:2016-07-27 14:00:08

标签: triggers alert soa monitor microservices

我有一套服务。每项服务都包含一些组件。

其中一些是无状态的,一些是有状态的,一些是同步的,一些是异步的。

我使用不同的方法进行监控和警报。

基于日志的警报和指标收集。基于New Relic。自己骑自行车。

基本上,我正在寻找一种方法,如何在一个地方概括和汇总所有服务的重要指标。我想要的一件事是,我们监控的产品多于单独的服务。

作为最终结果,我将其视为具有少量小部件的单个仪表板,但是如果服务可用于最终客户,我可以肯定地看到那些小部件。

可能有人可以向我推荐一些方法/方法。或者参考一些最佳实践。

2 个答案:

答案 0 :(得分:0)

我喜欢你想要达到的目标! 除非经过全面监控,否则服务不能投入生产。

我相信您所描述的内容涉及健康检查指标的主题。

  

......如果服务可以用于最终客户,我可以肯定地说。

然而,这将需要两者兼得;-)为了确保您当前正在履行您的SLA,您必须确保您的服务全部a)运行并且b)按要求执行。有了这两个问题,我建议查看StatsD工具链。它最初由Etsy开发,已成为收集指标的事实标准。

为了确保您的所有服务都在运行,我们正在转发Kubernetes。它需要我们的描述,应该运行什么,可以从外部等处访问,并在我们的基础设施上托管。它还确保,如果事情死亡 - 它们将重新启动。它也有助于自动缩放等功能!令人敬畏的工具和对Google的称赞! 它确保使用健康检查的方式。有多种方法可以确保Kubernetes引导的服务节点活跃起来(即HTTP调用和CLI脚本,但如果你需要其它任何东西,这应该是一个模块化的东西!)如果Kubernetes检测到不健康的节点,它会立即逐步淘汰它们并改为启动另一个节点。

现在,确保您的所有服务都按预期执行,您需要收集一些指标。对于我们的所有服务(以及所有单个端点),我们通过StatsD收集一些指标,如:

  • 请求/秒
  • 返回的错误数量(404等)
  • 响应时间(平均值,中位数,百分位数取决于服务SLA)
  • 有效载荷大小(平均值)
  • 有时每个端点的并发请求数,当前正在运行的实例数
  • 一般指标,如主机当前的CPU和内存使用情况以及正常运行时间。

我们收集了更多指标,但这是关于底线的。由于StatsD已成为一种“协议规范”而非具体产品,因此有无数的收集器,前端和后端可供选择。它们可以帮助您可视化您的系统状态,其中许多都具有某些功能或某些指标组合的警报超出其阈值。

请告诉我,如果这有用的话!

答案 1 :(得分:0)

您需要监控至少3种类型的东西:部署服务的主机,组件本身和SLA,其中一些依赖于您使用的软件堆栈以及建筑。

话虽如此,您可以使用Nagios来监控部署服务的硬件,Splunk以了解服务指标/ SLA以及可能发生的任何错误。您还可以使用SNMP软件包,以防出现问题并且您拥有更复杂的支持结构,这将是您的触发器。如果不知道您的基础设施/服务是如何设置的,那么深入了解详细信息就很复杂。