如何使用Azure Application Insights跟踪Node.js(ws)中的WebSocket?

时间:2018-07-27 21:20:08

标签: azure-application-insights

我正在为我的WebSocket服务器使用Node.js和ws,并且想了解使用Azure Azure Application Insights跟踪连接以及传入和传出消息的最佳实践方法。

似乎该服务实际上仅是为HTTP请求和响应而设计的,所以如果我将所有事件都作为事件进行跟踪,那我可以吗?我目前正在传递JSON.parse的连接消息值。

1 个答案:

答案 0 :(得分:1)

此处的操作实际上取决于websocket操作的语义。您将必须手动跟踪这些内容,因为Application Insights SDK无法像通过HTTP一样推论语义来映射到Request / Dependency / Event / Trace。 API中的方法名称确实使非HTTP不清楚,但是如果将方法映射到生成的遥测模式以及这些项类型实际代表什么,就会更清楚。

如果您认为接收套接字消息在语义上开始了将触发代码依赖项的“操作”,则应使用trackRequest来记录此信息。这将以最有用的方式填充信息,以便您利用Azure门户中的UI(例如,性能刀片中的响应时间分析或故障刀片中的故障率分析)。由于此请求不是HTTP,因此您必须修补数据以使其适合模式。一个例子:

client.trackRequest({name:"WS Event (low cardinality name)", url:"WS Event (high cardinality name)", duration:309, resultCode:200, success:true});

在此示例中,使用name字段来描述共享此名称的项目是相关的,应在UI中进行分组。使用url字段作为更完整地描述操作的信息(就像GET参数在HTTP中一样)。例如,name可能是“ SendInstantMessage”,url可能是“ SendInstantMessage / user:Bob”。

以同样的方式,如果您考虑发送套接字消息以请求您的应用程序提供信息,并且对您的“操作”行为产生重大影响,则应使用trackDependency来记录此信息。就像上面一样,这样做将以最有用的方式填充数据,以利用门户网站UI(在这种情况下,应用程序映射将能够向您显示失败的Websocket调用的百分比)

如果发现您使用的websocket不太适合这些,请像现在一样作为事件进行跟踪,这是对API的正确使用。