azureusageprom

package module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 28, 2020 License: MIT Imports: 4 Imported by: 0

README

azure-usage-prom

Convert Azure resource usage to prometheus metrics.

Resource Link
Reference API
Docker Image Docker Build Status

Usage

$ ./azure-usage-prom \
    -query-targets "microsoft.compute|0000000-000-0000-0000-0000000000|eastus,microsoft.network|0000000-000-0000-0000-0000000000|eastus"
I1128 14:00:12.316210   23445 main.go:98] azure-usage-prom listening at :8080
$ curl -v http://localhost:8080/metrics

LICENSE

MIT

Documentation

Index

Constants

View Source
const (
	// PrometheusSubsystemUsage - sub system of the metrics.
	PrometheusSubsystemUsage = "usage"

	// PrometheusLabelUsageName - usage name label
	PrometheusLabelUsageName = "usage_name"
	// PrometheusLabelSubscriptionID - subscription id label
	PrometheusLabelSubscriptionID = "subscription_id"
	// PrometheusLabelLocation - location label
	PrometheusLabelLocation = "location"

	// PrometheusMetricLimit - usage limit metric
	PrometheusMetricLimit = "limit"
	// PrometheusMetricCurrentValue - usage limit value
	PrometheusMetricCurrentValue = "current_value"
)

Variables

This section is empty.

Functions

func AzureUsageToMetricLabels

func AzureUsageToMetricLabels(
	target QueryTarget,
	usage AzureUsage,
) []string

AzureUsageToMetricLabels converts usage to prometheus metric labels.

func AzureUsageToPromDescs

func AzureUsageToPromDescs(
	target QueryTarget,
	usage AzureUsage,
) (*prometheus.Desc, *prometheus.Desc)

AzureUsageToPromDescs converts usage to prometheus descriptors.

Types

type AzureUsage

type AzureUsage struct {
	ID           string         `json:"id"`
	CurrentValue int            `json:"currentValue"`
	Limit        int            `json:"limit"`
	Name         AzureUsageName `json:"name"`
	Unit         AzureUsageUnit `json:"unit"`
}

AzureUsage - Azure usage data. ref: https://docs.microsoft.com/en-us/rest/api/virtualnetwork/usages/list#usage

type AzureUsageList

type AzureUsageList struct {
	Value []AzureUsage `json:"value"`
}

AzureUsageList - Azure usage data list.

type AzureUsageLister

type AzureUsageLister interface {
	// ListByResourceProvider lists usage by resource provider.
	ListByResourceProvider(
		ctx context.Context,
		target QueryTarget,
	) (AzureUsageList, error)
}

AzureUsageLister lists Azure usage metrics.

type AzureUsageName

type AzureUsageName struct {
	Value          string `json:"value"`
	LocalizedValue string `json:"localizedValue"`
}

AzureUsageName - name of the usage.

type AzureUsageUnit

type AzureUsageUnit string

AzureUsageUnit - the usage unit enum.

type QueryTarget

type QueryTarget struct {
	ResourceProvider ResourceProvider
	SubscriptionID   string
	Location         string
}

QueryTarget defines the usage query target.

type ResourceProvider

type ResourceProvider string

ResourceProvider - Azure resource provider enum.

const (
	// ResourceProviderNetwork - network RP
	// https://docs.microsoft.com/en-us/rest/api/virtualnetwork/usages/list
	ResourceProviderNetwork ResourceProvider = "Microsoft.Network"
	// ResourceProviderCompute - compute RP
	// https://docs.microsoft.com/en-us/rest/api/compute/usage/list
	ResourceProviderCompute ResourceProvider = "Microsoft.Compute"
)

func ParseResourceProvider

func ParseResourceProvider(s string) (ResourceProvider, error)

ParseResourceProvider parses supported resource provider.

func (ResourceProvider) APIVersion

func (rp ResourceProvider) APIVersion() string

APIVersion returns the API version to use for a resource provider.

func (ResourceProvider) ToPromNamespace

func (rp ResourceProvider) ToPromNamespace() string

ToPromNamespace converts resource provider to prometheus namespace.

Directories

Path Synopsis
cmd
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL