实施类似于度量标准聚合器的云监视以实时监视应用程序

时间:2018-08-05 08:33:30

标签: monitoring daemon elastic-stack metrics amazon-cloudwatch

我想设计类似Amazon Cloud Watch的工具来实时监视我拥有的应用程序,并且我在自己的计算机集群(而不是AWS集群)中运行。

基本要求:

  • 能够从应用程序发布时间和计数指标,并在Kibana之类的仪表板中查看它们。
  • 无缝支持从用Python,Java和Node.js编写的应用程序发布指标。

我认为可能有效的方法,但我需要以下建议:

  • 我正在考虑编写一个将在群集中所有主机上运行的守护进程。
  • 应用程序将以该守护程序可以理解的格式将度量标准发布到文件系统。不确定如何为使用不同语言编写的应用程序创建此合同?
  • 守护程序将每5秒提取一次此信息,并将其发布到ELK。不知道Daemon如何将一个应用程序与另一个应用程序区分开。我想我将不得不创建一些度量标准注册服务来注册应用程序。我不确定所有方面的度量标准注册表将如何处理。

对此表示感谢。

1 个答案:

答案 0 :(得分:2)

满足您的基本要求。

  • 创建一个简单的java(或您选择的语言)应用程序,该应用程序会将数据发送到弹性搜索,例如 ElasticSearchClientSender 。选中Jest,我们将其用于将数据发送到我们的ES。使用正确的别名设置您的kibana。在您的情况下,可能没有必要将其创建为模块,因为您只需创建一个代码段并将其插入到您想要将其数据发布到ES的应用程序即可。

如果您仍然需要其他monitoring purposes的cloudwatch指标,则可以尝试以下选项

  • AWS Java SDK覆盖了您。 编辑,他们还有一个用于python,nodejs和其他(我们主要使用python)
  • 或者在我们的案例中,我们将每个模块设置为具有自己的Cloudwatch日志组,因此我们的弹性搜索发送方模块具有自己的日志组。 Cloudwatch logs的概述。为模块设置Cloudwatch日志组后,决定要使用哪个关键字来指示要在Metric中显示的内容,然后根据需要记录数据,请参考以下these samples

另一种方法

根据您列出的其他方法,也许值得尝试寻找AWS Lambda,而不是创建一个发送带有代码段的数据的模块,在lambda中,您仍然会有大量的代码一个独立的应用程序,您将根据自己的设置cronjob style或使用Cloudwatch Events的一些aws服务来设置如何触发它