【问题标题】:Monitoring tool for distributed micro-services分布式微服务监控工具
【发布时间】:2015-09-05 13:33:46
【问题描述】:

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

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

【问题讨论】:

  • 您可能希望将标题从微服务更改为进程。微服务进入了如何设计软件单体或 SOA 的单独领域。

标签: python mongodb postgresql ubuntu monitoring


【解决方案1】:

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

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

虽然 Sensu 更多的是关于通过代理发送数据,但 Riemann 更多的是关于接收端的流处理。因此,您可以拥有 Sensu 代理和 Riemann 接收器。借助 Riemann,您可以构建真正高级的度量警报规则。

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

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

      • cpu_times
      • 虚拟内存
      • swap_memory
      • 过程监控
      • 网络监控,

      还有glances 可以在客户端/服务器网络模式下运行。在网络浏览器中在我的机器上运行的一瞥快照。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-11
        • 2017-08-31
        • 2017-07-23
        • 1970-01-01
        • 1970-01-01
        • 2019-03-25
        • 2019-01-02
        • 1970-01-01
        相关资源
        最近更新 更多