【问题标题】:Async operations inside an telemetry processor with Application Insights NodeJs遥测处理器内的异步操作与 Application Insights NodeJs
【发布时间】:2016-10-03 10:57:26
【问题描述】:

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

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

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。显然这最终会发生,但不是为了添加属性。

【问题讨论】:

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


    【解决方案1】:

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

    但是,我认为如果您尝试从 Telemetry Initializer 中调用 SQL 或 HTTP 依赖项,它可能会进入无限循环:

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

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

    【讨论】:

      猜你喜欢
      • 2021-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-12
      • 1970-01-01
      相关资源
      最近更新 更多