From 01a0d568df172ebfb1be449eb1c050054b221c76 Mon Sep 17 00:00:00 2001 From: Hector Hernandez <39923391+hectorhdzg@users.noreply.github.com> Date: Fri, 12 Aug 2022 12:05:08 -0700 Subject: [PATCH 1/5] Export Metric attributes --- .../monitor-opentelemetry-exporter.api.md | 14 ++++- .../src/export/base.ts | 15 ++--- .../src/export/metric.ts | 28 ++++++--- .../src/export/trace.ts | 16 ++++- .../src/utils/metricUtils.ts | 54 ++++++++++------ .../test/utils/assert.ts | 8 +-- .../test/utils/basic.ts | 61 ++++++++++++++++++- 7 files changed, 146 insertions(+), 50 deletions(-) diff --git a/sdk/monitor/monitor-opentelemetry-exporter/review/monitor-opentelemetry-exporter.api.md b/sdk/monitor/monitor-opentelemetry-exporter/review/monitor-opentelemetry-exporter.api.md index c63683635dec..90e3787bc343 100644 --- a/sdk/monitor/monitor-opentelemetry-exporter/review/monitor-opentelemetry-exporter.api.md +++ b/sdk/monitor/monitor-opentelemetry-exporter/review/monitor-opentelemetry-exporter.api.md @@ -6,6 +6,7 @@ import { AggregationTemporality } from '@opentelemetry/sdk-metrics-base'; import { ExportResult } from '@opentelemetry/core'; +import { InstrumentType } from '@opentelemetry/sdk-metrics-base'; import { PushMetricExporter } from '@opentelemetry/sdk-metrics-base'; import { ReadableSpan } from '@opentelemetry/sdk-trace-base'; import { ResourceMetrics } from '@opentelemetry/sdk-metrics-base'; @@ -24,16 +25,23 @@ export abstract class AzureMonitorBaseExporter { constructor(options?: AzureExporterConfig); protected _exportEnvelopes(envelopes: TelemetryItem[]): Promise; protected readonly _instrumentationKey: string; - protected _shutdown(): Promise; + // Warning: (ae-forgotten-export) The symbol "Sender" needs to be exported by the entry point index.d.ts + // + // (undocumented) + protected readonly _sender: Sender; } // @public export class AzureMonitorMetricExporter extends AzureMonitorBaseExporter implements PushMetricExporter { constructor(options?: AzureExporterConfig); + // (undocumented) + protected _aggregationTemporality: AggregationTemporality; export(metrics: ResourceMetrics, resultCallback: (result: ExportResult) => void): Promise; forceFlush(): Promise; - selectAggregationTemporality(): AggregationTemporality; + selectAggregationTemporality(_instrumentType: InstrumentType): AggregationTemporality; shutdown(): Promise; + // (undocumented) + protected _shutdown: boolean; } // @public @@ -41,6 +49,8 @@ export class AzureMonitorTraceExporter extends AzureMonitorBaseExporter implemen constructor(options?: AzureExporterConfig); export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): Promise; shutdown(): Promise; + // (undocumented) + protected _shutdown: boolean; } // @public diff --git a/sdk/monitor/monitor-opentelemetry-exporter/src/export/base.ts b/sdk/monitor/monitor-opentelemetry-exporter/src/export/base.ts index 6f63504d7414..295b57aa5af2 100644 --- a/sdk/monitor/monitor-opentelemetry-exporter/src/export/base.ts +++ b/sdk/monitor/monitor-opentelemetry-exporter/src/export/base.ts @@ -24,8 +24,8 @@ export abstract class AzureMonitorBaseExporter { * Instrumentation key to be used for exported envelopes */ protected readonly _instrumentationKey: string; + protected readonly _sender: Sender; private readonly _persister: PersistentStorage; - private readonly _sender: Sender; private _numConsecutiveRedirects: number; private _retryTimer: NodeJS.Timer | null; /** @@ -77,21 +77,14 @@ export abstract class AzureMonitorBaseExporter { return success ? { code: ExportResultCode.SUCCESS } : { - code: ExportResultCode.FAILED, - error: new Error("Failed to persist envelope in disk."), - }; + code: ExportResultCode.FAILED, + error: new Error("Failed to persist envelope in disk."), + }; } catch (ex: any) { return { code: ExportResultCode.FAILED, error: ex }; } } - /** - * Shutdown exporter - */ - protected async _shutdown(): Promise { - return this._sender.shutdown(); - } - /** * Export envelopes */ diff --git a/sdk/monitor/monitor-opentelemetry-exporter/src/export/metric.ts b/sdk/monitor/monitor-opentelemetry-exporter/src/export/metric.ts index 660624948313..cf93e57de208 100644 --- a/sdk/monitor/monitor-opentelemetry-exporter/src/export/metric.ts +++ b/sdk/monitor/monitor-opentelemetry-exporter/src/export/metric.ts @@ -3,10 +3,11 @@ import { diag } from "@opentelemetry/api"; import { AggregationTemporality, + InstrumentType, PushMetricExporter, ResourceMetrics, } from "@opentelemetry/sdk-metrics-base"; -import { ExportResult } from "@opentelemetry/core"; +import { ExportResult, ExportResultCode } from "@opentelemetry/core"; import { AzureMonitorBaseExporter } from "./base"; import { AzureExporterConfig } from "../config"; import { TelemetryItem as Envelope } from "../generated"; @@ -17,14 +18,18 @@ import { resourceMetricsToEnvelope } from "../utils/metricUtils"; */ export class AzureMonitorMetricExporter extends AzureMonitorBaseExporter - implements PushMetricExporter -{ + implements PushMetricExporter { + + protected _shutdown = false; + protected _aggregationTemporality: AggregationTemporality; + /** * Initializes a new instance of the AzureMonitorMetricExporter class. * @param AzureExporterConfig - Exporter configuration. */ constructor(options: AzureExporterConfig = {}) { super(options); + this._aggregationTemporality = AggregationTemporality.CUMULATIVE; diag.debug("AzureMonitorMetricExporter was successfully setup"); } @@ -37,6 +42,11 @@ export class AzureMonitorMetricExporter metrics: ResourceMetrics, resultCallback: (result: ExportResult) => void ): Promise { + if (this._shutdown) { + diag.info("Exporter shut down. Failed to export spans."); + setTimeout(() => resultCallback({ code: ExportResultCode.FAILED }), 0); + return; + } diag.info(`Exporting ${metrics.scopeMetrics.length} metrics(s). Converting to envelopes...`); let envelopes: Envelope[] = resourceMetricsToEnvelope(metrics, this._instrumentationKey); @@ -47,22 +57,22 @@ export class AzureMonitorMetricExporter * Shutdown AzureMonitorMetricExporter. */ public async shutdown(): Promise { - diag.info("Azure Monitor Trace Exporter shutting down"); - return this._shutdown(); + this._shutdown = true; + diag.info("AzureMonitorMetricExporter shutting down"); + return this._sender.shutdown(); } /** * Select aggregation temporality */ - public selectAggregationTemporality() { - return AggregationTemporality.CUMULATIVE; + public selectAggregationTemporality(_instrumentType: InstrumentType): AggregationTemporality { + return this._aggregationTemporality; } /** * Force flush */ public async forceFlush() { - // TODO: https://github.com/open-telemetry/opentelemetry-js/issues/3060 - throw new Error("Method not implemented."); + return Promise.resolve(); } } diff --git a/sdk/monitor/monitor-opentelemetry-exporter/src/export/trace.ts b/sdk/monitor/monitor-opentelemetry-exporter/src/export/trace.ts index 7f7705d8b9da..d03d2ea29dc0 100644 --- a/sdk/monitor/monitor-opentelemetry-exporter/src/export/trace.ts +++ b/sdk/monitor/monitor-opentelemetry-exporter/src/export/trace.ts @@ -2,7 +2,7 @@ // Licensed under the MIT license. import { diag } from "@opentelemetry/api"; -import { ExportResult } from "@opentelemetry/core"; +import { ExportResult, ExportResultCode } from "@opentelemetry/core"; import { ReadableSpan, SpanExporter } from "@opentelemetry/sdk-trace-base"; import { AzureMonitorBaseExporter } from "./base"; import { AzureExporterConfig } from "../config"; @@ -13,6 +13,9 @@ import { readableSpanToEnvelope, spanEventsToEnvelopes } from "../utils/spanUtil * Azure Monitor OpenTelemetry Trace Exporter. */ export class AzureMonitorTraceExporter extends AzureMonitorBaseExporter implements SpanExporter { + + protected _shutdown = false; + /** * Initializes a new instance of the AzureMonitorTraceExporter class. * @param AzureExporterConfig - Exporter configuration. @@ -31,6 +34,12 @@ export class AzureMonitorTraceExporter extends AzureMonitorBaseExporter implemen spans: ReadableSpan[], resultCallback: (result: ExportResult) => void ): Promise { + if (this._shutdown) { + diag.info("Exporter shut down. Failed to export spans."); + setTimeout(() => resultCallback({ code: ExportResultCode.FAILED }), 0); + return; + } + diag.info(`Exporting ${spans.length} span(s). Converting to envelopes...`); let envelopes: Envelope[] = []; @@ -48,7 +57,8 @@ export class AzureMonitorTraceExporter extends AzureMonitorBaseExporter implemen * Shutdown AzureMonitorTraceExporter. */ async shutdown(): Promise { - diag.info("Azure Monitor Trace Exporter shutting down"); - return this._shutdown(); + this._shutdown = true; + diag.info("AzureMonitorTraceExporter shutting down"); + return this._sender.shutdown(); } } diff --git a/sdk/monitor/monitor-opentelemetry-exporter/src/utils/metricUtils.ts b/sdk/monitor/monitor-opentelemetry-exporter/src/utils/metricUtils.ts index 1036e703ecc7..e317ed574ae1 100644 --- a/sdk/monitor/monitor-opentelemetry-exporter/src/utils/metricUtils.ts +++ b/sdk/monitor/monitor-opentelemetry-exporter/src/utils/metricUtils.ts @@ -1,10 +1,24 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. +import { MetricAttributes } from "@opentelemetry/api-metrics"; import { DataPointType, Histogram, ResourceMetrics } from "@opentelemetry/sdk-metrics-base"; import { TelemetryItem as Envelope, MetricsData, MetricDataPoint } from "../generated"; import { createTagsFromResource } from "./resourceUtils"; + +function createPropertiesFromMetricAttributes(attributes?: MetricAttributes): { + [propertyName: string]: string; +} { + const properties: { [propertyName: string]: string } = {}; + if (attributes) { + for (const key of Object.keys(attributes)) { + properties[key] = attributes[key] as string; + } + } + return properties; +} + /** * Metric to Azure envelope parsing. * @internal @@ -16,12 +30,14 @@ export function resourceMetricsToEnvelope(metrics: ResourceMetrics, ikey: string const tags = createTagsFromResource(metrics.resource); metrics.scopeMetrics.forEach((scopeMetric) => { - let baseData: MetricsData = { - metrics: [], - version: 2, - }; scopeMetric.metrics.forEach((metric) => { metric.dataPoints.forEach((dataPoint) => { + let baseData: MetricsData = { + metrics: [], + version: 2, + properties: {} + }; + baseData.properties = createPropertiesFromMetricAttributes(dataPoint.attributes); var metricDataPoint: MetricDataPoint = { name: metric.descriptor.name, value: 0, @@ -40,23 +56,23 @@ export function resourceMetricsToEnvelope(metrics: ResourceMetrics, ikey: string metricDataPoint.min = (dataPoint.value as Histogram).min; } baseData.metrics.push(metricDataPoint); + let envelope: Envelope = { + name: "Microsoft.ApplicationInsights.Metric", + time: time, + sampleRate: 100, + instrumentationKey: instrumentationKey, + tags: tags, + version: 1, + data: { + baseType: "MetricData", + baseData: { + ...baseData, + }, + }, + }; + envelopes.push(envelope); }); }); - let envelope: Envelope = { - name: "Microsoft.ApplicationInsights.Metric", - time: time, - sampleRate: 100, - instrumentationKey: instrumentationKey, - tags: tags, - version: 1, - data: { - baseType: "MetricData", - baseData: { - ...baseData, - }, - }, - }; - envelopes.push(envelope); }); return envelopes; diff --git a/sdk/monitor/monitor-opentelemetry-exporter/test/utils/assert.ts b/sdk/monitor/monitor-opentelemetry-exporter/test/utils/assert.ts index a4c620704fe0..6dce97d87e16 100644 --- a/sdk/monitor/monitor-opentelemetry-exporter/test/utils/assert.ts +++ b/sdk/monitor/monitor-opentelemetry-exporter/test/utils/assert.ts @@ -100,8 +100,7 @@ export const assertTraceExpectation = (actual: Envelope[], expectations: Expecta if (envelope.length !== 1) { assert.ok( false, - `assertExpectation: could not find exported envelope: ${ - (expectation.data?.baseData as RequestData).name + `assertExpectation: could not find exported envelope: ${(expectation.data?.baseData as RequestData).name }` ); } @@ -133,7 +132,7 @@ export const assertTraceExpectation = (actual: Envelope[], expectations: Expecta export const assertMetricExpectation = (actual: Envelope[], expectations: Expectation[]): void => { for (const expectation of expectations) { let envelope: any = null; - if (expectation.data!.baseData!.name) { + if (expectation.data!.baseData!.metrics && expectation.data!.baseData!.metrics.length > 0) { envelope = actual.filter((e) => { return ( (e.data!.baseData as MetricsData).metrics[0].name === @@ -148,8 +147,7 @@ export const assertMetricExpectation = (actual: Envelope[], expectations: Expect if (envelope.length !== 1) { assert.ok( false, - `assertExpectation: could not find exported envelope: ${ - (expectation.data?.baseData as MetricsData).metrics[0].name + `assertExpectation: could not find exported envelope: ${(expectation.data?.baseData as MetricsData).metrics[0].name }` ); } diff --git a/sdk/monitor/monitor-opentelemetry-exporter/test/utils/basic.ts b/sdk/monitor/monitor-opentelemetry-exporter/test/utils/basic.ts index 944c71481839..05f44ba3c449 100644 --- a/sdk/monitor/monitor-opentelemetry-exporter/test/utils/basic.ts +++ b/sdk/monitor/monitor-opentelemetry-exporter/test/utils/basic.ts @@ -209,13 +209,18 @@ export class MetricBasicScenario implements Scenario { async run(): Promise { const meter = this._provider.getMeter("basic"); let counter = meter.createCounter("testCounter"); + let counter2 = meter.createCounter("testCounter2"); let histogram = meter.createHistogram("testHistogram"); + let histogram2 = meter.createHistogram("testHistogram2"); + let attributes = { "testAttribute": "testValue" }; counter.add(1); counter.add(2); + counter2.add(12, attributes); histogram.record(1); histogram.record(2); histogram.record(3); histogram.record(4); + histogram2.record(12, attributes); await delay(0); } @@ -225,7 +230,6 @@ export class MetricBasicScenario implements Scenario { flush(): Promise { return delay(100); - // return metricReader.forceFlush(); } expectation: Expectation[] = [ @@ -243,6 +247,39 @@ export class MetricBasicScenario implements Scenario { count: 1, dataPointType: "Aggregation", }, + ], + } as any, + }, + children: [], + }, + { + ...COMMON_ENVELOPE_PARAMS, + name: "Microsoft.ApplicationInsights.Metric", + data: { + baseType: "MetricData", + baseData: { + version: 2, + metrics: [ + { + name: "testCounter2", + value: 12, + count: 1, + dataPointType: "Aggregation", + }, + ], + properties: { "testAttribute": "testValue" } + } as any, + }, + children: [], + }, + { + ...COMMON_ENVELOPE_PARAMS, + name: "Microsoft.ApplicationInsights.Metric", + data: { + baseType: "MetricData", + baseData: { + version: 2, + metrics: [ { name: "testHistogram", value: 10, @@ -256,5 +293,27 @@ export class MetricBasicScenario implements Scenario { }, children: [], }, + { + ...COMMON_ENVELOPE_PARAMS, + name: "Microsoft.ApplicationInsights.Metric", + data: { + baseType: "MetricData", + baseData: { + version: 2, + metrics: [ + { + name: "testHistogram2", + value: 12, + count: 1, + max: 12, + min: 12, + dataPointType: "Aggregation", + }, + ], + properties: { "testAttribute": "testValue" }, + } as any, + }, + children: [], + }, ]; } From bd4e988b6e4e7a1defc4e68c59400de93cfe77d6 Mon Sep 17 00:00:00 2001 From: Hector Hernandez <39923391+hectorhdzg@users.noreply.github.com> Date: Fri, 12 Aug 2022 12:14:05 -0700 Subject: [PATCH 2/5] Format, updating codeowners --- .github/CODEOWNERS | 2 +- .../monitor-opentelemetry-exporter.api.md | 13 +++++-------- .../src/export/base.ts | 15 +++++++++++---- .../src/export/metric.ts | 18 ++++++++++++------ .../src/export/trace.ts | 12 +++++++----- .../src/utils/metricUtils.ts | 3 +-- .../test/utils/assert.ts | 6 ++++-- .../test/utils/basic.ts | 6 +++--- 8 files changed, 44 insertions(+), 31 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index bf7de53f0072..881e1df00686 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -816,7 +816,7 @@ sdk/dnsresolver/arm-dnsresolver @qiaozha @dw511214992 @MaryGao sdk/dnsresolver/ci.mgmt.yml @qiaozha @dw511214992 @MaryGao # PRLabel: %Monitor -/sdk/monitor/ @hectorhdzg +/sdk/monitor/ @hectorhdzg @JacksonWeber /sdk/monitor/monitor-query @KarishmaGhiya # ServiceLabel: %AAD %Service Attention diff --git a/sdk/monitor/monitor-opentelemetry-exporter/review/monitor-opentelemetry-exporter.api.md b/sdk/monitor/monitor-opentelemetry-exporter/review/monitor-opentelemetry-exporter.api.md index 90e3787bc343..0001d10b9f36 100644 --- a/sdk/monitor/monitor-opentelemetry-exporter/review/monitor-opentelemetry-exporter.api.md +++ b/sdk/monitor/monitor-opentelemetry-exporter/review/monitor-opentelemetry-exporter.api.md @@ -25,10 +25,7 @@ export abstract class AzureMonitorBaseExporter { constructor(options?: AzureExporterConfig); protected _exportEnvelopes(envelopes: TelemetryItem[]): Promise; protected readonly _instrumentationKey: string; - // Warning: (ae-forgotten-export) The symbol "Sender" needs to be exported by the entry point index.d.ts - // - // (undocumented) - protected readonly _sender: Sender; + protected _shutdown(): Promise; } // @public @@ -38,19 +35,19 @@ export class AzureMonitorMetricExporter extends AzureMonitorBaseExporter impleme protected _aggregationTemporality: AggregationTemporality; export(metrics: ResourceMetrics, resultCallback: (result: ExportResult) => void): Promise; forceFlush(): Promise; + // (undocumented) + protected _isShutdown: boolean; selectAggregationTemporality(_instrumentType: InstrumentType): AggregationTemporality; shutdown(): Promise; - // (undocumented) - protected _shutdown: boolean; } // @public export class AzureMonitorTraceExporter extends AzureMonitorBaseExporter implements SpanExporter { constructor(options?: AzureExporterConfig); export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): Promise; - shutdown(): Promise; // (undocumented) - protected _shutdown: boolean; + protected _isShutdown: boolean; + shutdown(): Promise; } // @public diff --git a/sdk/monitor/monitor-opentelemetry-exporter/src/export/base.ts b/sdk/monitor/monitor-opentelemetry-exporter/src/export/base.ts index 295b57aa5af2..6f63504d7414 100644 --- a/sdk/monitor/monitor-opentelemetry-exporter/src/export/base.ts +++ b/sdk/monitor/monitor-opentelemetry-exporter/src/export/base.ts @@ -24,8 +24,8 @@ export abstract class AzureMonitorBaseExporter { * Instrumentation key to be used for exported envelopes */ protected readonly _instrumentationKey: string; - protected readonly _sender: Sender; private readonly _persister: PersistentStorage; + private readonly _sender: Sender; private _numConsecutiveRedirects: number; private _retryTimer: NodeJS.Timer | null; /** @@ -77,14 +77,21 @@ export abstract class AzureMonitorBaseExporter { return success ? { code: ExportResultCode.SUCCESS } : { - code: ExportResultCode.FAILED, - error: new Error("Failed to persist envelope in disk."), - }; + code: ExportResultCode.FAILED, + error: new Error("Failed to persist envelope in disk."), + }; } catch (ex: any) { return { code: ExportResultCode.FAILED, error: ex }; } } + /** + * Shutdown exporter + */ + protected async _shutdown(): Promise { + return this._sender.shutdown(); + } + /** * Export envelopes */ diff --git a/sdk/monitor/monitor-opentelemetry-exporter/src/export/metric.ts b/sdk/monitor/monitor-opentelemetry-exporter/src/export/metric.ts index cf93e57de208..d3e51a82ac3a 100644 --- a/sdk/monitor/monitor-opentelemetry-exporter/src/export/metric.ts +++ b/sdk/monitor/monitor-opentelemetry-exporter/src/export/metric.ts @@ -18,9 +18,15 @@ import { resourceMetricsToEnvelope } from "../utils/metricUtils"; */ export class AzureMonitorMetricExporter extends AzureMonitorBaseExporter - implements PushMetricExporter { - - protected _shutdown = false; + implements PushMetricExporter +{ + /** + * Flag to determine if Exported is shutdown. + */ + protected _isShutdown = false; + /** + * Aggregation temporality. + */ protected _aggregationTemporality: AggregationTemporality; /** @@ -42,7 +48,7 @@ export class AzureMonitorMetricExporter metrics: ResourceMetrics, resultCallback: (result: ExportResult) => void ): Promise { - if (this._shutdown) { + if (this._isShutdown) { diag.info("Exporter shut down. Failed to export spans."); setTimeout(() => resultCallback({ code: ExportResultCode.FAILED }), 0); return; @@ -57,9 +63,9 @@ export class AzureMonitorMetricExporter * Shutdown AzureMonitorMetricExporter. */ public async shutdown(): Promise { - this._shutdown = true; + this._isShutdown = true; diag.info("AzureMonitorMetricExporter shutting down"); - return this._sender.shutdown(); + return this._shutdown(); } /** diff --git a/sdk/monitor/monitor-opentelemetry-exporter/src/export/trace.ts b/sdk/monitor/monitor-opentelemetry-exporter/src/export/trace.ts index d03d2ea29dc0..1d5bf4a8c2d5 100644 --- a/sdk/monitor/monitor-opentelemetry-exporter/src/export/trace.ts +++ b/sdk/monitor/monitor-opentelemetry-exporter/src/export/trace.ts @@ -13,8 +13,10 @@ import { readableSpanToEnvelope, spanEventsToEnvelopes } from "../utils/spanUtil * Azure Monitor OpenTelemetry Trace Exporter. */ export class AzureMonitorTraceExporter extends AzureMonitorBaseExporter implements SpanExporter { - - protected _shutdown = false; + /** + * Flag to determine if Exported is shutdown. + */ + protected _isShutdown = false; /** * Initializes a new instance of the AzureMonitorTraceExporter class. @@ -34,7 +36,7 @@ export class AzureMonitorTraceExporter extends AzureMonitorBaseExporter implemen spans: ReadableSpan[], resultCallback: (result: ExportResult) => void ): Promise { - if (this._shutdown) { + if (this._isShutdown) { diag.info("Exporter shut down. Failed to export spans."); setTimeout(() => resultCallback({ code: ExportResultCode.FAILED }), 0); return; @@ -57,8 +59,8 @@ export class AzureMonitorTraceExporter extends AzureMonitorBaseExporter implemen * Shutdown AzureMonitorTraceExporter. */ async shutdown(): Promise { - this._shutdown = true; + this._isShutdown = true; diag.info("AzureMonitorTraceExporter shutting down"); - return this._sender.shutdown(); + return this._shutdown(); } } diff --git a/sdk/monitor/monitor-opentelemetry-exporter/src/utils/metricUtils.ts b/sdk/monitor/monitor-opentelemetry-exporter/src/utils/metricUtils.ts index e317ed574ae1..0277c40e4ab4 100644 --- a/sdk/monitor/monitor-opentelemetry-exporter/src/utils/metricUtils.ts +++ b/sdk/monitor/monitor-opentelemetry-exporter/src/utils/metricUtils.ts @@ -6,7 +6,6 @@ import { DataPointType, Histogram, ResourceMetrics } from "@opentelemetry/sdk-me import { TelemetryItem as Envelope, MetricsData, MetricDataPoint } from "../generated"; import { createTagsFromResource } from "./resourceUtils"; - function createPropertiesFromMetricAttributes(attributes?: MetricAttributes): { [propertyName: string]: string; } { @@ -35,7 +34,7 @@ export function resourceMetricsToEnvelope(metrics: ResourceMetrics, ikey: string let baseData: MetricsData = { metrics: [], version: 2, - properties: {} + properties: {}, }; baseData.properties = createPropertiesFromMetricAttributes(dataPoint.attributes); var metricDataPoint: MetricDataPoint = { diff --git a/sdk/monitor/monitor-opentelemetry-exporter/test/utils/assert.ts b/sdk/monitor/monitor-opentelemetry-exporter/test/utils/assert.ts index 6dce97d87e16..053003072f61 100644 --- a/sdk/monitor/monitor-opentelemetry-exporter/test/utils/assert.ts +++ b/sdk/monitor/monitor-opentelemetry-exporter/test/utils/assert.ts @@ -100,7 +100,8 @@ export const assertTraceExpectation = (actual: Envelope[], expectations: Expecta if (envelope.length !== 1) { assert.ok( false, - `assertExpectation: could not find exported envelope: ${(expectation.data?.baseData as RequestData).name + `assertExpectation: could not find exported envelope: ${ + (expectation.data?.baseData as RequestData).name }` ); } @@ -147,7 +148,8 @@ export const assertMetricExpectation = (actual: Envelope[], expectations: Expect if (envelope.length !== 1) { assert.ok( false, - `assertExpectation: could not find exported envelope: ${(expectation.data?.baseData as MetricsData).metrics[0].name + `assertExpectation: could not find exported envelope: ${ + (expectation.data?.baseData as MetricsData).metrics[0].name }` ); } diff --git a/sdk/monitor/monitor-opentelemetry-exporter/test/utils/basic.ts b/sdk/monitor/monitor-opentelemetry-exporter/test/utils/basic.ts index 05f44ba3c449..bc588fa99729 100644 --- a/sdk/monitor/monitor-opentelemetry-exporter/test/utils/basic.ts +++ b/sdk/monitor/monitor-opentelemetry-exporter/test/utils/basic.ts @@ -212,7 +212,7 @@ export class MetricBasicScenario implements Scenario { let counter2 = meter.createCounter("testCounter2"); let histogram = meter.createHistogram("testHistogram"); let histogram2 = meter.createHistogram("testHistogram2"); - let attributes = { "testAttribute": "testValue" }; + let attributes = { testAttribute: "testValue" }; counter.add(1); counter.add(2); counter2.add(12, attributes); @@ -267,7 +267,7 @@ export class MetricBasicScenario implements Scenario { dataPointType: "Aggregation", }, ], - properties: { "testAttribute": "testValue" } + properties: { testAttribute: "testValue" }, } as any, }, children: [], @@ -310,7 +310,7 @@ export class MetricBasicScenario implements Scenario { dataPointType: "Aggregation", }, ], - properties: { "testAttribute": "testValue" }, + properties: { testAttribute: "testValue" }, } as any, }, children: [], From 16aa11471fe69c78eea98b2321573db524c6242a Mon Sep 17 00:00:00 2001 From: Hector Hernandez <39923391+hectorhdzg@users.noreply.github.com> Date: Fri, 12 Aug 2022 12:17:55 -0700 Subject: [PATCH 3/5] Typo --- .../monitor-opentelemetry-exporter/src/export/metric.ts | 5 ++--- .../monitor-opentelemetry-exporter/src/export/trace.ts | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/sdk/monitor/monitor-opentelemetry-exporter/src/export/metric.ts b/sdk/monitor/monitor-opentelemetry-exporter/src/export/metric.ts index d3e51a82ac3a..3f5fdacdb3b4 100644 --- a/sdk/monitor/monitor-opentelemetry-exporter/src/export/metric.ts +++ b/sdk/monitor/monitor-opentelemetry-exporter/src/export/metric.ts @@ -18,10 +18,9 @@ import { resourceMetricsToEnvelope } from "../utils/metricUtils"; */ export class AzureMonitorMetricExporter extends AzureMonitorBaseExporter - implements PushMetricExporter -{ + implements PushMetricExporter { /** - * Flag to determine if Exported is shutdown. + * Flag to determine if Exporter is shutdown. */ protected _isShutdown = false; /** diff --git a/sdk/monitor/monitor-opentelemetry-exporter/src/export/trace.ts b/sdk/monitor/monitor-opentelemetry-exporter/src/export/trace.ts index 1d5bf4a8c2d5..b76ad6c8df31 100644 --- a/sdk/monitor/monitor-opentelemetry-exporter/src/export/trace.ts +++ b/sdk/monitor/monitor-opentelemetry-exporter/src/export/trace.ts @@ -14,7 +14,7 @@ import { readableSpanToEnvelope, spanEventsToEnvelopes } from "../utils/spanUtil */ export class AzureMonitorTraceExporter extends AzureMonitorBaseExporter implements SpanExporter { /** - * Flag to determine if Exported is shutdown. + * Flag to determine if Exporter is shutdown. */ protected _isShutdown = false; From cab97d0c08b0fc339d879f55e35d627a250d405d Mon Sep 17 00:00:00 2001 From: Hector Hernandez <39923391+hectorhdzg@users.noreply.github.com> Date: Fri, 12 Aug 2022 12:32:40 -0700 Subject: [PATCH 4/5] Private attributes --- .../review/monitor-opentelemetry-exporter.api.md | 6 ------ .../monitor-opentelemetry-exporter/src/export/metric.ts | 4 ++-- .../monitor-opentelemetry-exporter/src/export/trace.ts | 2 +- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/sdk/monitor/monitor-opentelemetry-exporter/review/monitor-opentelemetry-exporter.api.md b/sdk/monitor/monitor-opentelemetry-exporter/review/monitor-opentelemetry-exporter.api.md index 0001d10b9f36..f64ccb250c02 100644 --- a/sdk/monitor/monitor-opentelemetry-exporter/review/monitor-opentelemetry-exporter.api.md +++ b/sdk/monitor/monitor-opentelemetry-exporter/review/monitor-opentelemetry-exporter.api.md @@ -31,12 +31,8 @@ export abstract class AzureMonitorBaseExporter { // @public export class AzureMonitorMetricExporter extends AzureMonitorBaseExporter implements PushMetricExporter { constructor(options?: AzureExporterConfig); - // (undocumented) - protected _aggregationTemporality: AggregationTemporality; export(metrics: ResourceMetrics, resultCallback: (result: ExportResult) => void): Promise; forceFlush(): Promise; - // (undocumented) - protected _isShutdown: boolean; selectAggregationTemporality(_instrumentType: InstrumentType): AggregationTemporality; shutdown(): Promise; } @@ -45,8 +41,6 @@ export class AzureMonitorMetricExporter extends AzureMonitorBaseExporter impleme export class AzureMonitorTraceExporter extends AzureMonitorBaseExporter implements SpanExporter { constructor(options?: AzureExporterConfig); export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): Promise; - // (undocumented) - protected _isShutdown: boolean; shutdown(): Promise; } diff --git a/sdk/monitor/monitor-opentelemetry-exporter/src/export/metric.ts b/sdk/monitor/monitor-opentelemetry-exporter/src/export/metric.ts index 3f5fdacdb3b4..8c81a537cdc1 100644 --- a/sdk/monitor/monitor-opentelemetry-exporter/src/export/metric.ts +++ b/sdk/monitor/monitor-opentelemetry-exporter/src/export/metric.ts @@ -22,11 +22,11 @@ export class AzureMonitorMetricExporter /** * Flag to determine if Exporter is shutdown. */ - protected _isShutdown = false; + private _isShutdown = false; /** * Aggregation temporality. */ - protected _aggregationTemporality: AggregationTemporality; + private _aggregationTemporality: AggregationTemporality; /** * Initializes a new instance of the AzureMonitorMetricExporter class. diff --git a/sdk/monitor/monitor-opentelemetry-exporter/src/export/trace.ts b/sdk/monitor/monitor-opentelemetry-exporter/src/export/trace.ts index b76ad6c8df31..7a60d97975f3 100644 --- a/sdk/monitor/monitor-opentelemetry-exporter/src/export/trace.ts +++ b/sdk/monitor/monitor-opentelemetry-exporter/src/export/trace.ts @@ -16,7 +16,7 @@ export class AzureMonitorTraceExporter extends AzureMonitorBaseExporter implemen /** * Flag to determine if Exporter is shutdown. */ - protected _isShutdown = false; + private _isShutdown = false; /** * Initializes a new instance of the AzureMonitorTraceExporter class. From 328067236f55935d7ad5450c0fcbf91429c91e3a Mon Sep 17 00:00:00 2001 From: Hector Hernandez <39923391+hectorhdzg@users.noreply.github.com> Date: Fri, 12 Aug 2022 12:49:10 -0700 Subject: [PATCH 5/5] Format --- .../monitor-opentelemetry-exporter/src/export/metric.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sdk/monitor/monitor-opentelemetry-exporter/src/export/metric.ts b/sdk/monitor/monitor-opentelemetry-exporter/src/export/metric.ts index 8c81a537cdc1..8748a21d5c41 100644 --- a/sdk/monitor/monitor-opentelemetry-exporter/src/export/metric.ts +++ b/sdk/monitor/monitor-opentelemetry-exporter/src/export/metric.ts @@ -18,7 +18,8 @@ import { resourceMetricsToEnvelope } from "../utils/metricUtils"; */ export class AzureMonitorMetricExporter extends AzureMonitorBaseExporter - implements PushMetricExporter { + implements PushMetricExporter +{ /** * Flag to determine if Exporter is shutdown. */