javascript - 使用 Application Insights NodeJ 进行遥测处理器内的异步操作

标签 javascript node.js azure-application-insights

我想要做的是在遥测数据离开我的应用程序时将自定义属性添加到其中。目前,我正在使用遥测处理器来实现此目的,但理想情况下,我想从数据库中读取与事件一起发送的值。

是否可以在遥测处理器内执行异步操作?

var TraceProcessor = function (app) {
    return function (envelope) {

        var i;
        var objTelemetryController = app.telemetryController;

        objTelemetryController.__proto__.getActiveTraces('GLOBAL', function (err, objTraces) {
            if (err) {
                // Error controller log error
                return;
            }

            if (objTraces) {
                for (i = 0; i < objTraces.length; i++) {
                    envelope.data.baseData.properties['TraceProperty'] = objTraces[i];
                }

                return true;
            }
        });
    };
};
module.exports = TraceProcessor;

使用他的代码,不会发送遥测数据,因为见解需要从任何正在使用的遥测处理器返回 true。显然这最终会发生,但不能添加属性。

最佳答案

我认为最好使用TelemetryInitializer为了用额外的信息丰富遥测数据,TelemetryProcessor 的目的更多地倾向于过滤而不是数据丰富。

但是,我认为如果您尝试从遥测初始化程序中调用 SQL 或 HTTP 依赖项,它可能会进入无限循环:

  • 遥测项目在初始化程序中处理
  • 初始化程序启动 SQL 查询 AI
  • 检测 SQL 查询并开始处理有关它的遥测项目
  • 遥测初始化程序调用 SQL...

我怀疑此时此刻是否真的支持异步,它可能会有所帮助(例如返回任务并等待值填充),但需要进行沉浸式调查来考虑所有情况。

关于javascript - 使用 Application Insights NodeJ 进行遥测处理器内的异步操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39829978/

相关文章:

c# - 桌面应用程序中的 Application Insights 不会发送性能计数器

c# - Azure 配置的 APPINSIGHTS_INSTRUMENTATIONKEY 和 ApplicationInsights :InstrumentationKey? 有什么区别

javascript - 如何检查二维数组中的每一项是否符合特定条件?

javascript - ng-class 和动画的竞争条件

javascript - 如何正确地将这个正则表达式分成两行?

Azure 查询分析计算列中所有值的平均值

javascript - 如何在 Firebase 函数中处理字体等资源

node.js - 请求在 cookieJar 中设置 cookie,包括子域

javascript - `console.log([])` 和 `console.log([].toString())` 提供不同的输出

javascript - 错误 [ERR_PACKAGE_PATH_NOT_EXPORTED] : No "exports" main defined in package. json