From a6f2ae1fbd51a62355092f649b9e31b9992ea08c Mon Sep 17 00:00:00 2001 From: sam <5943916+lzzgeo@users.noreply.github.com> Date: Thu, 2 Apr 2020 07:22:31 +0800 Subject: [PATCH] AzureMonitor: Fix Log Analytics and Application Insights for Azure China (#21803) (#22753) Something funky going on with GitHub - the build has passed. --- .../app_insights/app_insights_datasource.ts | 18 +++++++- .../azure_log_analytics_datasource.ts | 29 ++++++++++++- .../plugin.json | 43 +++++++++++++++++++ 3 files changed, 87 insertions(+), 3 deletions(-) diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/app_insights/app_insights_datasource.ts b/public/app/plugins/datasource/grafana-azure-monitor-datasource/app_insights/app_insights_datasource.ts index 98023112a83..503b8fc204a 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/app_insights/app_insights_datasource.ts +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/app_insights/app_insights_datasource.ts @@ -24,7 +24,23 @@ export default class AppInsightsDatasource { constructor(instanceSettings: DataSourceInstanceSettings, private templateSrv: TemplateSrv) { this.id = instanceSettings.id; this.applicationId = instanceSettings.jsonData.appInsightsAppId; - this.baseUrl = `/appinsights/${this.version}/apps/${this.applicationId}`; + + switch (instanceSettings.jsonData.cloudName) { + // Azure US Government + case 'govazuremonitor': + break; + // Azure Germany + case 'germanyazuremonitor': + break; + // Azue China + case 'chinaazuremonitor': + this.baseUrl = `/chinaappinsights/${this.version}/apps/${this.applicationId}`; + break; + // Azure Global + default: + this.baseUrl = `/appinsights/${this.version}/apps/${this.applicationId}`; + } + this.url = instanceSettings.url; } diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_log_analytics/azure_log_analytics_datasource.ts b/public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_log_analytics/azure_log_analytics_datasource.ts index dba230aaffa..f6914dd319c 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_log_analytics/azure_log_analytics_datasource.ts +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_log_analytics/azure_log_analytics_datasource.ts @@ -21,7 +21,20 @@ export default class AzureLogAnalyticsDatasource { private templateSrv: TemplateSrv ) { this.id = instanceSettings.id; - this.baseUrl = '/loganalyticsazure'; + + switch (this.instanceSettings.jsonData.cloudName) { + case 'govazuremonitor': // Azure US Government + break; + case 'germanyazuremonitor': // Azure Germany + break; + case 'chinaazuremonitor': // Azue China + this.baseUrl = '/chinaloganalyticsazure'; + break; + default: + // Azure Global + this.baseUrl = '/loganalyticsazure'; + } + this.url = instanceSettings.url; this.defaultOrFirstWorkspace = this.instanceSettings.jsonData.logAnalyticsDefaultWorkspace; @@ -43,7 +56,19 @@ export default class AzureLogAnalyticsDatasource { this.azureMonitorUrl = `/${azureCloud}/subscriptions`; } else { this.subscriptionId = this.instanceSettings.jsonData.logAnalyticsSubscriptionId; - this.azureMonitorUrl = `/workspacesloganalytics/subscriptions`; + + switch (this.instanceSettings.jsonData.cloudName) { + case 'govazuremonitor': // Azure US Government + break; + case 'germanyazuremonitor': // Azure Germany + break; + case 'chinaazuremonitor': // Azue China + this.azureMonitorUrl = `/chinaworkspacesloganalytics/subscriptions`; + break; + default: + // Azure Global + this.azureMonitorUrl = `/workspacesloganalytics/subscriptions`; + } } } diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/plugin.json b/public/app/plugins/datasource/grafana-azure-monitor-datasource/plugin.json index ed2808a8dae..9789be257f8 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/plugin.json +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/plugin.json @@ -98,6 +98,15 @@ { "name": "x-ms-app", "content": "Grafana" } ] }, + { + "path": "chinaappinsights", + "method": "GET", + "url": "https://api.applicationinsights.azure.cn", + "headers": [ + { "name": "X-API-Key", "content": "{{.SecureJsonData.appInsightsApiKey}}" }, + { "name": "x-ms-app", "content": "Grafana" } + ] + }, { "path": "workspacesloganalytics", "method": "GET", @@ -113,6 +122,21 @@ }, "headers": [{ "name": "x-ms-app", "content": "Grafana" }] }, + { + "path": "chinaworkspacesloganalytics", + "method": "GET", + "url": "https://management.chinacloudapi.cn", + "tokenAuth": { + "url": "https://login.chinacloudapi.cn/{{.JsonData.logAnalyticsTenantId}}/oauth2/token", + "params": { + "grant_type": "client_credentials", + "client_id": "{{.JsonData.logAnalyticsClientId}}", + "client_secret": "{{.SecureJsonData.logAnalyticsClientSecret}}", + "resource": "https://management.chinacloudapi.cn/" + } + }, + "headers": [{ "name": "x-ms-app", "content": "Grafana" }] + }, { "path": "loganalyticsazure", "method": "GET", @@ -131,6 +155,25 @@ { "name": "Cache-Control", "content": "public, max-age=60" }, { "name": "Accept-Encoding", "content": "gzip" } ] + }, + { + "path": "chinaloganalyticsazure", + "method": "GET", + "url": "https://api.loganalytics.azure.cn/v1/workspaces", + "tokenAuth": { + "url": "https://login.chinacloudapi.cn/{{.JsonData.logAnalyticsTenantId}}/oauth2/token", + "params": { + "grant_type": "client_credentials", + "client_id": "{{.JsonData.logAnalyticsClientId}}", + "client_secret": "{{.SecureJsonData.logAnalyticsClientSecret}}", + "resource": "https://api.loganalytics.azure.cn" + } + }, + "headers": [ + { "name": "x-ms-app", "content": "Grafana" }, + { "name": "Cache-Control", "content": "public, max-age=60" }, + { "name": "Accept-Encoding", "content": "gzip" } + ] } ],