在Application Insights中为NodeJS标记指标

时间:2016-09-27 13:06:03

标签: node.js azure azure-application-insights

我目前正在将Node Insights添加到我的NodeJS应用程序中,我已经安装了包并成功传输了数据,但是我希望在每个数据点发送时添加其他标签。

查看文档,似乎遥测处理器就是这样做的地方,但是使用下面的代码我看不到Azure门户中的标签。

var TraceProcessor = function (envelope) {
    envelope.tags['TestTag'] = 'Test Tag';
    return true;
};
module.exports = TraceProcessor;

我可以看到正在执行的代码和正在添加的标记,但无法在Azure门户中看到此标记被过滤。

我是否正确添加了标签,如果是,我可以在哪里通过门户网站过滤数据?

2 个答案:

答案 0 :(得分:0)

我认为您正在寻找的是"自定义属性" (上面的示例使用自定义属性命名为" Tag")。 SDK中的所有方法通常允许您传递字符串键:值对的字典,并且这些属性随所有这些事件一起传播。对于所有非度量调用,如TrackEvent,您实际上可以传递自定义属性的字典自定义度量的字典(字符串:double)。

{p> sdk TelemetryClient

public void TrackMetric(string name, double value, IDictionary<string, string> properties = null)

或在trackevent调用中使用指标AND属性:

public void TrackEvent(string name, IDictionary<string, string> properties = null, IDictionary<string, double> metrics = null)

JavaScript SDK(好吧,无论如何来自ts接口),来自AppInsights.prototype

trackMetric(name: string, average: number, sampleCount?: number, min?: number, max?: number, properties?: { [name: string]: string; });

您在发送的任何属性在metrics explorer或分析查询工具中显示为过滤选项。

答案 1 :(得分:0)

所以我想出了这个,最终结果是我原来的方法和约翰建议的方法的结合。

var TraceProcessor = function (envelope) {
    envelope.data.baseData.properties['TraceID'] = 'trace1';
    return true;
};
module.exports = TraceProcessor;

自定义属性确实是我所需要的,但我已经拥有的遥测处理器能够通过自动遥测来满足每个请求。