Skip to content

Commit 01f69bd

Browse files
committed
implement proper azure cloud environment support
Signed-off-by: Markus Blaschke <[email protected]>
1 parent d895c4b commit 01f69bd

File tree

8 files changed

+31
-18
lines changed

8 files changed

+31
-18
lines changed

azure_loganalytics.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@ func NewAzureLogAnalysticsMetrics() *AzureLogAnalysticsMetrics {
2424
func (m *AzureLogAnalysticsMetrics) QueryClient() *operationalinsights.QueryClient {
2525
if m.client == nil {
2626
m.clientMutex.Lock()
27-
keyvaultAuth, err := auth.NewAuthorizerFromEnvironmentWithResource("https://api.loganalytics.io")
27+
authorizer, err := auth.NewAuthorizerFromEnvironmentWithResource(AzureEnvironment.ResourceIdentifiers.OperationalInsights)
2828
if err != nil {
2929
panic(err)
3030
}
3131

3232
client := operationalinsights.NewQueryClient()
33-
client.Authorizer = keyvaultAuth
33+
client.Authorizer = authorizer
3434
m.client = &client
3535
m.clientMutex.Unlock()
3636
}

config/opts.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,17 @@ type (
1414
LogJson bool ` long:"log.json" env:"LOG_JSON" description:"Switch log output to json format"`
1515
}
1616

17-
// concurrency settings
18-
ConcurrencySubscription int `long:"concurrency.subscription" env:"CONCURRENCY_SUBSCRIPTION" description:"Concurrent subscription fetches" default:"5"`
19-
ConcurrencySubscriptionResource int `long:"concurrency.subscription.resource" env:"CONCURRENCY_SUBSCRIPTION_RESOURCE" description:"Concurrent requests per resource (inside subscription requests)" default:"10"`
20-
Cache bool `long:"enable-caching" env:"ENABLE_CACHING" description:"Enable internal caching"`
17+
// azure
18+
Azure struct {
19+
Environment *string `long:"azure-environment" env:"AZURE_ENVIRONMENT" description:"Azure environment name" default:"AZUREPUBLICCLOUD"`
20+
}
21+
22+
// Prober settings
23+
Prober struct {
24+
ConcurrencySubscription int `long:"concurrency.subscription" env:"CONCURRENCY_SUBSCRIPTION" description:"Concurrent subscription fetches" default:"5"`
25+
ConcurrencySubscriptionResource int `long:"concurrency.subscription.resource" env:"CONCURRENCY_SUBSCRIPTION_RESOURCE" description:"Concurrent requests per resource (inside subscription requests)" default:"10"`
26+
Cache bool `long:"enable-caching" env:"ENABLE_CACHING" description:"Enable internal caching"`
27+
}
2128

2229
// general options
2330
ServerBind string `long:"bind" env:"SERVER_BIND" description:"Server address" default:":8080"`

main.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package main
33
import (
44
"fmt"
55
"github.com/Azure/go-autorest/autorest"
6+
"github.com/Azure/go-autorest/autorest/azure"
67
"github.com/Azure/go-autorest/autorest/azure/auth"
78
"github.com/jessevdk/go-flags"
89
"github.com/patrickmn/go-cache"
@@ -42,7 +43,8 @@ var (
4243
argparser *flags.Parser
4344
opts config.Opts
4445

45-
AzureAuthorizer autorest.Authorizer
46+
AzureEnvironment azure.Environment
47+
AzureAuthorizer autorest.Authorizer
4648

4749
prometheusCollectTime *prometheus.SummaryVec
4850
prometheusMetricRequests *prometheus.CounterVec
@@ -125,10 +127,15 @@ func initArgparser() {
125127
func initAzureConnection() {
126128
var err error
127129

130+
AzureEnvironment, err = azure.EnvironmentFromName(*opts.Azure.Environment)
131+
if err != nil {
132+
log.Panic(err)
133+
}
134+
128135
// setup azure authorizer
129136
AzureAuthorizer, err = auth.NewAuthorizerFromEnvironment()
130137
if err != nil {
131-
panic(err)
138+
log.Panic(err)
132139
}
133140

134141
azureInsightMetrics = NewAzureInsightMetrics()

probe_loganalytics_query.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ func probeLogAnalyticsQueryHandler(w http.ResponseWriter, r *http.Request) {
2020
startTime := time.Now()
2121

2222
contextLogger := buildContextLoggerFromRequest(r)
23-
23+
2424
// If a timeout is configured via the Prometheus header, add it to the request.
2525
timeoutSeconds, err = getPrometheusTimeout(r, ProbeLoganalyticsScrapeTimeoutDefault)
2626
if err != nil {

probe_metrics_list.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import (
1616
func probeMetricsListHandler(w http.ResponseWriter, r *http.Request) {
1717
var err error
1818
var timeoutSeconds float64
19-
wg := sizedwaitgroup.New(opts.ConcurrencySubscription)
19+
wg := sizedwaitgroup.New(opts.Prober.ConcurrencySubscription)
2020

2121
startTime := time.Now()
2222

@@ -57,7 +57,7 @@ func probeMetricsListHandler(w http.ResponseWriter, r *http.Request) {
5757
wg.Add()
5858
go func(subscription string) {
5959
defer wg.Done()
60-
wgResource := sizedwaitgroup.New(opts.ConcurrencySubscriptionResource)
60+
wgResource := sizedwaitgroup.New(opts.Prober.ConcurrencySubscriptionResource)
6161

6262
// fetch list of resources
6363
list, err := azureInsightMetrics.ListResources(subscription, settings.Filter)
@@ -78,7 +78,7 @@ func probeMetricsListHandler(w http.ResponseWriter, r *http.Request) {
7878

7979
resourceLogger := contextLogger.WithFields(log.Fields{
8080
"azureSubscription": subscription,
81-
"azureResource": *val.ID,
81+
"azureResource": *val.ID,
8282
})
8383

8484
if err == nil {

probe_metrics_resource.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ func probeMetricsResourceHandler(w http.ResponseWriter, r *http.Request) {
7070

7171
resourceLogger := contextLogger.WithFields(log.Fields{
7272
"azureSubscription": subscription,
73-
"azureResource": target,
73+
"azureResource": target,
7474
})
7575

7676
if err != nil {

probe_metrics_scrape.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ func probeMetricsScrapeHandler(w http.ResponseWriter, r *http.Request) {
1717
var err error
1818
var timeoutSeconds float64
1919
var metricTagName, aggregationTagName string
20-
wg := sizedwaitgroup.New(opts.ConcurrencySubscription)
20+
wg := sizedwaitgroup.New(opts.Prober.ConcurrencySubscription)
2121
params := r.URL.Query()
2222

2323
startTime := time.Now()
@@ -70,11 +70,10 @@ func probeMetricsScrapeHandler(w http.ResponseWriter, r *http.Request) {
7070
wg.Add()
7171
go func(subscription string) {
7272
defer wg.Done()
73-
wgResource := sizedwaitgroup.New(opts.ConcurrencySubscriptionResource)
73+
wgResource := sizedwaitgroup.New(opts.Prober.ConcurrencySubscriptionResource)
7474

7575
list, err := azureInsightMetrics.ListResources(subscription, settings.Filter)
7676

77-
7877
if err != nil {
7978
contextLogger.Errorln(err)
8079
http.Error(w, err.Error(), http.StatusBadRequest)
@@ -86,7 +85,7 @@ func probeMetricsScrapeHandler(w http.ResponseWriter, r *http.Request) {
8685

8786
resourceLogger := contextLogger.WithFields(log.Fields{
8887
"azureSubscription": subscription,
89-
"azureResource": *val.ID,
88+
"azureResource": *val.ID,
9089
})
9190

9291
wgResource.Add()

request.metric.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ func NewRequestMetricSettings(r *http.Request) (RequestMetricSettings, error) {
100100
ret.MetricOrderBy = paramsGetWithDefault(params, "metricOrderBy", "")
101101

102102
// param cache (timespan as default)
103-
if opts.Cache {
103+
if opts.Prober.Cache {
104104
cacheDefaultDuration, err := iso8601.FromString(ret.Timespan)
105105
cacheDefaultDurationString := ""
106106
if err == nil {

0 commit comments

Comments
 (0)