我想从我的节点应用程序发出指标,以监控到达某个代码分支的频率。例如,我想知道服务调用有多少次没有返回预期的响应。此外,我还希望能够为每个服务调用发出它所花费的时间等。
我希望我将在代码中使用一个客户端,该客户端将向服务器发出指标,然后我将能够在服务器上的仪表板中查看指标。我对可以在我自己的基础设施上托管的开源解决方案更感兴趣。
请注意,我对CPU、内存使用等系统指标不感兴趣。
发布于 2020-07-06 10:34:58
实现普及日志记录,然后使用Elasticsearch + Kibana之类的东西在仪表板中显示它们。
还有其他的指标仪表板系统,如Grafana,Graphite,Tableu等。其中许多系统发送的指标是与标签相关的数字,如计数函数调用,CPU负载等。我喜欢Kibana解决方案的主要原因是它不是基于指标,而是从您的日志文件中提取指标。
对于您的代码,您真正需要做的唯一一件事就是确保您的日志带有时间戳。
Google for Kibana或"ELK stack“(ELK代表Elasticsearch + Logstash + Kibana),了解如何设置。我第一次设置它时,只花了几个小时就得到了结果。
Node有几个记录器,可以配置为将日志事件发送到ELK。此外,ELK的Logstash (或现代的"Beats")部分可以摄取任何日志文件,并使用regexp解析它们以将数据转发到Elasticsearch,因此您不需要修改软件。
ELK解决方案可以进行简单的配置,或者您可以花费数周的时间来调整您的数据解析和图表,以获得更多的见解-它非常灵活,如何使用它取决于您。
指标vs日志(观点):
当然,您需要的是指标。但是,仅有指标并不能说明问题。你最终想要的是能够分析你的系统以进行调试和优化。这就是日志记录的优势所在。
使用从Kibana之类的日志中提取指标的解决方案,您可以在指标背后深入研究另一层。您可以对其进行查询,以找出导致指标的事件。这在正在运行的系统上并不容易做到,因为您通常必须模拟系统的输入,以获得类似的度量来找出正在发生的事情。但是使用Kibana,你可以分析已经发生的历史事件!
这是我几年前做的一个Kibana设置的旧屏幕截图,用于监控web服务(包括它收到的所有电子邮件):

注意上面的屏幕截图-除了我从我的系统中提取的图形和指标之外,我还在仪表板的底部显示解析的日志,因此我几乎可以实时查看正在发生的事情。这是我们用来监控订阅、投诉、点击率等的电子邮件接收仪表板。
https://stackoverflow.com/questions/62748376
复制相似问题