Skip to content

Commit f36d6b5

Browse files
[Monitor Query] move to tracing 1.0.0 (Azure#21260)
1 parent 3f74b03 commit f36d6b5

File tree

13 files changed

+224
-119
lines changed

13 files changed

+224
-119
lines changed

sdk/monitor/monitor-query/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@
9797
"prettier": "@azure/eslint-plugin-azure-sdk/prettier.json",
9898
"dependencies": {
9999
"@azure/core-auth": "^1.3.0",
100-
"@azure/core-tracing": "1.0.0-preview.13",
100+
"@azure/core-tracing": "^1.0.0",
101101
"@azure/core-client": "^1.0.0",
102102
"@azure/core-rest-pipeline": "^1.1.0",
103103
"@azure/core-paging": "^1.1.1",

sdk/monitor/monitor-query/review/monitor-query.api.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export interface ListMetricDefinitionsOptions extends OperationOptions {
3232
}
3333

3434
// @public
35-
export interface ListMetricNamespacesOptions {
35+
export interface ListMetricNamespacesOptions extends OperationOptions {
3636
startTime?: string;
3737
}
3838

sdk/monitor/monitor-query/src/internal/modelConverters.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22
// Licensed under the MIT license.
33

44
import {
5-
BatchRequest as GeneratedBatchRequest,
65
BatchQueryRequest as GeneratedBatchQueryRequest,
7-
QueryBatchResponse as GeneratedQueryBatchResponse,
86
BatchQueryResponse as GeneratedBatchQueryResponse,
9-
QueryBody,
10-
Table as GeneratedTable,
117
BatchQueryResults as GeneratedBatchQueryResults,
8+
BatchRequest as GeneratedBatchRequest,
129
ErrorInfo as GeneratedErrorInfo,
10+
QueryBatchResponse as GeneratedQueryBatchResponse,
11+
Table as GeneratedTable,
12+
QueryBody,
1313
} from "../generated/logquery/src";
1414

1515
import {
@@ -20,28 +20,28 @@ import {
2020
} from "../generated/metrics/src";
2121

2222
import {
23-
MetricDefinitionsListOptionalParams as GeneratedMetricDefinitionsListOptionalParams,
2423
MetricDefinition as GeneratedMetricDefinition,
24+
MetricDefinitionsListOptionalParams as GeneratedMetricDefinitionsListOptionalParams,
2525
} from "../generated/metricsdefinitions/src";
2626

2727
import { MetricNamespace as GeneratedMetricNamespace } from "../generated/metricsnamespaces/src";
2828
import { formatPreferHeader } from "./util";
2929

3030
import {
31-
QueryBatch,
3231
ListMetricDefinitionsOptions,
33-
LogsTable,
3432
LogsQueryBatchResult,
33+
LogsTable,
3534
MetricsQueryOptions,
3635
MetricsQueryResult,
36+
QueryBatch,
3737
} from "../../src";
3838
import {
39-
MetricNamespace,
4039
Metric,
40+
MetricAvailability,
4141
MetricDefinition,
42+
MetricNamespace,
4243
TimeSeriesElement,
4344
createMetricsQueryResult,
44-
MetricAvailability,
4545
} from "../models/publicMetricsModels";
4646
import { FullOperationResponse } from "@azure/core-client";
4747
import {

sdk/monitor/monitor-query/src/logsQueryClient.ts

Lines changed: 68 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ import { AzureLogAnalytics } from "./generated/logquery/src/azureLogAnalytics";
55
import { TokenCredential } from "@azure/core-auth";
66

77
import {
8-
QueryBatch,
98
LogsQueryBatchOptions,
109
LogsQueryBatchResult,
1110
LogsQueryOptions,
11+
LogsQueryPartialResult,
1212
LogsQueryResult,
1313
LogsQueryResultStatus,
1414
LogsQuerySuccessfulResult,
15-
LogsQueryPartialResult,
15+
QueryBatch,
1616
} from "./models/publicLogsModels";
1717

1818
import {
@@ -26,6 +26,7 @@ import { CommonClientOptions, FullOperationResponse, OperationOptions } from "@a
2626
import { QueryTimeInterval } from "./models/timeInterval";
2727
import { convertTimespanToInterval } from "./timespanConversion";
2828
import { SDK_VERSION } from "./constants";
29+
import { tracingClient } from "./tracing";
2930

3031
const defaultMonitorScope = "https://api.loganalytics.io/.default";
3132

@@ -93,61 +94,67 @@ export class LogsQueryClient {
9394
query: string,
9495
timespan: QueryTimeInterval,
9596
// eslint-disable-next-line @azure/azure-sdk/ts-naming-options
96-
options?: LogsQueryOptions
97+
options: LogsQueryOptions = {}
9798
): Promise<LogsQueryResult> {
9899
let timeInterval: string = "";
99-
if (timespan) {
100-
timeInterval = convertTimespanToInterval(timespan);
101-
}
102-
const { flatResponse, rawResponse } = await getRawResponse(
103-
(paramOptions) =>
104-
this._logAnalytics.query.execute(
105-
workspaceId,
100+
return tracingClient.withSpan(
101+
"LogsQueryClient.queryWorkspace",
102+
options,
103+
async (updatedOptions) => {
104+
if (timespan) {
105+
timeInterval = convertTimespanToInterval(timespan);
106+
}
107+
const { flatResponse, rawResponse } = await getRawResponse(
108+
(paramOptions) =>
109+
this._logAnalytics.query.execute(
110+
workspaceId,
111+
{
112+
query,
113+
timespan: timeInterval,
114+
workspaces: options?.additionalWorkspaces,
115+
},
116+
paramOptions
117+
),
106118
{
107-
query,
108-
timespan: timeInterval,
109-
workspaces: options?.additionalWorkspaces,
110-
},
111-
paramOptions
112-
),
113-
{
114-
...options,
115-
requestOptions: {
116-
customHeaders: {
117-
...formatPreferHeader(options),
118-
},
119-
},
120-
}
121-
);
119+
...updatedOptions,
120+
requestOptions: {
121+
customHeaders: {
122+
...formatPreferHeader(options),
123+
},
124+
},
125+
}
126+
);
122127

123-
const parsedBody = JSON.parse(rawResponse.bodyAsText!);
124-
flatResponse.tables = parsedBody.tables;
128+
const parsedBody = JSON.parse(rawResponse.bodyAsText!);
129+
flatResponse.tables = parsedBody.tables;
125130

126-
const res = {
127-
tables: flatResponse.tables.map(convertGeneratedTable),
128-
statistics: flatResponse.statistics,
129-
visualization: flatResponse.render,
130-
};
131+
const res = {
132+
tables: flatResponse.tables.map(convertGeneratedTable),
133+
statistics: flatResponse.statistics,
134+
visualization: flatResponse.render,
135+
};
131136

132-
if (!flatResponse.error) {
133-
// if there is no error field, it is success
134-
const result: LogsQuerySuccessfulResult = {
135-
tables: res.tables,
136-
statistics: res.statistics,
137-
visualization: res.visualization,
138-
status: LogsQueryResultStatus.Success,
139-
};
140-
return result;
141-
} else {
142-
const result: LogsQueryPartialResult = {
143-
partialTables: res.tables,
144-
status: LogsQueryResultStatus.PartialFailure,
145-
partialError: mapError(flatResponse.error),
146-
statistics: res.statistics,
147-
visualization: res.visualization,
148-
};
149-
return result;
150-
}
137+
if (!flatResponse.error) {
138+
// if there is no error field, it is success
139+
const result: LogsQuerySuccessfulResult = {
140+
tables: res.tables,
141+
statistics: res.statistics,
142+
visualization: res.visualization,
143+
status: LogsQueryResultStatus.Success,
144+
};
145+
return result;
146+
} else {
147+
const result: LogsQueryPartialResult = {
148+
partialTables: res.tables,
149+
status: LogsQueryResultStatus.PartialFailure,
150+
partialError: mapError(flatResponse.error),
151+
statistics: res.statistics,
152+
visualization: res.visualization,
153+
};
154+
return result;
155+
}
156+
}
157+
);
151158
}
152159

153160
/**
@@ -158,15 +165,17 @@ export class LogsQueryClient {
158165
*/
159166
async queryBatch(
160167
batch: QueryBatch[],
161-
options?: LogsQueryBatchOptions
168+
options: LogsQueryBatchOptions = {}
162169
): Promise<LogsQueryBatchResult> {
163-
const generatedRequest = convertRequestForQueryBatch(batch);
164-
const { flatResponse, rawResponse } = await getRawResponse(
165-
(paramOptions) => this._logAnalytics.query.batch(generatedRequest, paramOptions),
166-
options || {}
167-
);
168-
const result: LogsQueryBatchResult = convertResponseForQueryBatch(flatResponse, rawResponse);
169-
return result;
170+
return tracingClient.withSpan("LogsQueryClient.queryBatch", options, async (updatedOptions) => {
171+
const generatedRequest = convertRequestForQueryBatch(batch);
172+
const { flatResponse, rawResponse } = await getRawResponse(
173+
(paramOptions) => this._logAnalytics.query.batch(generatedRequest, paramOptions),
174+
updatedOptions || {}
175+
);
176+
const result: LogsQueryBatchResult = convertResponseForQueryBatch(flatResponse, rawResponse);
177+
return result;
178+
});
170179
}
171180
}
172181

sdk/monitor/monitor-query/src/metricsQueryClient.ts

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,29 @@
33
import { TokenCredential } from "@azure/core-auth";
44
import { PagedAsyncIterableIterator } from "@azure/core-paging";
55
import { CommonClientOptions } from "@azure/core-client";
6+
import { tracingClient } from "./tracing";
67

78
import {
89
ListMetricDefinitionsOptions,
910
ListMetricNamespacesOptions,
10-
MetricsQueryOptions,
11-
MetricsQueryResult,
1211
MetricDefinition,
1312
MetricNamespace,
13+
MetricsQueryOptions,
14+
MetricsQueryResult,
1415
} from "./models/publicMetricsModels";
1516

1617
import {
17-
KnownApiVersion201801 as MetricsApiVersion,
1818
MonitorManagementClient as GeneratedMetricsClient,
19+
KnownApiVersion201801 as MetricsApiVersion,
1920
} from "./generated/metrics/src";
2021
import {
21-
KnownApiVersion201801 as MetricDefinitionsApiVersion,
2222
MonitorManagementClient as GeneratedMetricsDefinitionsClient,
23+
KnownApiVersion201801 as MetricDefinitionsApiVersion,
2324
} from "./generated/metricsdefinitions/src";
2425
import {
25-
KnownApiVersion20171201Preview as MetricNamespacesApiVersion,
2626
MonitorManagementClient as GeneratedMetricsNamespacesClient,
27+
KnownApiVersion20171201Preview as MetricNamespacesApiVersion,
28+
MetricNamespacesListOptionalParams,
2729
} from "./generated/metricsnamespaces/src";
2830
import {
2931
convertRequestForMetrics,
@@ -106,14 +108,20 @@ export class MetricsQueryClient {
106108
async queryResource(
107109
resourceUri: string,
108110
metricNames: string[],
109-
options?: MetricsQueryOptions // eslint-disable-line @azure/azure-sdk/ts-naming-options
111+
options: MetricsQueryOptions = {} // eslint-disable-line @azure/azure-sdk/ts-naming-options
110112
): Promise<MetricsQueryResult> {
111-
const response = await this._metricsClient.metrics.list(
112-
resourceUri,
113-
convertRequestForMetrics(metricNames, options)
114-
);
113+
return tracingClient.withSpan(
114+
"MetricsQueryClient.queryResource",
115+
options,
116+
async (updatedOptions) => {
117+
const response = await this._metricsClient.metrics.list(
118+
resourceUri,
119+
convertRequestForMetrics(metricNames, updatedOptions)
120+
);
115121

116-
return convertResponseForMetrics(response);
122+
return convertResponseForMetrics(response);
123+
}
124+
);
117125
}
118126

119127
/**
@@ -123,9 +131,14 @@ export class MetricsQueryClient {
123131
resourceUri: string,
124132
options: ListMetricDefinitionsOptions = {}
125133
): AsyncIterableIterator<Array<MetricDefinition>> {
126-
const segmentResponse = await this._definitionsClient.metricDefinitions.list(
127-
resourceUri,
128-
convertRequestOptionsForMetricsDefinitions(options)
134+
const segmentResponse = await tracingClient.withSpan(
135+
"MetricsQueryClient.listSegmentOfMetricDefinitions",
136+
options,
137+
async (updatedOptions) =>
138+
this._definitionsClient.metricDefinitions.list(
139+
resourceUri,
140+
convertRequestOptionsForMetricsDefinitions(updatedOptions)
141+
)
129142
);
130143
yield convertResponseForMetricsDefinitions(segmentResponse.value);
131144
}
@@ -211,9 +224,11 @@ export class MetricsQueryClient {
211224
resourceUri: string,
212225
options: ListMetricNamespacesOptions = {}
213226
): AsyncIterableIterator<Array<MetricNamespace>> {
214-
const segmentResponse = await this._namespacesClient.metricNamespaces.list(
215-
resourceUri,
216-
options
227+
const segmentResponse = await tracingClient.withSpan(
228+
"MetricsQueryClient.listSegmentOfMetricNamespaces",
229+
options,
230+
async (updatedOptions: MetricNamespacesListOptionalParams | undefined) =>
231+
this._namespacesClient.metricNamespaces.list(resourceUri, updatedOptions)
217232
);
218233
yield convertResponseForMetricNamespaces(segmentResponse.value);
219234
}

sdk/monitor/monitor-query/src/models/publicMetricsModels.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33

44
import { OperationOptions } from "@azure/core-client";
55
import {
6-
MetricValue,
7-
ResultType,
8-
MetricUnit,
9-
MetricClass,
106
AggregationType,
7+
MetricClass,
8+
MetricUnit,
9+
MetricValue,
1110
NamespaceClassification,
11+
ResultType,
1212
} from "..";
1313
import { QueryTimeInterval } from "./timeInterval";
1414

@@ -137,7 +137,7 @@ export interface ListMetricDefinitionsOptions extends OperationOptions {
137137
/**
138138
* Options used when getting metric namespaces.
139139
*/
140-
export interface ListMetricNamespacesOptions {
140+
export interface ListMetricNamespacesOptions extends OperationOptions {
141141
// track 2 copy of `MetricNamespacesListOptionalParams`
142142

143143
/** The ISO 8601 conform Date start time from which to query for metric namespaces. */
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
// Copyright (c) Microsoft Corporation.
22
// Licensed under the MIT license.
33
//
4-
import { createSpanFunction } from "@azure/core-tracing";
4+
import { createTracingClient } from "@azure/core-tracing";
5+
import { SDK_VERSION } from "./constants";
56

67
/**
78
* Creates a span using the global tracer.
@@ -11,7 +12,8 @@ import { createSpanFunction } from "@azure/core-tracing";
1112
*
1213
* @internal
1314
*/
14-
export const createSpan = createSpanFunction({
15+
export const tracingClient = createTracingClient({
1516
namespace: "Microsoft.Monitor",
16-
packagePrefix: "Azure.Monitor.Query",
17+
packageName: "@azure/monitor-query",
18+
packageVersion: SDK_VERSION,
1719
});

0 commit comments

Comments
 (0)