@azure/monitor-opentelemetry-exporter 1.0.0-beta.11 → 1.0.0-beta.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -66,7 +66,7 @@ const TIME_SINCE_ENQUEUED = "timeSinceEnqueued";
66
66
  * AzureMonitorTraceExporter version.
67
67
  * @internal
68
68
  */
69
- const packageVersion = "1.0.0-beta.11";
69
+ const packageVersion = "1.0.0-beta.12";
70
70
  var DependencyTypes;
71
71
  (function (DependencyTypes) {
72
72
  DependencyTypes["InProc"] = "InProc";
@@ -76,35 +76,6 @@ var DependencyTypes;
76
76
  DependencyTypes["Grpc"] = "GRPC";
77
77
  })(DependencyTypes || (DependencyTypes = {}));
78
78
  const AzureMonitorSampleRate = "_MS.sampleRate";
79
- var StandardMetrics;
80
- (function (StandardMetrics) {
81
- StandardMetrics["HTTP_REQUEST_DURATION"] = "azureMonitor.http.requestDuration";
82
- StandardMetrics["HTTP_DEPENDENCY_DURATION"] = "azureMonitor.http.dependencyDuration";
83
- StandardMetrics["EXCEPTION_COUNT"] = "azureMonitor.exceptionCount";
84
- StandardMetrics["TRACE_COUNT"] = "azureMonitor.traceCount";
85
- })(StandardMetrics || (StandardMetrics = {}));
86
- var StandardMetricIds;
87
- (function (StandardMetricIds) {
88
- StandardMetricIds["REQUEST_DURATION"] = "requests/duration";
89
- StandardMetricIds["DEPENDENCY_DURATION"] = "dependencies/duration";
90
- StandardMetricIds["EXCEPTION_COUNT"] = "exceptions/count";
91
- StandardMetricIds["TRACE_COUNT"] = "traces/count";
92
- })(StandardMetricIds || (StandardMetricIds = {}));
93
- // Names expected in Breeze side for dimensions
94
- const PreAggregatedMetricPropertyNames = {
95
- cloudRoleInstance: "cloud/roleInstance",
96
- cloudRoleName: "cloud/roleName",
97
- operationSynthetic: "operation/synthetic",
98
- requestSuccess: "Request.Success",
99
- requestResultCode: "request/resultCode",
100
- dependencyType: "Dependency.Type",
101
- dependencyTarget: "dependency/target",
102
- dependencySuccess: "Dependency.Success",
103
- dependencyResultCode: "dependency/resultCode",
104
- traceSeverityLevel: "trace/severityLevel",
105
- metricId: "_MS.MetricId",
106
- IsAutocollected: "_MS.IsAutocollected",
107
- };
108
79
 
109
80
  /**
110
81
  * ApplicationInsightsSampler is responsible for the following:
@@ -1756,7 +1727,7 @@ class ApplicationInsightsClient extends coreClient__namespace.ServiceClient {
1756
1727
  const defaults = {
1757
1728
  requestContentType: "application/json; charset=utf-8"
1758
1729
  };
1759
- const packageDetails = `azsdk-js-monitor-opentelemetry-exporter/1.0.0-beta.11`;
1730
+ const packageDetails = `azsdk-js-monitor-opentelemetry-exporter/1.0.0-beta.12`;
1760
1731
  const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix
1761
1732
  ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`
1762
1733
  : `${packageDetails}`;
@@ -1912,14 +1883,21 @@ class Context {
1912
1883
  [Context.nodeVersion] = node.split(".");
1913
1884
  Context.opentelemetryVersion = core.SDK_INFO[semanticConventions.SemanticResourceAttributes.TELEMETRY_SDK_VERSION];
1914
1885
  Context.sdkVersion = packageVersion;
1915
- this.tags[KnownContextTagKeys.AiInternalSdkVersion] = `node${Context.nodeVersion}:otel${Context.opentelemetryVersion}:ext${Context.sdkVersion}`;
1886
+ let prefix = process.env["AZURE_MONITOR_AGENT_PREFIX"]
1887
+ ? process.env["AZURE_MONITOR_AGENT_PREFIX"]
1888
+ : "";
1889
+ let version = process.env["AZURE_MONITOR_DISTRO_VERSION"]
1890
+ ? `dst${process.env["AZURE_MONITOR_DISTRO_VERSION"]}`
1891
+ : `ext${Context.sdkVersion}`;
1892
+ let internalSdkVersion = `${prefix}node${Context.nodeVersion}:otel${Context.opentelemetryVersion}:${version}`;
1893
+ this.tags[KnownContextTagKeys.AiInternalSdkVersion] = internalSdkVersion;
1916
1894
  }
1917
1895
  }
1918
1896
  Context.sdkVersion = null;
1919
1897
  Context.opentelemetryVersion = null;
1920
1898
  Context.nodeVersion = "";
1921
1899
  /**
1922
- * Singleton Context instance.
1900
+ * Singleton Context instance
1923
1901
  * @internal
1924
1902
  */
1925
1903
  function getInstance$1() {
@@ -2884,7 +2862,7 @@ function createTagsFromSpan(span) {
2884
2862
  }
2885
2863
  else if (httpUrl) {
2886
2864
  try {
2887
- let url$1 = new url.URL(String(httpUrl));
2865
+ const url$1 = new url.URL(String(httpUrl));
2888
2866
  tags[KnownContextTagKeys.AiOperationName] = `${httpMethod} ${url$1.pathname}`;
2889
2867
  }
2890
2868
  catch (ex) { }
@@ -2910,19 +2888,23 @@ function createPropertiesFromSpanAttributes(attributes) {
2910
2888
  const properties = {};
2911
2889
  if (attributes) {
2912
2890
  for (const key of Object.keys(attributes)) {
2913
- if (!(key.startsWith("http.") ||
2914
- key.startsWith("rpc.") ||
2915
- key.startsWith("db.") ||
2916
- key.startsWith("peer.") ||
2917
- key.startsWith("message.") ||
2918
- key.startsWith("messaging.") ||
2919
- key.startsWith("enduser.") ||
2920
- key.startsWith("net.") ||
2921
- key.startsWith("exception.") ||
2922
- key.startsWith("thread.") ||
2923
- key.startsWith("faas.") ||
2924
- key.startsWith("code.") ||
2925
- key.startsWith("_MS."))) {
2891
+ // Avoid duplication ignoring fields already mapped.
2892
+ if (!(key.startsWith("_MS.") ||
2893
+ key == semanticConventions.SemanticAttributes.NET_PEER_IP ||
2894
+ key == semanticConventions.SemanticAttributes.NET_PEER_NAME ||
2895
+ key == semanticConventions.SemanticAttributes.PEER_SERVICE ||
2896
+ key == semanticConventions.SemanticAttributes.HTTP_METHOD ||
2897
+ key == semanticConventions.SemanticAttributes.HTTP_URL ||
2898
+ key == semanticConventions.SemanticAttributes.HTTP_STATUS_CODE ||
2899
+ key == semanticConventions.SemanticAttributes.HTTP_ROUTE ||
2900
+ key == semanticConventions.SemanticAttributes.HTTP_HOST ||
2901
+ key == semanticConventions.SemanticAttributes.HTTP_URL ||
2902
+ key == semanticConventions.SemanticAttributes.DB_SYSTEM ||
2903
+ key == semanticConventions.SemanticAttributes.DB_STATEMENT ||
2904
+ key == semanticConventions.SemanticAttributes.DB_OPERATION ||
2905
+ key == semanticConventions.SemanticAttributes.DB_NAME ||
2906
+ key == semanticConventions.SemanticAttributes.RPC_SYSTEM ||
2907
+ key == semanticConventions.SemanticAttributes.RPC_GRPC_STATUS_CODE)) {
2926
2908
  properties[key] = attributes[key];
2927
2909
  }
2928
2910
  }
@@ -2965,7 +2947,7 @@ function createDependencyData(span) {
2965
2947
  const httpUrl = span.attributes[semanticConventions.SemanticAttributes.HTTP_URL];
2966
2948
  if (httpUrl) {
2967
2949
  try {
2968
- let dependencyUrl = new url.URL(String(httpUrl));
2950
+ const dependencyUrl = new url.URL(String(httpUrl));
2969
2951
  remoteDependencyData.name = `${httpMethod} ${dependencyUrl.pathname}`;
2970
2952
  }
2971
2953
  catch (ex) { }
@@ -2980,11 +2962,11 @@ function createDependencyData(span) {
2980
2962
  if (target) {
2981
2963
  try {
2982
2964
  // Remove default port
2983
- let portRegex = new RegExp(/(https?)(:\/\/.*)(:\d+)(\S*)/);
2984
- let res = portRegex.exec(target);
2965
+ const portRegex = new RegExp(/(https?)(:\/\/.*)(:\d+)(\S*)/);
2966
+ const res = portRegex.exec(target);
2985
2967
  if (res != null) {
2986
- let protocol = res[1];
2987
- let port = res[3];
2968
+ const protocol = res[1];
2969
+ const port = res[3];
2988
2970
  if ((protocol == "https" && port == ":443") || (protocol == "http" && port == ":80")) {
2989
2971
  // Drop port
2990
2972
  target = res[1] + res[2] + res[4];
@@ -3024,7 +3006,7 @@ function createDependencyData(span) {
3024
3006
  else if (dbOperation) {
3025
3007
  remoteDependencyData.data = String(dbOperation);
3026
3008
  }
3027
- let target = getDependencyTarget(span.attributes);
3009
+ const target = getDependencyTarget(span.attributes);
3028
3010
  const dbName = span.attributes[semanticConventions.SemanticAttributes.DB_NAME];
3029
3011
  if (target) {
3030
3012
  remoteDependencyData.target = dbName ? `${target}|${dbName}` : `${target}`;
@@ -3040,7 +3022,7 @@ function createDependencyData(span) {
3040
3022
  if (grpcStatusCode) {
3041
3023
  remoteDependencyData.resultCode = String(grpcStatusCode);
3042
3024
  }
3043
- let target = getDependencyTarget(span.attributes);
3025
+ const target = getDependencyTarget(span.attributes);
3044
3026
  if (target) {
3045
3027
  remoteDependencyData.target = `${target}`;
3046
3028
  }
@@ -3137,18 +3119,18 @@ function readableSpanToEnvelope(span, ikey) {
3137
3119
  * @internal
3138
3120
  */
3139
3121
  function spanEventsToEnvelopes(span, ikey) {
3140
- let envelopes = [];
3122
+ const envelopes = [];
3141
3123
  if (span.events) {
3142
3124
  span.events.forEach((event) => {
3143
3125
  var _a;
3144
3126
  let baseType;
3145
- let time = new Date(core.hrTimeToMilliseconds(event.time));
3127
+ const time = new Date(core.hrTimeToMilliseconds(event.time));
3146
3128
  let name = "";
3147
3129
  let baseData;
3148
3130
  const properties = createPropertiesFromSpanAttributes(event.attributes);
3149
- let tags = createTagsFromResource(span.resource);
3131
+ const tags = createTagsFromResource(span.resource);
3150
3132
  tags[KnownContextTagKeys.AiOperationId] = span.spanContext().traceId;
3151
- let spanId = (_a = span.spanContext()) === null || _a === void 0 ? void 0 : _a.spanId;
3133
+ const spanId = (_a = span.spanContext()) === null || _a === void 0 ? void 0 : _a.spanId;
3152
3134
  if (spanId) {
3153
3135
  tags[KnownContextTagKeys.AiOperationParentId] = spanId;
3154
3136
  }
@@ -3166,22 +3148,22 @@ function spanEventsToEnvelopes(span, ikey) {
3166
3148
  if (stack) {
3167
3149
  hasFullStack = true;
3168
3150
  }
3169
- let exceptionMsg = event.attributes[semanticConventions.SemanticAttributes.EXCEPTION_MESSAGE];
3151
+ const exceptionMsg = event.attributes[semanticConventions.SemanticAttributes.EXCEPTION_MESSAGE];
3170
3152
  if (exceptionMsg) {
3171
3153
  message = String(exceptionMsg);
3172
3154
  }
3173
- let escaped = event.attributes[semanticConventions.SemanticAttributes.EXCEPTION_ESCAPED];
3155
+ const escaped = event.attributes[semanticConventions.SemanticAttributes.EXCEPTION_ESCAPED];
3174
3156
  if (escaped != undefined) {
3175
3157
  properties[semanticConventions.SemanticAttributes.EXCEPTION_ESCAPED] = String(escaped);
3176
3158
  }
3177
3159
  }
3178
- let exceptionDetails = {
3160
+ const exceptionDetails = {
3179
3161
  typeName: typeName,
3180
3162
  message: message,
3181
3163
  stack: stack,
3182
3164
  hasFullStack: hasFullStack,
3183
3165
  };
3184
- let exceptionData = {
3166
+ const exceptionData = {
3185
3167
  exceptions: [exceptionDetails],
3186
3168
  version: 2,
3187
3169
  properties: properties,
@@ -3191,7 +3173,7 @@ function spanEventsToEnvelopes(span, ikey) {
3191
3173
  else {
3192
3174
  name = "Microsoft.ApplicationInsights.Message";
3193
3175
  baseType = "MessageData";
3194
- let messageData = {
3176
+ const messageData = {
3195
3177
  message: event.name,
3196
3178
  version: 2,
3197
3179
  properties: properties,
@@ -3202,7 +3184,7 @@ function spanEventsToEnvelopes(span, ikey) {
3202
3184
  if (span.attributes[AzureMonitorSampleRate]) {
3203
3185
  sampleRate = Number(span.attributes[AzureMonitorSampleRate]);
3204
3186
  }
3205
- let env = {
3187
+ const env = {
3206
3188
  name: name,
3207
3189
  time: time,
3208
3190
  instrumentationKey: ikey,
@@ -3297,20 +3279,13 @@ function resourceMetricsToEnvelope(metrics, ikey, isStatsbeat) {
3297
3279
  }
3298
3280
  metrics.scopeMetrics.forEach((scopeMetric) => {
3299
3281
  scopeMetric.metrics.forEach((metric) => {
3300
- var _a, _b;
3301
- const isStandardMetric = (_b = (_a = metric.descriptor) === null || _a === void 0 ? void 0 : _a.name) === null || _b === void 0 ? void 0 : _b.startsWith("azureMonitor.");
3302
3282
  metric.dataPoints.forEach((dataPoint) => {
3303
3283
  let baseData = {
3304
3284
  metrics: [],
3305
3285
  version: 2,
3306
3286
  properties: {},
3307
3287
  };
3308
- if (isStandardMetric) {
3309
- baseData.properties = createStandardMetricsProperties(metric.descriptor.name, dataPoint.attributes, tags);
3310
- }
3311
- else {
3312
- baseData.properties = createPropertiesFromMetricAttributes(dataPoint.attributes);
3313
- }
3288
+ baseData.properties = createPropertiesFromMetricAttributes(dataPoint.attributes);
3314
3289
  var metricDataPoint = {
3315
3290
  name: metric.descriptor.name,
3316
3291
  value: 0,
@@ -3346,37 +3321,6 @@ function resourceMetricsToEnvelope(metrics, ikey, isStatsbeat) {
3346
3321
  });
3347
3322
  return envelopes;
3348
3323
  }
3349
- function createStandardMetricsProperties(name, attributes, tags) {
3350
- const properties = {};
3351
- properties[PreAggregatedMetricPropertyNames.IsAutocollected] = "True";
3352
- properties[PreAggregatedMetricPropertyNames.cloudRoleInstance] =
3353
- tags[KnownContextTagKeys.AiCloudRoleInstance];
3354
- properties[PreAggregatedMetricPropertyNames.cloudRoleName] =
3355
- tags[KnownContextTagKeys.AiCloudRole];
3356
- if (name == StandardMetrics.HTTP_REQUEST_DURATION) {
3357
- properties[PreAggregatedMetricPropertyNames.metricId] = StandardMetricIds.REQUEST_DURATION;
3358
- let statusCode = String(attributes["http.status_code"]);
3359
- properties[PreAggregatedMetricPropertyNames.requestResultCode] = statusCode;
3360
- properties[PreAggregatedMetricPropertyNames.requestSuccess] =
3361
- statusCode == "200" ? "True" : "False";
3362
- }
3363
- else if (name == StandardMetrics.HTTP_DEPENDENCY_DURATION) {
3364
- properties[PreAggregatedMetricPropertyNames.metricId] = StandardMetricIds.DEPENDENCY_DURATION;
3365
- let statusCode = String(attributes["http.status_code"]);
3366
- properties[PreAggregatedMetricPropertyNames.dependencyTarget] = getDependencyTarget(attributes);
3367
- properties[PreAggregatedMetricPropertyNames.dependencyResultCode] = statusCode;
3368
- properties[PreAggregatedMetricPropertyNames.dependencyType] = "http";
3369
- properties[PreAggregatedMetricPropertyNames.dependencySuccess] =
3370
- statusCode == "200" ? "True" : "False";
3371
- }
3372
- else if (name == StandardMetrics.TRACE_COUNT) {
3373
- properties[PreAggregatedMetricPropertyNames.metricId] = StandardMetricIds.TRACE_COUNT;
3374
- }
3375
- else if (name == StandardMetrics.EXCEPTION_COUNT) {
3376
- properties[PreAggregatedMetricPropertyNames.metricId] = StandardMetricIds.EXCEPTION_COUNT;
3377
- }
3378
- return properties;
3379
- }
3380
3324
 
3381
3325
  // Copyright (c) Microsoft Corporation.
3382
3326
  /**
@@ -23,7 +23,7 @@ export class ApplicationInsightsClient extends coreClient.ServiceClient {
23
23
  const defaults = {
24
24
  requestContentType: "application/json; charset=utf-8"
25
25
  };
26
- const packageDetails = `azsdk-js-monitor-opentelemetry-exporter/1.0.0-beta.11`;
26
+ const packageDetails = `azsdk-js-monitor-opentelemetry-exporter/1.0.0-beta.12`;
27
27
  const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix
28
28
  ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`
29
29
  : `${packageDetails}`;
@@ -1 +1 @@
1
- {"version":3,"file":"applicationInsightsClient.js","sourceRoot":"","sources":["../../../src/generated/applicationInsightsClient.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport * as coreClient from \"@azure/core-client\";\nimport * as coreRestPipeline from \"@azure/core-rest-pipeline\";\nimport * as Parameters from \"./models/parameters\";\nimport * as Mappers from \"./models/mappers\";\nimport {\n ApplicationInsightsClientOptionalParams,\n TelemetryItem,\n TrackOptionalParams,\n TrackOperationResponse\n} from \"./models\";\n\nexport class ApplicationInsightsClient extends coreClient.ServiceClient {\n host: string;\n\n /**\n * Initializes a new instance of the ApplicationInsightsClient class.\n * @param options The parameter options\n */\n constructor(options?: ApplicationInsightsClientOptionalParams) {\n // Initializing default values for options\n if (!options) {\n options = {};\n }\n const defaults: ApplicationInsightsClientOptionalParams = {\n requestContentType: \"application/json; charset=utf-8\"\n };\n\n const packageDetails = `azsdk-js-monitor-opentelemetry-exporter/1.0.0-beta.11`;\n const userAgentPrefix =\n options.userAgentOptions && options.userAgentOptions.userAgentPrefix\n ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n\n const optionsWithDefaults = {\n ...defaults,\n ...options,\n userAgentOptions: {\n userAgentPrefix\n },\n baseUri: options.endpoint ?? options.baseUri ?? \"{Host}/v2.1\"\n };\n super(optionsWithDefaults);\n\n if (options?.pipeline && options.pipeline.getOrderedPolicies().length > 0) {\n const pipelinePolicies: coreRestPipeline.PipelinePolicy[] = options.pipeline.getOrderedPolicies();\n const bearerTokenAuthenticationPolicyFound = pipelinePolicies.some(\n (pipelinePolicy) =>\n pipelinePolicy.name ===\n coreRestPipeline.bearerTokenAuthenticationPolicyName\n );\n if (!bearerTokenAuthenticationPolicyFound) {\n this.pipeline.removePolicy({\n name: coreRestPipeline.bearerTokenAuthenticationPolicyName\n });\n this.pipeline.addPolicy(\n coreRestPipeline.bearerTokenAuthenticationPolicy({\n scopes: `${optionsWithDefaults.baseUri}/.default`,\n challengeCallbacks: {\n authorizeRequestOnChallenge:\n coreClient.authorizeRequestOnClaimChallenge\n }\n })\n );\n }\n }\n\n // Assigning values to Constant parameters\n this.host = options.host || \"https://dc.services.visualstudio.com\";\n }\n\n /**\n * This operation sends a sequence of telemetry events that will be monitored by Azure Monitor.\n * @param body The list of telemetry events to track.\n * @param options The options parameters.\n */\n track(\n body: TelemetryItem[],\n options?: TrackOptionalParams\n ): Promise<TrackOperationResponse> {\n return this.sendOperationRequest({ body, options }, trackOperationSpec);\n }\n}\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\n\nconst trackOperationSpec: coreClient.OperationSpec = {\n path: \"/track\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.TrackResponse\n },\n 206: {\n bodyMapper: Mappers.TrackResponse\n },\n 400: {\n bodyMapper: Mappers.TrackResponse,\n isError: true\n },\n 402: {\n bodyMapper: Mappers.TrackResponse,\n isError: true\n },\n 429: {\n bodyMapper: Mappers.TrackResponse,\n isError: true\n },\n 500: {\n bodyMapper: Mappers.TrackResponse,\n isError: true\n },\n 503: {\n bodyMapper: Mappers.TrackResponse,\n isError: true\n }\n },\n requestBody: Parameters.body,\n urlParameters: [Parameters.host],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\n"]}
1
+ {"version":3,"file":"applicationInsightsClient.js","sourceRoot":"","sources":["../../../src/generated/applicationInsightsClient.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport * as coreClient from \"@azure/core-client\";\nimport * as coreRestPipeline from \"@azure/core-rest-pipeline\";\nimport * as Parameters from \"./models/parameters\";\nimport * as Mappers from \"./models/mappers\";\nimport {\n ApplicationInsightsClientOptionalParams,\n TelemetryItem,\n TrackOptionalParams,\n TrackOperationResponse\n} from \"./models\";\n\nexport class ApplicationInsightsClient extends coreClient.ServiceClient {\n host: string;\n\n /**\n * Initializes a new instance of the ApplicationInsightsClient class.\n * @param options The parameter options\n */\n constructor(options?: ApplicationInsightsClientOptionalParams) {\n // Initializing default values for options\n if (!options) {\n options = {};\n }\n const defaults: ApplicationInsightsClientOptionalParams = {\n requestContentType: \"application/json; charset=utf-8\"\n };\n\n const packageDetails = `azsdk-js-monitor-opentelemetry-exporter/1.0.0-beta.12`;\n const userAgentPrefix =\n options.userAgentOptions && options.userAgentOptions.userAgentPrefix\n ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n\n const optionsWithDefaults = {\n ...defaults,\n ...options,\n userAgentOptions: {\n userAgentPrefix\n },\n baseUri: options.endpoint ?? options.baseUri ?? \"{Host}/v2.1\"\n };\n super(optionsWithDefaults);\n\n if (options?.pipeline && options.pipeline.getOrderedPolicies().length > 0) {\n const pipelinePolicies: coreRestPipeline.PipelinePolicy[] = options.pipeline.getOrderedPolicies();\n const bearerTokenAuthenticationPolicyFound = pipelinePolicies.some(\n (pipelinePolicy) =>\n pipelinePolicy.name ===\n coreRestPipeline.bearerTokenAuthenticationPolicyName\n );\n if (!bearerTokenAuthenticationPolicyFound) {\n this.pipeline.removePolicy({\n name: coreRestPipeline.bearerTokenAuthenticationPolicyName\n });\n this.pipeline.addPolicy(\n coreRestPipeline.bearerTokenAuthenticationPolicy({\n scopes: `${optionsWithDefaults.baseUri}/.default`,\n challengeCallbacks: {\n authorizeRequestOnChallenge:\n coreClient.authorizeRequestOnClaimChallenge\n }\n })\n );\n }\n }\n\n // Assigning values to Constant parameters\n this.host = options.host || \"https://dc.services.visualstudio.com\";\n }\n\n /**\n * This operation sends a sequence of telemetry events that will be monitored by Azure Monitor.\n * @param body The list of telemetry events to track.\n * @param options The options parameters.\n */\n track(\n body: TelemetryItem[],\n options?: TrackOptionalParams\n ): Promise<TrackOperationResponse> {\n return this.sendOperationRequest({ body, options }, trackOperationSpec);\n }\n}\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\n\nconst trackOperationSpec: coreClient.OperationSpec = {\n path: \"/track\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.TrackResponse\n },\n 206: {\n bodyMapper: Mappers.TrackResponse\n },\n 400: {\n bodyMapper: Mappers.TrackResponse,\n isError: true\n },\n 402: {\n bodyMapper: Mappers.TrackResponse,\n isError: true\n },\n 429: {\n bodyMapper: Mappers.TrackResponse,\n isError: true\n },\n 500: {\n bodyMapper: Mappers.TrackResponse,\n isError: true\n },\n 503: {\n bodyMapper: Mappers.TrackResponse,\n isError: true\n }\n },\n requestBody: Parameters.body,\n urlParameters: [Parameters.host],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\n"]}
@@ -24,14 +24,21 @@ export class Context {
24
24
  [Context.nodeVersion] = node.split(".");
25
25
  Context.opentelemetryVersion = SDK_INFO[SemanticResourceAttributes.TELEMETRY_SDK_VERSION];
26
26
  Context.sdkVersion = ai.packageVersion;
27
- this.tags[KnownContextTagKeys.AiInternalSdkVersion] = `node${Context.nodeVersion}:otel${Context.opentelemetryVersion}:ext${Context.sdkVersion}`;
27
+ let prefix = process.env["AZURE_MONITOR_AGENT_PREFIX"]
28
+ ? process.env["AZURE_MONITOR_AGENT_PREFIX"]
29
+ : "";
30
+ let version = process.env["AZURE_MONITOR_DISTRO_VERSION"]
31
+ ? `dst${process.env["AZURE_MONITOR_DISTRO_VERSION"]}`
32
+ : `ext${Context.sdkVersion}`;
33
+ let internalSdkVersion = `${prefix}node${Context.nodeVersion}:otel${Context.opentelemetryVersion}:${version}`;
34
+ this.tags[KnownContextTagKeys.AiInternalSdkVersion] = internalSdkVersion;
28
35
  }
29
36
  }
30
37
  Context.sdkVersion = null;
31
38
  Context.opentelemetryVersion = null;
32
39
  Context.nodeVersion = "";
33
40
  /**
34
- * Singleton Context instance.
41
+ * Singleton Context instance
35
42
  * @internal
36
43
  */
37
44
  export function getInstance() {
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../../src/platform/nodejs/context/context.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAEjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,8CAA8C,CAAC;AAGnE,IAAI,QAAQ,GAAmB,IAAI,CAAC;AAEpC;;;GAGG;AACH,MAAM,OAAO,OAAO;IASlB;QACE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;IAC1F,CAAC;IAEO,oBAAoB;QAC1B,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClC,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,OAAO,CAAC,oBAAoB,GAAG,QAAQ,CAAC,0BAA0B,CAAC,qBAAqB,CAAC,CAAC;QAC1F,OAAO,CAAC,UAAU,GAAG,EAAE,CAAC,cAAc,CAAC;QACvC,IAAI,CAAC,IAAI,CACP,mBAAmB,CAAC,oBAAoB,CACzC,GAAG,OAAO,OAAO,CAAC,WAAW,QAAQ,OAAO,CAAC,oBAAoB,OAAO,OAAO,CAAC,UAAU,EAAE,CAAC;IAChG,CAAC;;AAxBa,kBAAU,GAAkB,IAAI,CAAC;AAEjC,4BAAoB,GAAkB,IAAI,CAAC;AAE3C,mBAAW,GAAW,EAAE,CAAC;AAuBzC;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC,QAAQ,EAAE;QACb,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAC;KAC1B;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport * as os from \"os\";\nimport { SDK_INFO } from \"@opentelemetry/core\";\nimport { SemanticResourceAttributes } from \"@opentelemetry/semantic-conventions\";\n\nimport { KnownContextTagKeys } from \"../../../generated\";\nimport * as ai from \"../../../utils/constants/applicationinsights\";\nimport { Tags } from \"../../../types\";\n\nlet instance: Context | null = null;\n\n/**\n * Azure Telemetry context.\n * @internal\n */\nexport class Context {\n public tags: Tags;\n\n public static sdkVersion: string | null = null;\n\n public static opentelemetryVersion: string | null = null;\n\n public static nodeVersion: string = \"\";\n\n constructor() {\n this.tags = {};\n this._loadDeviceContext();\n this._loadInternalContext();\n }\n\n private _loadDeviceContext(): void {\n this.tags[KnownContextTagKeys.AiDeviceOsVersion] = os && `${os.type()} ${os.release()}`;\n }\n\n private _loadInternalContext(): void {\n const { node } = process.versions;\n [Context.nodeVersion] = node.split(\".\");\n Context.opentelemetryVersion = SDK_INFO[SemanticResourceAttributes.TELEMETRY_SDK_VERSION];\n Context.sdkVersion = ai.packageVersion;\n this.tags[\n KnownContextTagKeys.AiInternalSdkVersion\n ] = `node${Context.nodeVersion}:otel${Context.opentelemetryVersion}:ext${Context.sdkVersion}`;\n }\n}\n\n/**\n * Singleton Context instance.\n * @internal\n */\nexport function getInstance(): Context {\n if (!instance) {\n instance = new Context();\n }\n return instance;\n}\n"]}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../../src/platform/nodejs/context/context.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAEjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,8CAA8C,CAAC;AAGnE,IAAI,QAAQ,GAAmB,IAAI,CAAC;AAEpC;;;GAGG;AACH,MAAM,OAAO,OAAO;IASlB;QACE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;IAC1F,CAAC;IAEO,oBAAoB;QAC1B,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClC,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,OAAO,CAAC,oBAAoB,GAAG,QAAQ,CAAC,0BAA0B,CAAC,qBAAqB,CAAC,CAAC;QAC1F,OAAO,CAAC,UAAU,GAAG,EAAE,CAAC,cAAc,CAAC;QAEvC,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;YACpD,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;YAC3C,CAAC,CAAC,EAAE,CAAC;QACP,IAAI,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;YACvD,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,EAAE;YACrD,CAAC,CAAC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;QAC/B,IAAI,kBAAkB,GAAG,GAAG,MAAM,OAAO,OAAO,CAAC,WAAW,QAAQ,OAAO,CAAC,oBAAoB,IAAI,OAAO,EAAE,CAAC;QAC9G,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,GAAG,kBAAkB,CAAC;IAC3E,CAAC;;AA9Ba,kBAAU,GAAkB,IAAI,CAAC;AAEjC,4BAAoB,GAAkB,IAAI,CAAC;AAE3C,mBAAW,GAAW,EAAE,CAAC;AA6BzC;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC,QAAQ,EAAE;QACb,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAC;KAC1B;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport * as os from \"os\";\nimport { SDK_INFO } from \"@opentelemetry/core\";\nimport { SemanticResourceAttributes } from \"@opentelemetry/semantic-conventions\";\n\nimport { KnownContextTagKeys } from \"../../../generated\";\nimport * as ai from \"../../../utils/constants/applicationinsights\";\nimport { Tags } from \"../../../types\";\n\nlet instance: Context | null = null;\n\n/**\n * Azure Telemetry context.\n * @internal\n */\nexport class Context {\n public tags: Tags;\n\n public static sdkVersion: string | null = null;\n\n public static opentelemetryVersion: string | null = null;\n\n public static nodeVersion: string = \"\";\n\n constructor() {\n this.tags = {};\n this._loadDeviceContext();\n this._loadInternalContext();\n }\n\n private _loadDeviceContext(): void {\n this.tags[KnownContextTagKeys.AiDeviceOsVersion] = os && `${os.type()} ${os.release()}`;\n }\n\n private _loadInternalContext(): void {\n const { node } = process.versions;\n [Context.nodeVersion] = node.split(\".\");\n Context.opentelemetryVersion = SDK_INFO[SemanticResourceAttributes.TELEMETRY_SDK_VERSION];\n Context.sdkVersion = ai.packageVersion;\n\n let prefix = process.env[\"AZURE_MONITOR_AGENT_PREFIX\"]\n ? process.env[\"AZURE_MONITOR_AGENT_PREFIX\"]\n : \"\";\n let version = process.env[\"AZURE_MONITOR_DISTRO_VERSION\"]\n ? `dst${process.env[\"AZURE_MONITOR_DISTRO_VERSION\"]}`\n : `ext${Context.sdkVersion}`;\n let internalSdkVersion = `${prefix}node${Context.nodeVersion}:otel${Context.opentelemetryVersion}:${version}`;\n this.tags[KnownContextTagKeys.AiInternalSdkVersion] = internalSdkVersion;\n }\n}\n\n/**\n * Singleton Context instance\n * @internal\n */\nexport function getInstance(): Context {\n if (!instance) {\n instance = new Context();\n }\n return instance;\n}\n"]}
@@ -19,7 +19,7 @@ export const TIME_SINCE_ENQUEUED = "timeSinceEnqueued";
19
19
  * AzureMonitorTraceExporter version.
20
20
  * @internal
21
21
  */
22
- export const packageVersion = "1.0.0-beta.11";
22
+ export const packageVersion = "1.0.0-beta.12";
23
23
  export var DependencyTypes;
24
24
  (function (DependencyTypes) {
25
25
  DependencyTypes["InProc"] = "InProc";
@@ -29,33 +29,4 @@ export var DependencyTypes;
29
29
  DependencyTypes["Grpc"] = "GRPC";
30
30
  })(DependencyTypes || (DependencyTypes = {}));
31
31
  export const AzureMonitorSampleRate = "_MS.sampleRate";
32
- export var StandardMetrics;
33
- (function (StandardMetrics) {
34
- StandardMetrics["HTTP_REQUEST_DURATION"] = "azureMonitor.http.requestDuration";
35
- StandardMetrics["HTTP_DEPENDENCY_DURATION"] = "azureMonitor.http.dependencyDuration";
36
- StandardMetrics["EXCEPTION_COUNT"] = "azureMonitor.exceptionCount";
37
- StandardMetrics["TRACE_COUNT"] = "azureMonitor.traceCount";
38
- })(StandardMetrics || (StandardMetrics = {}));
39
- export var StandardMetricIds;
40
- (function (StandardMetricIds) {
41
- StandardMetricIds["REQUEST_DURATION"] = "requests/duration";
42
- StandardMetricIds["DEPENDENCY_DURATION"] = "dependencies/duration";
43
- StandardMetricIds["EXCEPTION_COUNT"] = "exceptions/count";
44
- StandardMetricIds["TRACE_COUNT"] = "traces/count";
45
- })(StandardMetricIds || (StandardMetricIds = {}));
46
- // Names expected in Breeze side for dimensions
47
- export const PreAggregatedMetricPropertyNames = {
48
- cloudRoleInstance: "cloud/roleInstance",
49
- cloudRoleName: "cloud/roleName",
50
- operationSynthetic: "operation/synthetic",
51
- requestSuccess: "Request.Success",
52
- requestResultCode: "request/resultCode",
53
- dependencyType: "Dependency.Type",
54
- dependencyTarget: "dependency/target",
55
- dependencySuccess: "Dependency.Success",
56
- dependencyResultCode: "dependency/resultCode",
57
- traceSeverityLevel: "trace/severityLevel",
58
- metricId: "_MS.MetricId",
59
- IsAutocollected: "_MS.IsAutocollected",
60
- };
61
32
  //# sourceMappingURL=applicationinsights.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"applicationinsights.js","sourceRoot":"","sources":["../../../../src/utils/constants/applicationinsights.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAC;AACpC;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,cAAc,CAAC;AAC5C;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AACvD;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC;AAE9C,MAAM,CAAN,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,oCAAiB,CAAA;IACjB,iDAA8B,CAAA;IAC9B,8BAAW,CAAA;IACX,gCAAa,CAAA;IACb,gCAAa,CAAA;AACf,CAAC,EANW,eAAe,KAAf,eAAe,QAM1B;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,gBAAgB,CAAC;AAEvD,MAAM,CAAN,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,8EAA2D,CAAA;IAC3D,oFAAiE,CAAA;IACjE,kEAA+C,CAAA;IAC/C,0DAAuC,CAAA;AACzC,CAAC,EALW,eAAe,KAAf,eAAe,QAK1B;AAED,MAAM,CAAN,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC3B,2DAAsC,CAAA;IACtC,kEAA6C,CAAA;IAC7C,yDAAoC,CAAA;IACpC,iDAA4B,CAAA;AAC9B,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,QAK5B;AAgBD,+CAA+C;AAC/C,MAAM,CAAC,MAAM,gCAAgC,GAAiD;IAC5F,iBAAiB,EAAE,oBAAoB;IACvC,aAAa,EAAE,gBAAgB;IAC/B,kBAAkB,EAAE,qBAAqB;IACzC,cAAc,EAAE,iBAAiB;IACjC,iBAAiB,EAAE,oBAAoB;IACvC,cAAc,EAAE,iBAAiB;IACjC,gBAAgB,EAAE,mBAAmB;IACrC,iBAAiB,EAAE,oBAAoB;IACvC,oBAAoB,EAAE,uBAAuB;IAC7C,kBAAkB,EAAE,qBAAqB;IACzC,QAAQ,EAAE,cAAc;IACxB,eAAe,EAAE,qBAAqB;CACvC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * AI MS Links.\n * @internal\n */\nexport const MS_LINKS = \"_MS.links\";\n/**\n * AI enqueued time attribute.\n * @internal\n */\nexport const ENQUEUED_TIME = \"enqueuedTime\";\n/**\n * AI time since enqueued attribute.\n * @internal\n */\nexport const TIME_SINCE_ENQUEUED = \"timeSinceEnqueued\";\n/**\n * AzureMonitorTraceExporter version.\n * @internal\n */\nexport const packageVersion = \"1.0.0-beta.11\";\n\nexport enum DependencyTypes {\n InProc = \"InProc\",\n QueueMessage = \"Queue Message\",\n Sql = \"SQL\",\n Http = \"Http\",\n Grpc = \"GRPC\",\n}\n\nexport const AzureMonitorSampleRate = \"_MS.sampleRate\";\n\nexport enum StandardMetrics {\n HTTP_REQUEST_DURATION = \"azureMonitor.http.requestDuration\",\n HTTP_DEPENDENCY_DURATION = \"azureMonitor.http.dependencyDuration\",\n EXCEPTION_COUNT = \"azureMonitor.exceptionCount\",\n TRACE_COUNT = \"azureMonitor.traceCount\",\n}\n\nexport enum StandardMetricIds {\n REQUEST_DURATION = \"requests/duration\",\n DEPENDENCY_DURATION = \"dependencies/duration\",\n EXCEPTION_COUNT = \"exceptions/count\",\n TRACE_COUNT = \"traces/count\",\n}\n\nexport type MetricDimensionTypeKeys =\n | \"cloudRoleInstance\"\n | \"cloudRoleName\"\n | \"requestSuccess\"\n | \"requestResultCode\"\n | \"dependencyType\"\n | \"dependencyTarget\"\n | \"dependencySuccess\"\n | \"dependencyResultCode\"\n | \"traceSeverityLevel\"\n | \"operationSynthetic\"\n | \"metricId\"\n | \"IsAutocollected\";\n\n// Names expected in Breeze side for dimensions\nexport const PreAggregatedMetricPropertyNames: { [key in MetricDimensionTypeKeys]: string } = {\n cloudRoleInstance: \"cloud/roleInstance\",\n cloudRoleName: \"cloud/roleName\",\n operationSynthetic: \"operation/synthetic\",\n requestSuccess: \"Request.Success\",\n requestResultCode: \"request/resultCode\",\n dependencyType: \"Dependency.Type\",\n dependencyTarget: \"dependency/target\",\n dependencySuccess: \"Dependency.Success\",\n dependencyResultCode: \"dependency/resultCode\",\n traceSeverityLevel: \"trace/severityLevel\",\n metricId: \"_MS.MetricId\",\n IsAutocollected: \"_MS.IsAutocollected\",\n};\n"]}
1
+ {"version":3,"file":"applicationinsights.js","sourceRoot":"","sources":["../../../../src/utils/constants/applicationinsights.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAC;AACpC;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,cAAc,CAAC;AAC5C;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AACvD;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC;AAE9C,MAAM,CAAN,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,oCAAiB,CAAA;IACjB,iDAA8B,CAAA;IAC9B,8BAAW,CAAA;IACX,gCAAa,CAAA;IACb,gCAAa,CAAA;AACf,CAAC,EANW,eAAe,KAAf,eAAe,QAM1B;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,gBAAgB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * AI MS Links.\n * @internal\n */\nexport const MS_LINKS = \"_MS.links\";\n/**\n * AI enqueued time attribute.\n * @internal\n */\nexport const ENQUEUED_TIME = \"enqueuedTime\";\n/**\n * AI time since enqueued attribute.\n * @internal\n */\nexport const TIME_SINCE_ENQUEUED = \"timeSinceEnqueued\";\n/**\n * AzureMonitorTraceExporter version.\n * @internal\n */\nexport const packageVersion = \"1.0.0-beta.12\";\n\nexport enum DependencyTypes {\n InProc = \"InProc\",\n QueueMessage = \"Queue Message\",\n Sql = \"SQL\",\n Http = \"Http\",\n Grpc = \"GRPC\",\n}\n\nexport const AzureMonitorSampleRate = \"_MS.sampleRate\";\n"]}
@@ -1,9 +1,7 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
3
  import { DataPointType } from "@opentelemetry/sdk-metrics";
4
- import { KnownContextTagKeys, } from "../generated";
5
- import { PreAggregatedMetricPropertyNames, StandardMetricIds, StandardMetrics, } from "./constants/applicationinsights";
6
- import { createTagsFromResource, getDependencyTarget } from "./common";
4
+ import { createTagsFromResource } from "./common";
7
5
  function createPropertiesFromMetricAttributes(attributes) {
8
6
  const properties = {};
9
7
  if (attributes) {
@@ -31,20 +29,13 @@ export function resourceMetricsToEnvelope(metrics, ikey, isStatsbeat) {
31
29
  }
32
30
  metrics.scopeMetrics.forEach((scopeMetric) => {
33
31
  scopeMetric.metrics.forEach((metric) => {
34
- var _a, _b;
35
- const isStandardMetric = (_b = (_a = metric.descriptor) === null || _a === void 0 ? void 0 : _a.name) === null || _b === void 0 ? void 0 : _b.startsWith("azureMonitor.");
36
32
  metric.dataPoints.forEach((dataPoint) => {
37
33
  let baseData = {
38
34
  metrics: [],
39
35
  version: 2,
40
36
  properties: {},
41
37
  };
42
- if (isStandardMetric) {
43
- baseData.properties = createStandardMetricsProperties(metric.descriptor.name, dataPoint.attributes, tags);
44
- }
45
- else {
46
- baseData.properties = createPropertiesFromMetricAttributes(dataPoint.attributes);
47
- }
38
+ baseData.properties = createPropertiesFromMetricAttributes(dataPoint.attributes);
48
39
  var metricDataPoint = {
49
40
  name: metric.descriptor.name,
50
41
  value: 0,
@@ -80,35 +71,4 @@ export function resourceMetricsToEnvelope(metrics, ikey, isStatsbeat) {
80
71
  });
81
72
  return envelopes;
82
73
  }
83
- function createStandardMetricsProperties(name, attributes, tags) {
84
- const properties = {};
85
- properties[PreAggregatedMetricPropertyNames.IsAutocollected] = "True";
86
- properties[PreAggregatedMetricPropertyNames.cloudRoleInstance] =
87
- tags[KnownContextTagKeys.AiCloudRoleInstance];
88
- properties[PreAggregatedMetricPropertyNames.cloudRoleName] =
89
- tags[KnownContextTagKeys.AiCloudRole];
90
- if (name == StandardMetrics.HTTP_REQUEST_DURATION) {
91
- properties[PreAggregatedMetricPropertyNames.metricId] = StandardMetricIds.REQUEST_DURATION;
92
- let statusCode = String(attributes["http.status_code"]);
93
- properties[PreAggregatedMetricPropertyNames.requestResultCode] = statusCode;
94
- properties[PreAggregatedMetricPropertyNames.requestSuccess] =
95
- statusCode == "200" ? "True" : "False";
96
- }
97
- else if (name == StandardMetrics.HTTP_DEPENDENCY_DURATION) {
98
- properties[PreAggregatedMetricPropertyNames.metricId] = StandardMetricIds.DEPENDENCY_DURATION;
99
- let statusCode = String(attributes["http.status_code"]);
100
- properties[PreAggregatedMetricPropertyNames.dependencyTarget] = getDependencyTarget(attributes);
101
- properties[PreAggregatedMetricPropertyNames.dependencyResultCode] = statusCode;
102
- properties[PreAggregatedMetricPropertyNames.dependencyType] = "http";
103
- properties[PreAggregatedMetricPropertyNames.dependencySuccess] =
104
- statusCode == "200" ? "True" : "False";
105
- }
106
- else if (name == StandardMetrics.TRACE_COUNT) {
107
- properties[PreAggregatedMetricPropertyNames.metricId] = StandardMetricIds.TRACE_COUNT;
108
- }
109
- else if (name == StandardMetrics.EXCEPTION_COUNT) {
110
- properties[PreAggregatedMetricPropertyNames.metricId] = StandardMetricIds.EXCEPTION_COUNT;
111
- }
112
- return properties;
113
- }
114
74
  //# sourceMappingURL=metricUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metricUtils.js","sourceRoot":"","sources":["../../../src/utils/metricUtils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { Attributes } from \"@opentelemetry/api\";\nimport { DataPointType, Histogram, ResourceMetrics } from \"@opentelemetry/sdk-metrics\";\nimport {\n TelemetryItem as Envelope,\n MetricsData,\n MetricDataPoint,\n KnownContextTagKeys,\n} from \"../generated\";\nimport { Tags } from \"../types\";\nimport {\n PreAggregatedMetricPropertyNames,\n StandardMetricIds,\n StandardMetrics,\n} from \"./constants/applicationinsights\";\nimport { createTagsFromResource, getDependencyTarget } from \"./common\";\n\nfunction createPropertiesFromMetricAttributes(attributes?: Attributes): {\n [propertyName: string]: string;\n} {\n const properties: { [propertyName: string]: string } = {};\n if (attributes) {\n for (const key of Object.keys(attributes)) {\n properties[key] = attributes[key] as string;\n }\n }\n return properties;\n}\n\n/**\n * Metric to Azure envelope parsing.\n * @internal\n */\nexport function resourceMetricsToEnvelope(\n metrics: ResourceMetrics,\n ikey: string,\n isStatsbeat?: boolean\n): Envelope[] {\n let envelopes: Envelope[] = [];\n const time = new Date();\n const instrumentationKey = ikey;\n const tags = createTagsFromResource(metrics.resource);\n let envelopeName: string;\n\n if (isStatsbeat) {\n envelopeName = \"Microsoft.ApplicationInsights.Statsbeat\";\n } else {\n envelopeName = \"Microsoft.ApplicationInsights.Metric\";\n }\n\n metrics.scopeMetrics.forEach((scopeMetric) => {\n scopeMetric.metrics.forEach((metric) => {\n const isStandardMetric = metric.descriptor?.name?.startsWith(\"azureMonitor.\");\n metric.dataPoints.forEach((dataPoint) => {\n let baseData: MetricsData = {\n metrics: [],\n version: 2,\n properties: {},\n };\n if (isStandardMetric) {\n baseData.properties = createStandardMetricsProperties(\n metric.descriptor.name,\n dataPoint.attributes,\n tags\n );\n } else {\n baseData.properties = createPropertiesFromMetricAttributes(dataPoint.attributes);\n }\n var metricDataPoint: MetricDataPoint = {\n name: metric.descriptor.name,\n value: 0,\n dataPointType: \"Aggregation\",\n };\n if (\n metric.dataPointType == DataPointType.SUM ||\n metric.dataPointType == DataPointType.GAUGE\n ) {\n metricDataPoint.value = dataPoint.value as number;\n metricDataPoint.count = 1;\n } else {\n metricDataPoint.value = (dataPoint.value as Histogram).sum || 0;\n metricDataPoint.count = (dataPoint.value as Histogram).count;\n metricDataPoint.max = (dataPoint.value as Histogram).max;\n metricDataPoint.min = (dataPoint.value as Histogram).min;\n }\n baseData.metrics.push(metricDataPoint);\n let envelope: Envelope = {\n name: envelopeName,\n time: time,\n sampleRate: 100, // Metrics are never sampled\n instrumentationKey: instrumentationKey,\n tags: tags,\n version: 1,\n data: {\n baseType: \"MetricData\",\n baseData: {\n ...baseData,\n },\n },\n };\n envelopes.push(envelope);\n });\n });\n });\n\n return envelopes;\n}\n\nfunction createStandardMetricsProperties(\n name: string,\n attributes: Attributes,\n tags: Tags\n): {\n [propertyName: string]: string;\n} {\n const properties: { [propertyName: string]: string } = {};\n properties[PreAggregatedMetricPropertyNames.IsAutocollected] = \"True\";\n properties[PreAggregatedMetricPropertyNames.cloudRoleInstance] =\n tags[KnownContextTagKeys.AiCloudRoleInstance];\n properties[PreAggregatedMetricPropertyNames.cloudRoleName] =\n tags[KnownContextTagKeys.AiCloudRole];\n\n if (name == StandardMetrics.HTTP_REQUEST_DURATION) {\n properties[PreAggregatedMetricPropertyNames.metricId] = StandardMetricIds.REQUEST_DURATION;\n let statusCode = String(attributes[\"http.status_code\"]);\n properties[PreAggregatedMetricPropertyNames.requestResultCode] = statusCode;\n properties[PreAggregatedMetricPropertyNames.requestSuccess] =\n statusCode == \"200\" ? \"True\" : \"False\";\n } else if (name == StandardMetrics.HTTP_DEPENDENCY_DURATION) {\n properties[PreAggregatedMetricPropertyNames.metricId] = StandardMetricIds.DEPENDENCY_DURATION;\n let statusCode = String(attributes[\"http.status_code\"]);\n properties[PreAggregatedMetricPropertyNames.dependencyTarget] = getDependencyTarget(attributes);\n properties[PreAggregatedMetricPropertyNames.dependencyResultCode] = statusCode;\n properties[PreAggregatedMetricPropertyNames.dependencyType] = \"http\";\n properties[PreAggregatedMetricPropertyNames.dependencySuccess] =\n statusCode == \"200\" ? \"True\" : \"False\";\n } else if (name == StandardMetrics.TRACE_COUNT) {\n properties[PreAggregatedMetricPropertyNames.metricId] = StandardMetricIds.TRACE_COUNT;\n } else if (name == StandardMetrics.EXCEPTION_COUNT) {\n properties[PreAggregatedMetricPropertyNames.metricId] = StandardMetricIds.EXCEPTION_COUNT;\n }\n\n return properties;\n}\n"]}
1
+ {"version":3,"file":"metricUtils.js","sourceRoot":"","sources":["../../../src/utils/metricUtils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { Attributes } from \"@opentelemetry/api\";\nimport { DataPointType, Histogram, ResourceMetrics } from \"@opentelemetry/sdk-metrics\";\nimport { TelemetryItem as Envelope, MetricsData, MetricDataPoint } from \"../generated\";\nimport { createTagsFromResource } from \"./common\";\n\nfunction createPropertiesFromMetricAttributes(attributes?: Attributes): {\n [propertyName: string]: string;\n} {\n const properties: { [propertyName: string]: string } = {};\n if (attributes) {\n for (const key of Object.keys(attributes)) {\n properties[key] = attributes[key] as string;\n }\n }\n return properties;\n}\n\n/**\n * Metric to Azure envelope parsing.\n * @internal\n */\nexport function resourceMetricsToEnvelope(\n metrics: ResourceMetrics,\n ikey: string,\n isStatsbeat?: boolean\n): Envelope[] {\n let envelopes: Envelope[] = [];\n const time = new Date();\n const instrumentationKey = ikey;\n const tags = createTagsFromResource(metrics.resource);\n let envelopeName: string;\n\n if (isStatsbeat) {\n envelopeName = \"Microsoft.ApplicationInsights.Statsbeat\";\n } else {\n envelopeName = \"Microsoft.ApplicationInsights.Metric\";\n }\n\n metrics.scopeMetrics.forEach((scopeMetric) => {\n scopeMetric.metrics.forEach((metric) => {\n metric.dataPoints.forEach((dataPoint) => {\n let baseData: MetricsData = {\n metrics: [],\n version: 2,\n properties: {},\n };\n baseData.properties = createPropertiesFromMetricAttributes(dataPoint.attributes);\n var metricDataPoint: MetricDataPoint = {\n name: metric.descriptor.name,\n value: 0,\n dataPointType: \"Aggregation\",\n };\n if (\n metric.dataPointType == DataPointType.SUM ||\n metric.dataPointType == DataPointType.GAUGE\n ) {\n metricDataPoint.value = dataPoint.value as number;\n metricDataPoint.count = 1;\n } else {\n metricDataPoint.value = (dataPoint.value as Histogram).sum || 0;\n metricDataPoint.count = (dataPoint.value as Histogram).count;\n metricDataPoint.max = (dataPoint.value as Histogram).max;\n metricDataPoint.min = (dataPoint.value as Histogram).min;\n }\n baseData.metrics.push(metricDataPoint);\n let envelope: Envelope = {\n name: envelopeName,\n time: time,\n sampleRate: 100, // Metrics are never sampled\n instrumentationKey: instrumentationKey,\n tags: tags,\n version: 1,\n data: {\n baseType: \"MetricData\",\n baseData: {\n ...baseData,\n },\n },\n };\n envelopes.push(envelope);\n });\n });\n });\n\n return envelopes;\n}\n"]}
@@ -34,7 +34,7 @@ function createTagsFromSpan(span) {
34
34
  }
35
35
  else if (httpUrl) {
36
36
  try {
37
- let url = new URL(String(httpUrl));
37
+ const url = new URL(String(httpUrl));
38
38
  tags[KnownContextTagKeys.AiOperationName] = `${httpMethod} ${url.pathname}`;
39
39
  }
40
40
  catch (ex) { }
@@ -60,19 +60,23 @@ function createPropertiesFromSpanAttributes(attributes) {
60
60
  const properties = {};
61
61
  if (attributes) {
62
62
  for (const key of Object.keys(attributes)) {
63
- if (!(key.startsWith("http.") ||
64
- key.startsWith("rpc.") ||
65
- key.startsWith("db.") ||
66
- key.startsWith("peer.") ||
67
- key.startsWith("message.") ||
68
- key.startsWith("messaging.") ||
69
- key.startsWith("enduser.") ||
70
- key.startsWith("net.") ||
71
- key.startsWith("exception.") ||
72
- key.startsWith("thread.") ||
73
- key.startsWith("faas.") ||
74
- key.startsWith("code.") ||
75
- key.startsWith("_MS."))) {
63
+ // Avoid duplication ignoring fields already mapped.
64
+ if (!(key.startsWith("_MS.") ||
65
+ key == SemanticAttributes.NET_PEER_IP ||
66
+ key == SemanticAttributes.NET_PEER_NAME ||
67
+ key == SemanticAttributes.PEER_SERVICE ||
68
+ key == SemanticAttributes.HTTP_METHOD ||
69
+ key == SemanticAttributes.HTTP_URL ||
70
+ key == SemanticAttributes.HTTP_STATUS_CODE ||
71
+ key == SemanticAttributes.HTTP_ROUTE ||
72
+ key == SemanticAttributes.HTTP_HOST ||
73
+ key == SemanticAttributes.HTTP_URL ||
74
+ key == SemanticAttributes.DB_SYSTEM ||
75
+ key == SemanticAttributes.DB_STATEMENT ||
76
+ key == SemanticAttributes.DB_OPERATION ||
77
+ key == SemanticAttributes.DB_NAME ||
78
+ key == SemanticAttributes.RPC_SYSTEM ||
79
+ key == SemanticAttributes.RPC_GRPC_STATUS_CODE)) {
76
80
  properties[key] = attributes[key];
77
81
  }
78
82
  }
@@ -115,7 +119,7 @@ function createDependencyData(span) {
115
119
  const httpUrl = span.attributes[SemanticAttributes.HTTP_URL];
116
120
  if (httpUrl) {
117
121
  try {
118
- let dependencyUrl = new URL(String(httpUrl));
122
+ const dependencyUrl = new URL(String(httpUrl));
119
123
  remoteDependencyData.name = `${httpMethod} ${dependencyUrl.pathname}`;
120
124
  }
121
125
  catch (ex) { }
@@ -130,11 +134,11 @@ function createDependencyData(span) {
130
134
  if (target) {
131
135
  try {
132
136
  // Remove default port
133
- let portRegex = new RegExp(/(https?)(:\/\/.*)(:\d+)(\S*)/);
134
- let res = portRegex.exec(target);
137
+ const portRegex = new RegExp(/(https?)(:\/\/.*)(:\d+)(\S*)/);
138
+ const res = portRegex.exec(target);
135
139
  if (res != null) {
136
- let protocol = res[1];
137
- let port = res[3];
140
+ const protocol = res[1];
141
+ const port = res[3];
138
142
  if ((protocol == "https" && port == ":443") || (protocol == "http" && port == ":80")) {
139
143
  // Drop port
140
144
  target = res[1] + res[2] + res[4];
@@ -174,7 +178,7 @@ function createDependencyData(span) {
174
178
  else if (dbOperation) {
175
179
  remoteDependencyData.data = String(dbOperation);
176
180
  }
177
- let target = getDependencyTarget(span.attributes);
181
+ const target = getDependencyTarget(span.attributes);
178
182
  const dbName = span.attributes[SemanticAttributes.DB_NAME];
179
183
  if (target) {
180
184
  remoteDependencyData.target = dbName ? `${target}|${dbName}` : `${target}`;
@@ -190,7 +194,7 @@ function createDependencyData(span) {
190
194
  if (grpcStatusCode) {
191
195
  remoteDependencyData.resultCode = String(grpcStatusCode);
192
196
  }
193
- let target = getDependencyTarget(span.attributes);
197
+ const target = getDependencyTarget(span.attributes);
194
198
  if (target) {
195
199
  remoteDependencyData.target = `${target}`;
196
200
  }
@@ -287,18 +291,18 @@ export function readableSpanToEnvelope(span, ikey) {
287
291
  * @internal
288
292
  */
289
293
  export function spanEventsToEnvelopes(span, ikey) {
290
- let envelopes = [];
294
+ const envelopes = [];
291
295
  if (span.events) {
292
296
  span.events.forEach((event) => {
293
297
  var _a;
294
298
  let baseType;
295
- let time = new Date(hrTimeToMilliseconds(event.time));
299
+ const time = new Date(hrTimeToMilliseconds(event.time));
296
300
  let name = "";
297
301
  let baseData;
298
302
  const properties = createPropertiesFromSpanAttributes(event.attributes);
299
- let tags = createTagsFromResource(span.resource);
303
+ const tags = createTagsFromResource(span.resource);
300
304
  tags[KnownContextTagKeys.AiOperationId] = span.spanContext().traceId;
301
- let spanId = (_a = span.spanContext()) === null || _a === void 0 ? void 0 : _a.spanId;
305
+ const spanId = (_a = span.spanContext()) === null || _a === void 0 ? void 0 : _a.spanId;
302
306
  if (spanId) {
303
307
  tags[KnownContextTagKeys.AiOperationParentId] = spanId;
304
308
  }
@@ -316,22 +320,22 @@ export function spanEventsToEnvelopes(span, ikey) {
316
320
  if (stack) {
317
321
  hasFullStack = true;
318
322
  }
319
- let exceptionMsg = event.attributes[SemanticAttributes.EXCEPTION_MESSAGE];
323
+ const exceptionMsg = event.attributes[SemanticAttributes.EXCEPTION_MESSAGE];
320
324
  if (exceptionMsg) {
321
325
  message = String(exceptionMsg);
322
326
  }
323
- let escaped = event.attributes[SemanticAttributes.EXCEPTION_ESCAPED];
327
+ const escaped = event.attributes[SemanticAttributes.EXCEPTION_ESCAPED];
324
328
  if (escaped != undefined) {
325
329
  properties[SemanticAttributes.EXCEPTION_ESCAPED] = String(escaped);
326
330
  }
327
331
  }
328
- let exceptionDetails = {
332
+ const exceptionDetails = {
329
333
  typeName: typeName,
330
334
  message: message,
331
335
  stack: stack,
332
336
  hasFullStack: hasFullStack,
333
337
  };
334
- let exceptionData = {
338
+ const exceptionData = {
335
339
  exceptions: [exceptionDetails],
336
340
  version: 2,
337
341
  properties: properties,
@@ -341,7 +345,7 @@ export function spanEventsToEnvelopes(span, ikey) {
341
345
  else {
342
346
  name = "Microsoft.ApplicationInsights.Message";
343
347
  baseType = "MessageData";
344
- let messageData = {
348
+ const messageData = {
345
349
  message: event.name,
346
350
  version: 2,
347
351
  properties: properties,
@@ -352,7 +356,7 @@ export function spanEventsToEnvelopes(span, ikey) {
352
356
  if (span.attributes[AzureMonitorSampleRate]) {
353
357
  sampleRate = Number(span.attributes[AzureMonitorSampleRate]);
354
358
  }
355
- let env = {
359
+ const env = {
356
360
  name: name,
357
361
  time: time,
358
362
  instrumentationKey: ikey,
@@ -1 +1 @@
1
- {"version":3,"file":"spanUtils.js","sourceRoot":"","sources":["../../../src/utils/spanUtils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { URL } from \"url\";\nimport { ReadableSpan, TimedEvent } from \"@opentelemetry/sdk-trace-base\";\nimport { hrTimeToMilliseconds } from \"@opentelemetry/core\";\nimport { diag, SpanKind, SpanStatusCode, Link, Attributes } from \"@opentelemetry/api\";\nimport { SemanticAttributes, DbSystemValues } from \"@opentelemetry/semantic-conventions\";\n\nimport { createTagsFromResource, getDependencyTarget, getUrl, isSqlDB } from \"./common\";\nimport { Tags, Properties, MSLink, Measurements } from \"../types\";\nimport { msToTimeSpan } from \"./breezeUtils\";\nimport { parseEventHubSpan } from \"./eventhub\";\nimport { AzureMonitorSampleRate, DependencyTypes, MS_LINKS } from \"./constants/applicationinsights\";\nimport { AzNamespace, MicrosoftEventHub } from \"./constants/span/azAttributes\";\nimport {\n TelemetryExceptionData,\n MessageData,\n RemoteDependencyData,\n RequestData,\n TelemetryItem as Envelope,\n KnownContextTagKeys,\n TelemetryExceptionDetails,\n} from \"../generated\";\n\nfunction createTagsFromSpan(span: ReadableSpan): Tags {\n const tags: Tags = createTagsFromResource(span.resource);\n tags[KnownContextTagKeys.AiOperationId] = span.spanContext().traceId;\n if (span.parentSpanId) {\n tags[KnownContextTagKeys.AiOperationParentId] = span.parentSpanId;\n }\n const httpUserAgent = span.attributes[SemanticAttributes.HTTP_USER_AGENT];\n if (httpUserAgent) {\n // TODO: Not exposed in Swagger, need to update def\n tags[\"ai.user.userAgent\"] = String(httpUserAgent);\n }\n if (span.kind === SpanKind.SERVER) {\n const httpMethod = span.attributes[SemanticAttributes.HTTP_METHOD];\n const httpClientIp = span.attributes[SemanticAttributes.HTTP_CLIENT_IP];\n const netPeerIp = span.attributes[SemanticAttributes.NET_PEER_IP];\n if (httpMethod) {\n const httpRoute = span.attributes[SemanticAttributes.HTTP_ROUTE];\n const httpUrl = span.attributes[SemanticAttributes.HTTP_URL];\n tags[KnownContextTagKeys.AiOperationName] = span.name; // Default\n if (httpRoute) {\n tags[KnownContextTagKeys.AiOperationName] = `${httpMethod as string} ${\n httpRoute as string\n }`;\n } else if (httpUrl) {\n try {\n let url = new URL(String(httpUrl));\n tags[KnownContextTagKeys.AiOperationName] = `${httpMethod} ${url.pathname}`;\n } catch (ex: any) {}\n }\n if (httpClientIp) {\n tags[KnownContextTagKeys.AiLocationIp] = String(httpClientIp);\n } else if (netPeerIp) {\n tags[KnownContextTagKeys.AiLocationIp] = String(netPeerIp);\n }\n } else {\n tags[KnownContextTagKeys.AiOperationName] = span.name;\n if (netPeerIp) {\n tags[KnownContextTagKeys.AiLocationIp] = String(netPeerIp);\n }\n }\n }\n // TODO: Operation Name and Location IP TBD for non server spans\n\n return tags;\n}\n\nfunction createPropertiesFromSpanAttributes(attributes?: Attributes): {\n [propertyName: string]: string;\n} {\n const properties: { [propertyName: string]: string } = {};\n if (attributes) {\n for (const key of Object.keys(attributes)) {\n if (\n !(\n key.startsWith(\"http.\") ||\n key.startsWith(\"rpc.\") ||\n key.startsWith(\"db.\") ||\n key.startsWith(\"peer.\") ||\n key.startsWith(\"message.\") ||\n key.startsWith(\"messaging.\") ||\n key.startsWith(\"enduser.\") ||\n key.startsWith(\"net.\") ||\n key.startsWith(\"exception.\") ||\n key.startsWith(\"thread.\") ||\n key.startsWith(\"faas.\") ||\n key.startsWith(\"code.\") ||\n key.startsWith(\"_MS.\")\n )\n ) {\n properties[key] = attributes[key] as string;\n }\n }\n }\n return properties;\n}\n\nfunction createPropertiesFromSpan(span: ReadableSpan): [Properties, Measurements] {\n const properties: Properties = createPropertiesFromSpanAttributes(span.attributes);\n const measurements: Measurements = {};\n\n const links: MSLink[] = span.links.map((link: Link) => ({\n operation_Id: link.context.traceId,\n id: link.context.spanId,\n }));\n if (links.length > 0) {\n properties[MS_LINKS] = JSON.stringify(links);\n }\n return [properties, measurements];\n}\n\nfunction createDependencyData(span: ReadableSpan): RemoteDependencyData {\n const remoteDependencyData: RemoteDependencyData = {\n name: span.name, //Default\n id: `${span.spanContext().spanId}`,\n success: span.status.code != SpanStatusCode.ERROR,\n resultCode: \"0\",\n type: \"Dependency\",\n duration: msToTimeSpan(hrTimeToMilliseconds(span.duration)),\n version: 2,\n };\n if (span.kind === SpanKind.PRODUCER) {\n remoteDependencyData.type = DependencyTypes.QueueMessage;\n }\n if (span.kind === SpanKind.INTERNAL && span.parentSpanId) {\n remoteDependencyData.type = DependencyTypes.InProc;\n }\n\n const httpMethod = span.attributes[SemanticAttributes.HTTP_METHOD];\n const dbSystem = span.attributes[SemanticAttributes.DB_SYSTEM];\n const rpcSystem = span.attributes[SemanticAttributes.RPC_SYSTEM];\n // HTTP Dependency\n if (httpMethod) {\n const httpUrl = span.attributes[SemanticAttributes.HTTP_URL];\n if (httpUrl) {\n try {\n let dependencyUrl = new URL(String(httpUrl));\n remoteDependencyData.name = `${httpMethod} ${dependencyUrl.pathname}`;\n } catch (ex: any) {}\n }\n remoteDependencyData.type = DependencyTypes.Http;\n remoteDependencyData.data = getUrl(span.attributes);\n const httpStatusCode = span.attributes[SemanticAttributes.HTTP_STATUS_CODE];\n if (httpStatusCode) {\n remoteDependencyData.resultCode = String(httpStatusCode);\n }\n let target = getDependencyTarget(span.attributes);\n if (target) {\n try {\n // Remove default port\n let portRegex = new RegExp(/(https?)(:\\/\\/.*)(:\\d+)(\\S*)/);\n let res = portRegex.exec(target);\n if (res != null) {\n let protocol = res[1];\n let port = res[3];\n if ((protocol == \"https\" && port == \":443\") || (protocol == \"http\" && port == \":80\")) {\n // Drop port\n target = res[1] + res[2] + res[4];\n }\n }\n } catch (ex: any) {}\n remoteDependencyData.target = `${target}`;\n }\n }\n // DB Dependency\n else if (dbSystem) {\n // TODO: Remove special logic when Azure UX supports OpenTelemetry dbSystem\n if (String(dbSystem) === DbSystemValues.MYSQL) {\n remoteDependencyData.type = \"mysql\";\n } else if (String(dbSystem) === DbSystemValues.POSTGRESQL) {\n remoteDependencyData.type = \"postgresql\";\n } else if (String(dbSystem) === DbSystemValues.MONGODB) {\n remoteDependencyData.type = \"mongodb\";\n } else if (String(dbSystem) === DbSystemValues.REDIS) {\n remoteDependencyData.type = \"redis\";\n } else if (isSqlDB(String(dbSystem))) {\n remoteDependencyData.type = \"SQL\";\n } else {\n remoteDependencyData.type = String(dbSystem);\n }\n const dbStatement = span.attributes[SemanticAttributes.DB_STATEMENT];\n const dbOperation = span.attributes[SemanticAttributes.DB_OPERATION];\n if (dbStatement) {\n remoteDependencyData.data = String(dbStatement);\n } else if (dbOperation) {\n remoteDependencyData.data = String(dbOperation);\n }\n let target = getDependencyTarget(span.attributes);\n const dbName = span.attributes[SemanticAttributes.DB_NAME];\n if (target) {\n remoteDependencyData.target = dbName ? `${target}|${dbName}` : `${target}`;\n } else {\n remoteDependencyData.target = dbName ? `${dbName}` : `${dbSystem}`;\n }\n }\n // grpc Dependency\n else if (rpcSystem) {\n remoteDependencyData.type = DependencyTypes.Grpc;\n const grpcStatusCode = span.attributes[SemanticAttributes.RPC_GRPC_STATUS_CODE];\n if (grpcStatusCode) {\n remoteDependencyData.resultCode = String(grpcStatusCode);\n }\n let target = getDependencyTarget(span.attributes);\n if (target) {\n remoteDependencyData.target = `${target}`;\n } else if (rpcSystem) {\n remoteDependencyData.target = String(rpcSystem);\n }\n }\n return remoteDependencyData;\n}\n\nfunction createRequestData(span: ReadableSpan): RequestData {\n const requestData: RequestData = {\n id: `${span.spanContext().spanId}`,\n success: span.status.code != SpanStatusCode.ERROR,\n responseCode: \"0\",\n duration: msToTimeSpan(hrTimeToMilliseconds(span.duration)),\n version: 2,\n source: undefined,\n };\n const httpMethod = span.attributes[SemanticAttributes.HTTP_METHOD];\n const grpcStatusCode = span.attributes[SemanticAttributes.RPC_GRPC_STATUS_CODE];\n if (httpMethod) {\n requestData.url = getUrl(span.attributes);\n const httpStatusCode = span.attributes[SemanticAttributes.HTTP_STATUS_CODE];\n if (httpStatusCode) {\n requestData.responseCode = String(httpStatusCode);\n }\n } else if (grpcStatusCode) {\n requestData.responseCode = String(grpcStatusCode);\n }\n return requestData;\n}\n\n/**\n * Span to Azure envelope parsing.\n * @internal\n */\nexport function readableSpanToEnvelope(span: ReadableSpan, ikey: string): Envelope {\n let name: string;\n let baseType: \"RemoteDependencyData\" | \"RequestData\";\n let baseData: RemoteDependencyData | RequestData;\n\n const time = new Date(hrTimeToMilliseconds(span.startTime));\n const instrumentationKey = ikey;\n const tags = createTagsFromSpan(span);\n const [properties, measurements] = createPropertiesFromSpan(span);\n switch (span.kind) {\n case SpanKind.CLIENT:\n case SpanKind.PRODUCER:\n case SpanKind.INTERNAL:\n name = \"Microsoft.ApplicationInsights.RemoteDependency\";\n baseType = \"RemoteDependencyData\";\n baseData = createDependencyData(span);\n break;\n case SpanKind.SERVER:\n case SpanKind.CONSUMER:\n name = \"Microsoft.ApplicationInsights.Request\";\n baseType = \"RequestData\";\n baseData = createRequestData(span);\n baseData.name = tags[KnownContextTagKeys.AiOperationName];\n break;\n default:\n // never\n diag.error(`Unsupported span kind ${span.kind}`);\n throw new Error(`Unsupported span kind ${span.kind}`);\n }\n\n let sampleRate = 100;\n if (span.attributes[AzureMonitorSampleRate]) {\n sampleRate = Number(span.attributes[AzureMonitorSampleRate]);\n }\n\n // Azure SDK\n if (span.attributes[AzNamespace]) {\n if (span.kind === SpanKind.INTERNAL) {\n baseData.type = `${DependencyTypes.InProc} | ${span.attributes[AzNamespace]}`;\n }\n if (span.attributes[AzNamespace] === MicrosoftEventHub) {\n parseEventHubSpan(span, baseData);\n }\n }\n\n return {\n name,\n sampleRate,\n time,\n instrumentationKey,\n tags,\n version: 1,\n data: {\n baseType,\n baseData: {\n ...baseData,\n properties,\n measurements,\n },\n },\n };\n}\n\n/**\n * Span Events to Azure envelopes parsing.\n * @internal\n */\nexport function spanEventsToEnvelopes(span: ReadableSpan, ikey: string): Envelope[] {\n let envelopes: Envelope[] = [];\n if (span.events) {\n span.events.forEach((event: TimedEvent) => {\n let baseType: \"ExceptionData\" | \"MessageData\";\n let time = new Date(hrTimeToMilliseconds(event.time));\n let name = \"\";\n let baseData: TelemetryExceptionData | MessageData;\n const properties = createPropertiesFromSpanAttributes(event.attributes);\n\n let tags: Tags = createTagsFromResource(span.resource);\n tags[KnownContextTagKeys.AiOperationId] = span.spanContext().traceId;\n let spanId = span.spanContext()?.spanId;\n if (spanId) {\n tags[KnownContextTagKeys.AiOperationParentId] = spanId;\n }\n\n // Only generate exception telemetry for incoming requests\n if (event.name == \"exception\" && span.kind == SpanKind.SERVER) {\n name = \"Microsoft.ApplicationInsights.Exception\";\n baseType = \"ExceptionData\";\n let typeName = \"\";\n let message = \"Exception\";\n let stack = \"\";\n let hasFullStack = false;\n if (event.attributes) {\n typeName = String(event.attributes[SemanticAttributes.EXCEPTION_TYPE]);\n stack = String(event.attributes[SemanticAttributes.EXCEPTION_STACKTRACE]);\n if (stack) {\n hasFullStack = true;\n }\n let exceptionMsg = event.attributes[SemanticAttributes.EXCEPTION_MESSAGE];\n if (exceptionMsg) {\n message = String(exceptionMsg);\n }\n let escaped = event.attributes[SemanticAttributes.EXCEPTION_ESCAPED];\n if (escaped != undefined) {\n properties[SemanticAttributes.EXCEPTION_ESCAPED] = String(escaped);\n }\n }\n let exceptionDetails: TelemetryExceptionDetails = {\n typeName: typeName,\n message: message,\n stack: stack,\n hasFullStack: hasFullStack,\n };\n let exceptionData: TelemetryExceptionData = {\n exceptions: [exceptionDetails],\n version: 2,\n properties: properties,\n };\n baseData = exceptionData;\n } else {\n name = \"Microsoft.ApplicationInsights.Message\";\n baseType = \"MessageData\";\n let messageData: MessageData = {\n message: event.name,\n version: 2,\n properties: properties,\n };\n baseData = messageData;\n }\n let sampleRate = 100;\n if (span.attributes[AzureMonitorSampleRate]) {\n sampleRate = Number(span.attributes[AzureMonitorSampleRate]);\n }\n let env: Envelope = {\n name: name,\n time: time,\n instrumentationKey: ikey,\n version: 1,\n sampleRate: sampleRate,\n data: {\n baseType: baseType,\n baseData: baseData,\n },\n tags: tags,\n };\n envelopes.push(env);\n });\n }\n return envelopes;\n}\n"]}
1
+ {"version":3,"file":"spanUtils.js","sourceRoot":"","sources":["../../../src/utils/spanUtils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { URL } from \"url\";\nimport { ReadableSpan, TimedEvent } from \"@opentelemetry/sdk-trace-base\";\nimport { hrTimeToMilliseconds } from \"@opentelemetry/core\";\nimport { diag, SpanKind, SpanStatusCode, Link, Attributes } from \"@opentelemetry/api\";\nimport { SemanticAttributes, DbSystemValues } from \"@opentelemetry/semantic-conventions\";\n\nimport { createTagsFromResource, getDependencyTarget, getUrl, isSqlDB } from \"./common\";\nimport { Tags, Properties, MSLink, Measurements } from \"../types\";\nimport { msToTimeSpan } from \"./breezeUtils\";\nimport { parseEventHubSpan } from \"./eventhub\";\nimport { AzureMonitorSampleRate, DependencyTypes, MS_LINKS } from \"./constants/applicationinsights\";\nimport { AzNamespace, MicrosoftEventHub } from \"./constants/span/azAttributes\";\nimport {\n TelemetryExceptionData,\n MessageData,\n RemoteDependencyData,\n RequestData,\n TelemetryItem as Envelope,\n KnownContextTagKeys,\n TelemetryExceptionDetails,\n} from \"../generated\";\n\nfunction createTagsFromSpan(span: ReadableSpan): Tags {\n const tags: Tags = createTagsFromResource(span.resource);\n tags[KnownContextTagKeys.AiOperationId] = span.spanContext().traceId;\n if (span.parentSpanId) {\n tags[KnownContextTagKeys.AiOperationParentId] = span.parentSpanId;\n }\n const httpUserAgent = span.attributes[SemanticAttributes.HTTP_USER_AGENT];\n if (httpUserAgent) {\n // TODO: Not exposed in Swagger, need to update def\n tags[\"ai.user.userAgent\"] = String(httpUserAgent);\n }\n if (span.kind === SpanKind.SERVER) {\n const httpMethod = span.attributes[SemanticAttributes.HTTP_METHOD];\n const httpClientIp = span.attributes[SemanticAttributes.HTTP_CLIENT_IP];\n const netPeerIp = span.attributes[SemanticAttributes.NET_PEER_IP];\n if (httpMethod) {\n const httpRoute = span.attributes[SemanticAttributes.HTTP_ROUTE];\n const httpUrl = span.attributes[SemanticAttributes.HTTP_URL];\n tags[KnownContextTagKeys.AiOperationName] = span.name; // Default\n if (httpRoute) {\n tags[KnownContextTagKeys.AiOperationName] = `${httpMethod as string} ${\n httpRoute as string\n }`;\n } else if (httpUrl) {\n try {\n const url = new URL(String(httpUrl));\n tags[KnownContextTagKeys.AiOperationName] = `${httpMethod} ${url.pathname}`;\n } catch (ex: any) {}\n }\n if (httpClientIp) {\n tags[KnownContextTagKeys.AiLocationIp] = String(httpClientIp);\n } else if (netPeerIp) {\n tags[KnownContextTagKeys.AiLocationIp] = String(netPeerIp);\n }\n } else {\n tags[KnownContextTagKeys.AiOperationName] = span.name;\n if (netPeerIp) {\n tags[KnownContextTagKeys.AiLocationIp] = String(netPeerIp);\n }\n }\n }\n // TODO: Operation Name and Location IP TBD for non server spans\n\n return tags;\n}\n\nfunction createPropertiesFromSpanAttributes(attributes?: Attributes): {\n [propertyName: string]: string;\n} {\n const properties: { [propertyName: string]: string } = {};\n if (attributes) {\n for (const key of Object.keys(attributes)) {\n // Avoid duplication ignoring fields already mapped.\n if (\n !(\n key.startsWith(\"_MS.\") ||\n key == SemanticAttributes.NET_PEER_IP ||\n key == SemanticAttributes.NET_PEER_NAME ||\n key == SemanticAttributes.PEER_SERVICE ||\n key == SemanticAttributes.HTTP_METHOD ||\n key == SemanticAttributes.HTTP_URL ||\n key == SemanticAttributes.HTTP_STATUS_CODE ||\n key == SemanticAttributes.HTTP_ROUTE ||\n key == SemanticAttributes.HTTP_HOST ||\n key == SemanticAttributes.HTTP_URL ||\n key == SemanticAttributes.DB_SYSTEM ||\n key == SemanticAttributes.DB_STATEMENT ||\n key == SemanticAttributes.DB_OPERATION ||\n key == SemanticAttributes.DB_NAME ||\n key == SemanticAttributes.RPC_SYSTEM ||\n key == SemanticAttributes.RPC_GRPC_STATUS_CODE\n )\n ) {\n properties[key] = attributes[key] as string;\n }\n }\n }\n return properties;\n}\n\nfunction createPropertiesFromSpan(span: ReadableSpan): [Properties, Measurements] {\n const properties: Properties = createPropertiesFromSpanAttributes(span.attributes);\n const measurements: Measurements = {};\n\n const links: MSLink[] = span.links.map((link: Link) => ({\n operation_Id: link.context.traceId,\n id: link.context.spanId,\n }));\n if (links.length > 0) {\n properties[MS_LINKS] = JSON.stringify(links);\n }\n return [properties, measurements];\n}\n\nfunction createDependencyData(span: ReadableSpan): RemoteDependencyData {\n const remoteDependencyData: RemoteDependencyData = {\n name: span.name, // Default\n id: `${span.spanContext().spanId}`,\n success: span.status.code != SpanStatusCode.ERROR,\n resultCode: \"0\",\n type: \"Dependency\",\n duration: msToTimeSpan(hrTimeToMilliseconds(span.duration)),\n version: 2,\n };\n if (span.kind === SpanKind.PRODUCER) {\n remoteDependencyData.type = DependencyTypes.QueueMessage;\n }\n if (span.kind === SpanKind.INTERNAL && span.parentSpanId) {\n remoteDependencyData.type = DependencyTypes.InProc;\n }\n\n const httpMethod = span.attributes[SemanticAttributes.HTTP_METHOD];\n const dbSystem = span.attributes[SemanticAttributes.DB_SYSTEM];\n const rpcSystem = span.attributes[SemanticAttributes.RPC_SYSTEM];\n // HTTP Dependency\n if (httpMethod) {\n const httpUrl = span.attributes[SemanticAttributes.HTTP_URL];\n if (httpUrl) {\n try {\n const dependencyUrl = new URL(String(httpUrl));\n remoteDependencyData.name = `${httpMethod} ${dependencyUrl.pathname}`;\n } catch (ex: any) {}\n }\n remoteDependencyData.type = DependencyTypes.Http;\n remoteDependencyData.data = getUrl(span.attributes);\n const httpStatusCode = span.attributes[SemanticAttributes.HTTP_STATUS_CODE];\n if (httpStatusCode) {\n remoteDependencyData.resultCode = String(httpStatusCode);\n }\n let target = getDependencyTarget(span.attributes);\n if (target) {\n try {\n // Remove default port\n const portRegex = new RegExp(/(https?)(:\\/\\/.*)(:\\d+)(\\S*)/);\n const res = portRegex.exec(target);\n if (res != null) {\n const protocol = res[1];\n const port = res[3];\n if ((protocol == \"https\" && port == \":443\") || (protocol == \"http\" && port == \":80\")) {\n // Drop port\n target = res[1] + res[2] + res[4];\n }\n }\n } catch (ex: any) {}\n remoteDependencyData.target = `${target}`;\n }\n }\n // DB Dependency\n else if (dbSystem) {\n // TODO: Remove special logic when Azure UX supports OpenTelemetry dbSystem\n if (String(dbSystem) === DbSystemValues.MYSQL) {\n remoteDependencyData.type = \"mysql\";\n } else if (String(dbSystem) === DbSystemValues.POSTGRESQL) {\n remoteDependencyData.type = \"postgresql\";\n } else if (String(dbSystem) === DbSystemValues.MONGODB) {\n remoteDependencyData.type = \"mongodb\";\n } else if (String(dbSystem) === DbSystemValues.REDIS) {\n remoteDependencyData.type = \"redis\";\n } else if (isSqlDB(String(dbSystem))) {\n remoteDependencyData.type = \"SQL\";\n } else {\n remoteDependencyData.type = String(dbSystem);\n }\n const dbStatement = span.attributes[SemanticAttributes.DB_STATEMENT];\n const dbOperation = span.attributes[SemanticAttributes.DB_OPERATION];\n if (dbStatement) {\n remoteDependencyData.data = String(dbStatement);\n } else if (dbOperation) {\n remoteDependencyData.data = String(dbOperation);\n }\n const target = getDependencyTarget(span.attributes);\n const dbName = span.attributes[SemanticAttributes.DB_NAME];\n if (target) {\n remoteDependencyData.target = dbName ? `${target}|${dbName}` : `${target}`;\n } else {\n remoteDependencyData.target = dbName ? `${dbName}` : `${dbSystem}`;\n }\n }\n // grpc Dependency\n else if (rpcSystem) {\n remoteDependencyData.type = DependencyTypes.Grpc;\n const grpcStatusCode = span.attributes[SemanticAttributes.RPC_GRPC_STATUS_CODE];\n if (grpcStatusCode) {\n remoteDependencyData.resultCode = String(grpcStatusCode);\n }\n const target = getDependencyTarget(span.attributes);\n if (target) {\n remoteDependencyData.target = `${target}`;\n } else if (rpcSystem) {\n remoteDependencyData.target = String(rpcSystem);\n }\n }\n return remoteDependencyData;\n}\n\nfunction createRequestData(span: ReadableSpan): RequestData {\n const requestData: RequestData = {\n id: `${span.spanContext().spanId}`,\n success: span.status.code != SpanStatusCode.ERROR,\n responseCode: \"0\",\n duration: msToTimeSpan(hrTimeToMilliseconds(span.duration)),\n version: 2,\n source: undefined,\n };\n const httpMethod = span.attributes[SemanticAttributes.HTTP_METHOD];\n const grpcStatusCode = span.attributes[SemanticAttributes.RPC_GRPC_STATUS_CODE];\n if (httpMethod) {\n requestData.url = getUrl(span.attributes);\n const httpStatusCode = span.attributes[SemanticAttributes.HTTP_STATUS_CODE];\n if (httpStatusCode) {\n requestData.responseCode = String(httpStatusCode);\n }\n } else if (grpcStatusCode) {\n requestData.responseCode = String(grpcStatusCode);\n }\n return requestData;\n}\n\n/**\n * Span to Azure envelope parsing.\n * @internal\n */\nexport function readableSpanToEnvelope(span: ReadableSpan, ikey: string): Envelope {\n let name: string;\n let baseType: \"RemoteDependencyData\" | \"RequestData\";\n let baseData: RemoteDependencyData | RequestData;\n\n const time = new Date(hrTimeToMilliseconds(span.startTime));\n const instrumentationKey = ikey;\n const tags = createTagsFromSpan(span);\n const [properties, measurements] = createPropertiesFromSpan(span);\n switch (span.kind) {\n case SpanKind.CLIENT:\n case SpanKind.PRODUCER:\n case SpanKind.INTERNAL:\n name = \"Microsoft.ApplicationInsights.RemoteDependency\";\n baseType = \"RemoteDependencyData\";\n baseData = createDependencyData(span);\n break;\n case SpanKind.SERVER:\n case SpanKind.CONSUMER:\n name = \"Microsoft.ApplicationInsights.Request\";\n baseType = \"RequestData\";\n baseData = createRequestData(span);\n baseData.name = tags[KnownContextTagKeys.AiOperationName];\n break;\n default:\n // never\n diag.error(`Unsupported span kind ${span.kind}`);\n throw new Error(`Unsupported span kind ${span.kind}`);\n }\n\n let sampleRate = 100;\n if (span.attributes[AzureMonitorSampleRate]) {\n sampleRate = Number(span.attributes[AzureMonitorSampleRate]);\n }\n\n // Azure SDK\n if (span.attributes[AzNamespace]) {\n if (span.kind === SpanKind.INTERNAL) {\n baseData.type = `${DependencyTypes.InProc} | ${span.attributes[AzNamespace]}`;\n }\n if (span.attributes[AzNamespace] === MicrosoftEventHub) {\n parseEventHubSpan(span, baseData);\n }\n }\n\n return {\n name,\n sampleRate,\n time,\n instrumentationKey,\n tags,\n version: 1,\n data: {\n baseType,\n baseData: {\n ...baseData,\n properties,\n measurements,\n },\n },\n };\n}\n\n/**\n * Span Events to Azure envelopes parsing.\n * @internal\n */\nexport function spanEventsToEnvelopes(span: ReadableSpan, ikey: string): Envelope[] {\n const envelopes: Envelope[] = [];\n if (span.events) {\n span.events.forEach((event: TimedEvent) => {\n let baseType: \"ExceptionData\" | \"MessageData\";\n const time = new Date(hrTimeToMilliseconds(event.time));\n let name = \"\";\n let baseData: TelemetryExceptionData | MessageData;\n const properties = createPropertiesFromSpanAttributes(event.attributes);\n\n const tags: Tags = createTagsFromResource(span.resource);\n tags[KnownContextTagKeys.AiOperationId] = span.spanContext().traceId;\n const spanId = span.spanContext()?.spanId;\n if (spanId) {\n tags[KnownContextTagKeys.AiOperationParentId] = spanId;\n }\n\n // Only generate exception telemetry for incoming requests\n if (event.name == \"exception\" && span.kind == SpanKind.SERVER) {\n name = \"Microsoft.ApplicationInsights.Exception\";\n baseType = \"ExceptionData\";\n let typeName = \"\";\n let message = \"Exception\";\n let stack = \"\";\n let hasFullStack = false;\n if (event.attributes) {\n typeName = String(event.attributes[SemanticAttributes.EXCEPTION_TYPE]);\n stack = String(event.attributes[SemanticAttributes.EXCEPTION_STACKTRACE]);\n if (stack) {\n hasFullStack = true;\n }\n const exceptionMsg = event.attributes[SemanticAttributes.EXCEPTION_MESSAGE];\n if (exceptionMsg) {\n message = String(exceptionMsg);\n }\n const escaped = event.attributes[SemanticAttributes.EXCEPTION_ESCAPED];\n if (escaped != undefined) {\n properties[SemanticAttributes.EXCEPTION_ESCAPED] = String(escaped);\n }\n }\n const exceptionDetails: TelemetryExceptionDetails = {\n typeName: typeName,\n message: message,\n stack: stack,\n hasFullStack: hasFullStack,\n };\n const exceptionData: TelemetryExceptionData = {\n exceptions: [exceptionDetails],\n version: 2,\n properties: properties,\n };\n baseData = exceptionData;\n } else {\n name = \"Microsoft.ApplicationInsights.Message\";\n baseType = \"MessageData\";\n const messageData: MessageData = {\n message: event.name,\n version: 2,\n properties: properties,\n };\n baseData = messageData;\n }\n let sampleRate = 100;\n if (span.attributes[AzureMonitorSampleRate]) {\n sampleRate = Number(span.attributes[AzureMonitorSampleRate]);\n }\n const env: Envelope = {\n name: name,\n time: time,\n instrumentationKey: ikey,\n version: 1,\n sampleRate: sampleRate,\n data: {\n baseType: baseType,\n baseData: baseData,\n },\n tags: tags,\n };\n envelopes.push(env);\n });\n }\n return envelopes;\n}\n"]}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@azure/monitor-opentelemetry-exporter",
3
3
  "author": "Microsoft Corporation",
4
4
  "sdk-type": "client",
5
- "version": "1.0.0-beta.11",
5
+ "version": "1.0.0-beta.12",
6
6
  "description": "Application Insights exporter for the OpenTelemetry JavaScript (Node.js) SDK",
7
7
  "main": "dist/index.js",
8
8
  "module": "dist-esm/src/index.js",
@@ -86,9 +86,9 @@
86
86
  "@azure/dev-tool": "^1.0.0",
87
87
  "@azure/eslint-plugin-azure-sdk": "^3.0.0",
88
88
  "@microsoft/api-extractor": "^7.31.1",
89
- "@opentelemetry/instrumentation": "^0.35.0",
90
- "@opentelemetry/instrumentation-http": "^0.35.0",
91
- "@opentelemetry/sdk-trace-node": "^1.9.0",
89
+ "@opentelemetry/instrumentation": "^0.37.0",
90
+ "@opentelemetry/instrumentation-http": "^0.37.0",
91
+ "@opentelemetry/sdk-trace-node": "^1.11.0",
92
92
  "@types/mocha": "^7.0.2",
93
93
  "@types/node": "^14.0.0",
94
94
  "dotenv": "^16.0.0",
@@ -107,12 +107,12 @@
107
107
  "@azure/core-client": "^1.0.0",
108
108
  "@azure/core-auth": "^1.3.0",
109
109
  "@azure/core-rest-pipeline": "^1.1.0",
110
- "@opentelemetry/api": "^1.4.0",
111
- "@opentelemetry/core": "^1.9.0",
112
- "@opentelemetry/resources": "^1.9.0",
113
- "@opentelemetry/sdk-metrics": "^1.9.0",
114
- "@opentelemetry/sdk-trace-base": "^1.9.0",
115
- "@opentelemetry/semantic-conventions": "^1.9.0",
110
+ "@opentelemetry/api": "^1.4.1",
111
+ "@opentelemetry/core": "^1.11.0",
112
+ "@opentelemetry/resources": "^1.11.0",
113
+ "@opentelemetry/sdk-metrics": "^1.11.0",
114
+ "@opentelemetry/sdk-trace-base": "^1.11.0",
115
+ "@opentelemetry/semantic-conventions": "^1.11.0",
116
116
  "tslib": "^2.2.0"
117
117
  },
118
118
  "sideEffects": false,