Node.js 在节点js中发出应用程序级度量

Node.js 在节点js中发出应用程序级度量,node.js,metrics,Node.js,Metrics,我希望从我的节点应用程序发出度量,以监视到达某个代码分支的频率。例如,我想知道一个服务调用有多少次没有返回预期的响应。另外,我希望能够为每个服务调用发出所花的时间等 我希望我将在代码中使用一个客户端,该客户端将向服务器发送度量,然后我将能够在服务器上的仪表板中查看度量。我对可以在自己的基础设施上托管的开源解决方案更感兴趣 请注意,我对这里的系统指标(如CPU、内存使用率等)不感兴趣。实现普及日志记录,然后使用类似于在仪表板中显示它们的内容 还有其他度量仪表板系统,如Grafana、Graphit

我希望从我的节点应用程序发出度量,以监视到达某个代码分支的频率。例如,我想知道一个服务调用有多少次没有返回预期的响应。另外,我希望能够为每个服务调用发出所花的时间等

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


请注意,我对这里的系统指标(如CPU、内存使用率等)不感兴趣。

实现普及日志记录,然后使用类似于在仪表板中显示它们的内容

还有其他度量仪表板系统,如Grafana、Graphite、Tableu等。其中许多系统发送的度量是与标记相关的数字,如计数函数调用、CPU负载等。我喜欢Kibana解决方案的主要原因是它不是基于度量,而是从日志文件中提取度量

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

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

节点有几个记录器,可以配置为向ELK发送日志事件。此外,ELK的Logstash(或现代的“Beats”)部分可以接收任何日志文件,并使用regexp解析它们以将数据转发给Elasticsearch,因此您无需修改软件

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

指标与日志(意见): 你想要的当然是指标。但指标本身并不能说明什么。你最终追求的是能够分析你的系统进行调试和优化。这就是日志记录的优势所在

有了一个从Kibana这样的日志中提取度量的解决方案,您就有了另一个可以深入研究度量背后的层。您可以查询它以查找哪些事件导致了度量。在正在运行的系统上,这并不容易,因为您通常必须模拟系统的输入,以获得类似的度量来了解发生了什么。但有了Kibana,你可以分析已经发生的历史事件

这是几年前我为监视web服务(包括它收到的所有电子邮件)而进行的Kibana设置的旧屏幕截图:


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

请注意,Kibana的开源版本没有登录功能,但您可以通过将其置于Apache或Nginx之后并将web服务器配置为执行老式的基本身份验证来轻松实现登录。