diff --git a/plugins/outputs/application_insights/README.md b/plugins/outputs/application_insights/README.md index c64e844885565..34017a89f0bab 100644 --- a/plugins/outputs/application_insights/README.md +++ b/plugins/outputs/application_insights/README.md @@ -7,6 +7,9 @@ This plugin writes telegraf metrics to [Azure Application Insights](https://azur [[outputs.application_insights]] ## Instrumentation key of the Application Insights resource. instrumentation_key = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx" + + ## Regions that require endpoint modification https://docs.microsoft.com/en-us/azure/azure-monitor/app/custom-endpoints + # endpoint_url = "https://dc.services.visualstudio.com/v2/track" ## Timeout for closing (default: 5s). # timeout = "5s" diff --git a/plugins/outputs/application_insights/application_insights.go b/plugins/outputs/application_insights/application_insights.go index 3da4202187126..3ab16af6fc313 100644 --- a/plugins/outputs/application_insights/application_insights.go +++ b/plugins/outputs/application_insights/application_insights.go @@ -24,6 +24,7 @@ type DiagnosticsMessageSubscriber interface { type ApplicationInsights struct { InstrumentationKey string + EndpointURL string Timeout internal.Duration EnableDiagnosticLogging bool ContextTagSources map[string]string @@ -43,6 +44,9 @@ var ( sampleConfig = ` ## Instrumentation key of the Application Insights resource. instrumentation_key = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx" + + ## Regions that require endpoint modification https://docs.microsoft.com/en-us/azure/azure-monitor/app/custom-endpoints + # endpoint_url = "https://dc.services.visualstudio.com/v2/track" ## Timeout for closing (default: 5s). # timeout = "5s" @@ -76,7 +80,7 @@ func (a *ApplicationInsights) Connect() error { } if a.transmitter == nil { - a.transmitter = NewTransmitter(a.InstrumentationKey) + a.transmitter = NewTransmitter(a.InstrumentationKey, a.EndpointURL) } if a.EnableDiagnosticLogging && a.diagMsgSubscriber != nil { diff --git a/plugins/outputs/application_insights/transmitter.go b/plugins/outputs/application_insights/transmitter.go index 44bc1b80626b5..024ea32809fb0 100644 --- a/plugins/outputs/application_insights/transmitter.go +++ b/plugins/outputs/application_insights/transmitter.go @@ -1,13 +1,21 @@ package application_insights -import "github.com/Microsoft/ApplicationInsights-Go/appinsights" +import ( + "github.com/Microsoft/ApplicationInsights-Go/appinsights" +) type Transmitter struct { client appinsights.TelemetryClient } -func NewTransmitter(ikey string) *Transmitter { - return &Transmitter{client: appinsights.NewTelemetryClient(ikey)} +func NewTransmitter(ikey string, endpointURL string) *Transmitter { + if len(endpointURL) == 0 { + return &Transmitter{client: appinsights.NewTelemetryClient(ikey)} + } else { + telemetryConfig := appinsights.NewTelemetryConfiguration(ikey) + telemetryConfig.EndpointUrl = endpointURL + return &Transmitter{client: appinsights.NewTelemetryClientFromConfig(telemetryConfig)} + } } func (t *Transmitter) Track(telemetry appinsights.Telemetry) {