分布式微服务监控工具

Monitoring tool for distributed micro-services

所以我有一套分布式微服务,例如。 ElasticsearchMongoDBPostgresFlask 应用程序,一个 Apache Kafka 集群等。我想构建一个监控工具,我可以在其中拥有一个仪表板,用于显示它们周围的各种统计信息。例如,run-timeCPU %number of processes 等。这些和明显的当前状态会告诉我服务是否 运行。

以前从未制作过这样的工具,所以需要一些帮助。是否已经为此做了一些事情?如果没有,制作这样的东西有什么好的做法?

看看森苏。 Sensu 是一个非常先进的监控工具。把它想象成分布式的nagios。所以你在每台机器上安装一个 Sensu 代理,它有一个很大的号码。可用于您上面提到的每个进程的插件。您也可以用您选择的语言编写自己的插件,只要它们是有效的可执行文件即可。 Bash、perl、Python、ruby 什么都行。 代理将数据发布到 rabbitmQ,其中数据由 Sensu 服务器读取。 对于仪表板,您只需安装 uchiwa,这可能是目前最好的 Sensu 仪表板。 这允许你做一些不仅仅是监控的事情,因为 Sensu 服务器通过 rabbitmQ 从所有 Sensu 代理请求更新。所以你可以在这些机器上像使用你自己的事件触发器一样使用它。就像您也可以远程启动和关闭进程一样。

另一个值得注意的工具是黎曼,http://riemann.io/

虽然 Sensu 更多的是关于通过代理发送数据,但 Riemann 都是关于接收端的流处理。所以你可以有 Sensu agents 和 Riemann receiver。使用 Riemann,您可以构建真正高级的度量警报规则。

然后是 Icinga。这也是高级的 nagios,但不如 Sensu 全面。

最后,如果您不想经历所有这些设置和维护的过程,您可以只使用像 datadog 这样的托管服务。但是您需要为监控的每一台主机付费。

对于 python,您可以使用 psutil,它有很多用于监控硬件等的工具。

  • cpu_times
  • virtual_memory
  • swap_memory
  • 进程监控
  • 网络监控,
  • 等等

还有glances可以在client/server网页模式下运行。在网络浏览器中在我的机器上浏览 运行ning 的快照。

已经从 psutil 构建的是 GRR Rapid Response,它是一个专注于远程实时取证的事件响应框架,包括对客户端 CPU、内存、IO 使用和自我施加的限制的远程详细监控。

您可以看看 www.vamp.io,这是一个基于 JVM 的开源框架,用于管理基于容器和(微)服务的架构。

它还包括监控和具有仪表板功能的 GUI。 Vamp 使用 ElasticSearch 来存储流经系统的指标,因此您还可以根据需要轻松创建自己的自定义 Kibana 仪表板。您可以使用一个强大的指标 API:http://vamp.io/documentation/using-vamp/metrics-and-events/

我们现在正进入测试阶段,但 Vamp 已经在一些 SaaS 提供商的生产中大规模使用。

免责声明:我是 Vamp 背后的公司 Magnetic.io 的创始人之一。