在节点 js 中发出应用程序级别指标

Emitting application level metrics in node js

我想从我的节点应用程序发出指标来监控到达某个代码分支的频率。例如,我想知道有多少次服务调用没有 return 预期的响应。此外,我希望能够为每个服务调用发出所花费的时间等。

我预计我将在代码中使用一个客户端,该客户端将向服务器发送指标,然后我将能够在服务器上的仪表板中查看指标。我对可以在我自己的基础架构上托管的开源解决方案更感兴趣。

请注意,我对此处的系统指标不感兴趣,例如 CPU、内存使用情况等

实施普遍的日志记录,然后使用 Elasticsearch + Kibana 之类的东西在仪表板中显示它们。

还有其他指标仪表板系统,如 Grafana、Graphite、Tableu 等。其中很多发送指标,这些指标是与标签相关联的数字,例如计数函数调用、CPU 负载等。主要原因是我与 Kibana 解决方案类似的是,它不是基于指标,而是从您的日志文件中提取指标。

您真正需要对代码做的唯一一件事就是确保您的日志带有时间戳。

Google for Kibana 或“ELK stack”(ELK 代表 Elasticsearch + Logstash + Kibana)了解如何设置。我第一次设置它只花了几个小时就得到了结果。

Node 有几个记录器,可以配置为将日志事件发送到 ELK。此外,ELK 的 Logstash(或现代“Beats”)部分可以提取任何日志文件并使用正则表达式解析它们以将数据转发到 Elasticsearch,因此您无需修改​​软件。

ELK 解决方案可以简单地配置,或者您可以花费数周的时间来调整数据解析和图表以获得更多见解 - 它非常灵活,如何使用它取决于您。

指标与日志(意见):

你要的当然是指标。但仅靠指标并不能说明什么。您最终想要的是能够分析您的系统以进行调试和优化。这就是日志记录的优势所在。

借助从 Kibana 等日志中提取指标的解决方案,您可以深入了解指标背后的另一层。您可以查询它以查找导致指标的事件。这在 运行 系统上并不容易,因为您通常必须模拟系统的输入以获得类似的指标来弄清楚正在发生的事情。但是使用 Kibana,您可以分析已经发生的历史事件!

这是我几年前用来监控 Web 服务(包括它收到的所有电子邮件)的 Kibana 设置的旧屏幕截图:

请注意上面的屏幕截图 - 除了我从系统中提取的图表和指标外,我还在仪表板底部显示经过分析的日志,这样我就可以近乎实时地了解正在发生的事情。这是我们用来监控订阅、投诉、点击率等内容的电子邮件接收仪表板。