Skip to content

costs: Return cache result instead panicΒ #77

@jkroepke

Description

@jkroepke

Hi, sometimes,

azure-resourcegraph-exporter just panic, because of a HTTP 429 error:

{"level":"panic","caller":"azure-resourcemanager-exporter/metrics_azurerm_costs.go:407","msg":"unexpected status code: 429","query":"resource_id_monthly","timeframe":"Custom","subscriptionID":"81ae40e4-a73e-49ed-ae42-ad441988dd01","stacktrace":"main.(*MetricsCollectorAzureRmCosts).collectCostManagementMetrics\n\t/go/src/github.com/webdevops/azure-resourcemanager-exporter/metrics_azurerm_costs.go:407\nmain.(*MetricsCollectorAzureRmCosts).collectRunCostQuery.func1\n\t/go/src/github.com/webdevops/azure-resourcemanager-exporter/metrics_azurerm_costs.go:231\ngithub.com/webdevops/go-common/azuresdk/armclient.(*SubscriptionsIterator).ForEach\n\t/go/pkg/mod/github.com/webdevops/[email protected]/azuresdk/armclient/iterator.subscriptions.go:65\nmain.(*MetricsCollectorAzureRmCosts).collectRunCostQuery\n\t/go/src/github.com/webdevops/azure-resourcemanager-exporter/metrics_azurerm_costs.go:229\nmain.(*MetricsCollectorAzureRmCosts).Collect\n\t/go/src/github.com/webdevops/azure-resourcemanager-exporter/metrics_azurerm_costs.go:189\ngithub.com/webdevops/go-common/prometheus/collector.(*Collector).collectRun.func1\n\t/go/pkg/mod/github.com/webdevops/[email protected]/prometheus/collector/collector.go:380"}
panic: unexpected status code: 429

goroutine 8595 [running]:
go.uber.org/zap/zapcore.CheckWriteAction.OnWrite(0x0?, 0x0?, {0x0?, 0x0?, 0xc00056e160?})
	/go/pkg/mod/go.uber.org/[email protected]/zapcore/entry.go:198 +0x65
go.uber.org/zap/zapcore.(*CheckedEntry).Write(0xc00172c340, {0x0, 0x0, 0x0})
	/go/pkg/mod/go.uber.org/[email protected]/zapcore/entry.go:264 +0x3ec
go.uber.org/zap.(*SugaredLogger).log(0xc0001200a0, 0x4, {0x0?, 0x23?}, {0xc0018a9820?, 0xc00012a028?, 0xc0001200a0?}, {0x0, 0x0, 0x0})
	/go/pkg/mod/go.uber.org/[email protected]/sugar.go:295 +0xee
go.uber.org/zap.(*SugaredLogger).Panic(...)
	/go/pkg/mod/go.uber.org/[email protected]/sugar.go:153
main.(*MetricsCollectorAzureRmCosts).collectCostManagementMetrics(0xc0003997c0, 0x19?, 0xc0003806a0, {0xc0003a3c00, 0x33}, {0x2357915, 0xa}, 0xc0018a9ed8, {0xc00005ecaa, 0x6}, ...)
	/go/src/github.com/webdevops/azure-resourcemanager-exporter/metrics_azurerm_costs.go:407 +0xc99
main.(*MetricsCollectorAzureRmCosts).collectRunCostQuery.func1(0xc000476660, 0xc00306bb18?)
	/go/src/github.com/webdevops/azure-resourcemanager-exporter/metrics_azurerm_costs.go:231 +0x1db
github.com/webdevops/go-common/azuresdk/armclient.(*SubscriptionsIterator).ForEach(0xc000120050?, 0xc00306bcf0?, 0xc0018a9d00)
	/go/pkg/mod/github.com/webdevops/[email protected]/azuresdk/armclient/iterator.subscriptions.go:65 +0x1e2
main.(*MetricsCollectorAzureRmCosts).collectRunCostQuery(0xc0003997c0, 0xc0018a9ed8, 0xc000077e08?)
	/go/src/github.com/webdevops/azure-resourcemanager-exporter/metrics_azurerm_costs.go:229 +0x2ed
main.(*MetricsCollectorAzureRmCosts).Collect(0xc0003997c0, 0x26343e0?)
	/go/src/github.com/webdevops/azure-resourcemanager-exporter/metrics_azurerm_costs.go:189 +0xab
github.com/webdevops/go-common/prometheus/collector.(*Collector).collectRun.func1()
	/go/pkg/mod/github.com/webdevops/[email protected]/prometheus/collector/collector.go:380 +0x98
created by github.com/webdevops/go-common/prometheus/collector.(*Collector).collectRun
	/go/pkg/mod/github.com/webdevops/[email protected]/prometheus/collector/collector.go:351 +0x13b

instead return a panic, I would like to see the possibility to return a cached response instead a crash.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions