Documentation
¶
Index ¶
Examples ¶
Constants ¶
const ServiceName cloud.ServiceName = "query/azmetrics"
Cloud Service Names for Monitor Query Metrics, used to identify the respective cloud.ServiceConfiguration
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client contains the methods for the group. Don't use this type directly, use a constructor function instead.
func NewClient ¶
func NewClient(endpoint string, credential azcore.TokenCredential, options *ClientOptions) (*Client, error)
NewClient creates a client that accesses Azure Monitor metrics data. Client should be used for performing metrics queries on multiple monitored resources in the same region. A credential with authorization at the subscription level is required when using this client.
endpoint - The regional endpoint to use, for example https://eastus.metrics.monitor.azure.com. The region should match the region of the requested resources. For global resources, the region should be 'global'.
Example ¶
package main
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/monitor/query/azmetrics"
)
func main() {
// The regional endpoint to use. The region should match the region of the requested resources.
// For global resources, the region should be 'global'
endpoint := "https://eastus.metrics.monitor.azure.com"
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
//TODO: handle error
}
client, err := azmetrics.NewClient(endpoint, cred, nil)
if err != nil {
//TODO: handle error
}
_ = client
}
func (*Client) QueryResources ¶
func (client *Client) QueryResources(ctx context.Context, subscriptionID string, metricNamespace string, metricNames []string, resourceIDs ResourceIDList, options *QueryResourcesOptions) (QueryResourcesResponse, error)
QueryResources - Lists the metric values for multiple resources. If the operation fails it returns an *azcore.ResponseError type.
Generated from API version 2024-02-01
- subscriptionID - The subscription identifier for the resources in this batch.
- metricNamespace - Metric namespace that contains the requested metric names.
- metricNames - The names of the metrics (comma separated) to retrieve.
- resourceIDs - Metrics batch body including the list of resource ids
- options - QueryResourcesOptions contains the optional parameters for the Client.QueryResources method.
Example ¶
// This sample uses the Client to retrieve the "Ingress"
// metric along with the "Average" aggregation type for multiple resources.
// The query will execute over a timespan of 2 hours with a interval (granularity) of 5 minutes.
// In this example, storage account resource URIs are queried for metrics.
resourceURI1 := "/subscriptions/<id>/resourceGroups/<rg>/providers/Microsoft.Storage/storageAccounts/<account-1>"
resourceURI2 := "/subscriptions/<id>/resourceGroups/<rg>/providers/Microsoft.Storage/storageAccounts/<account-2>"
res, err := client.QueryResources(
context.Background(),
subscriptionID,
"Microsoft.Storage/storageAccounts",
[]string{"Ingress"},
azmetrics.ResourceIDList{ResourceIDs: []string{resourceURI1, resourceURI2}},
&azmetrics.QueryResourcesOptions{
Aggregation: to.Ptr("average"),
StartTime: to.Ptr("2023-11-15"),
EndTime: to.Ptr("2023-11-16"),
Interval: to.Ptr("PT5M"),
},
)
if err != nil {
//TODO: handle error
}
// Print out results
for _, result := range res.Values {
for _, metric := range result.Values {
fmt.Println(*metric.Name.Value + ": " + *metric.DisplayDescription)
for _, timeSeriesElement := range metric.TimeSeries {
for _, metricValue := range timeSeriesElement.Data {
fmt.Printf("The ingress at %v is %v.\n", metricValue.TimeStamp.String(), *metricValue.Average)
}
}
}
}
type ClientOptions ¶
type ClientOptions struct {
azcore.ClientOptions
}
ClientOptions contains optional settings for Client.
type LocalizableString ¶
type LocalizableString struct {
// REQUIRED; The invariant value.
Value *string
// The display name.
LocalizedValue *string
}
LocalizableString - The localizable string class.
func (LocalizableString) MarshalJSON ¶
func (l LocalizableString) MarshalJSON() ([]byte, error)
MarshalJSON implements the json.Marshaller interface for type LocalizableString.
func (*LocalizableString) UnmarshalJSON ¶
func (l *LocalizableString) UnmarshalJSON(data []byte) error
UnmarshalJSON implements the json.Unmarshaller interface for type LocalizableString.
type MetadataValue ¶
type MetadataValue struct {
// The name of the metadata.
Name *LocalizableString
// The value of the metadata.
Value *string
}
MetadataValue - Represents a metric metadata value.
func (MetadataValue) MarshalJSON ¶
func (m MetadataValue) MarshalJSON() ([]byte, error)
MarshalJSON implements the json.Marshaller interface for type MetadataValue.
func (*MetadataValue) UnmarshalJSON ¶
func (m *MetadataValue) UnmarshalJSON(data []byte) error
UnmarshalJSON implements the json.Unmarshaller interface for type MetadataValue.
type Metric ¶
type Metric struct {
// REQUIRED; The metric Id.
ID *string
// REQUIRED; The name and the display name of the metric, i.e. it is localizable string.
Name *LocalizableString
// REQUIRED; The time series returned when a data query is performed.
TimeSeries []TimeSeriesElement
// REQUIRED; The resource type of the metric resource.
Type *string
// REQUIRED; The unit of the metric.
Unit *MetricUnit
// Detailed description of this metric.
DisplayDescription *string
// 'Success' or the error details on query failures for this metric.
ErrorCode *string
// Error message encountered querying this specific metric.
ErrorMessage *string
}
Metric - The result data of a query.
func (Metric) MarshalJSON ¶
MarshalJSON implements the json.Marshaller interface for type Metric.
func (*Metric) UnmarshalJSON ¶
UnmarshalJSON implements the json.Unmarshaller interface for type Metric.
type MetricData ¶ added in v1.0.0
type MetricData struct {
// REQUIRED; The end time, in datetime format, for which the data was retrieved.
EndTime *string
// REQUIRED; The start time, in datetime format, for which the data was retrieved.
StartTime *string
// REQUIRED; The value of the collection.
Values []Metric
// The interval (window size) for which the metric data was returned in ISO 8601
// duration format with a special case for 'FULL' value that returns single
// datapoint for entire time span requested (*Examples: PT15M, PT1H, P1D, FULL*).
// This may be adjusted and different from what was originally requested if
// AutoAdjustTimegrain=true is specified.
Interval *string
// The namespace of the metrics been queried
Namespace *string
// The resource that has been queried for metrics.
ResourceID *string
// The region of the resource been queried for metrics.
ResourceRegion *string
}
MetricData - The metric data response for a resource.
func (MetricData) MarshalJSON ¶ added in v1.0.0
func (m MetricData) MarshalJSON() ([]byte, error)
MarshalJSON implements the json.Marshaller interface for type MetricData.
func (*MetricData) UnmarshalJSON ¶ added in v1.0.0
func (m *MetricData) UnmarshalJSON(data []byte) error
UnmarshalJSON implements the json.Unmarshaller interface for type MetricData.
type MetricResults ¶
type MetricResults struct {
// The collection of metric data responses per resource, per metric.
Values []MetricData
}
MetricResults - The metrics result for a resource.
func (MetricResults) MarshalJSON ¶
func (m MetricResults) MarshalJSON() ([]byte, error)
MarshalJSON implements the json.Marshaller interface for type MetricResults.
func (*MetricResults) UnmarshalJSON ¶
func (m *MetricResults) UnmarshalJSON(data []byte) error
UnmarshalJSON implements the json.Unmarshaller interface for type MetricResults.
type MetricUnit ¶
type MetricUnit string
MetricUnit - The unit of the metric.
const ( // MetricUnitBitsPerSecond - Rate unit of binary digits per second. MetricUnitBitsPerSecond MetricUnit = "BitsPerSecond" // MetricUnitByteSeconds - Unit of data transfer or storage. It is the size of the data in bytes // multiplied by the time it takes to transfer or store the data in seconds. MetricUnitByteSeconds MetricUnit = "ByteSeconds" // MetricUnitBytes - Unit of memory in bytes. MetricUnitBytes MetricUnit = "Bytes" // MetricUnitBytesPerSecond - Rate unit of memory in bytes per second. MetricUnitBytesPerSecond MetricUnit = "BytesPerSecond" // MetricUnitCores - Unit of processing power. MetricUnitCores MetricUnit = "Cores" // MetricUnitCount - Unit of raw quantity. MetricUnitCount MetricUnit = "Count" // MetricUnitCountPerSecond - Rate unit of raw quantity per second. MetricUnitCountPerSecond MetricUnit = "CountPerSecond" // MetricUnitMilliCores - Unit of processing power in 1/1000th of a CPU core. MetricUnitMilliCores MetricUnit = "MilliCores" // MetricUnitMilliSeconds - Unit of time in 1/1000th of a second. MetricUnitMilliSeconds MetricUnit = "MilliSeconds" // MetricUnitNanoCores - Unit of processing power in one billionth of a CPU core. MetricUnitNanoCores MetricUnit = "NanoCores" // MetricUnitPercent - Percentage unit. MetricUnitPercent MetricUnit = "Percent" // MetricUnitSeconds - Unit of time in seconds. MetricUnitSeconds MetricUnit = "Seconds" // MetricUnitUnspecified - No specified unit. MetricUnitUnspecified MetricUnit = "Unspecified" )
func PossibleMetricUnitValues ¶
func PossibleMetricUnitValues() []MetricUnit
PossibleMetricUnitValues returns the possible values for the MetricUnit const type.
type MetricValue ¶
type MetricValue struct {
// REQUIRED; The timestamp for the metric value in ISO 8601 format.
TimeStamp *time.Time
// The average value in the time range.
Average *float64
// The number of samples in the time range. Can be used to determine the number of
// values that contributed to the average value.
Count *float64
// The greatest value in the time range.
Maximum *float64
// The least value in the time range.
Minimum *float64
// The sum of all of the values in the time range.
Total *float64
}
MetricValue - Represents a metric value.
func (MetricValue) MarshalJSON ¶
func (m MetricValue) MarshalJSON() ([]byte, error)
MarshalJSON implements the json.Marshaller interface for type MetricValue.
func (*MetricValue) UnmarshalJSON ¶
func (m *MetricValue) UnmarshalJSON(data []byte) error
UnmarshalJSON implements the json.Unmarshaller interface for type MetricValue.
type QueryResourcesOptions ¶
type QueryResourcesOptions struct {
// The list of aggregation types (comma separated) to retrieve. *Examples: average, minimum, maximum*
Aggregation *string
// The end time of the query. It is a string in the format 'yyyy-MM-ddTHH:mm:ss.fffZ'.
EndTime *string
// The filter is used to reduce the set of metric data
// returned.<br>Example:<br>Metric contains metadata A, B and C.<br>- Return all
// time series of C where A = a1 and B = b1 or b2<br>**filter=A eq ‘a1’ and B eq
// ‘b1’ or B eq ‘b2’ and C eq ‘*’**<br>- Invalid variant:<br>**filter=A eq ‘a1’
// and B eq ‘b1’ and C eq ‘*’ or B = ‘b2’**<br>This is invalid because the logical
// or operator cannot separate two different metadata names.<br>- Return all time
// series where A = a1, B = b1 and C = c1:<br>**filter=A eq ‘a1’ and B eq ‘b1’ and
// C eq ‘c1’**<br>- Return all time series where A = a1<br>**filter=A eq ‘a1’ and
// B eq ‘*’ and C eq ‘*’**.
Filter *string
// The interval (i.e. timegrain) of the query in ISO 8601 duration format.
// Defaults to PT1M. Special case for 'FULL' value that returns single datapoint
// for entire time span requested.
// *Examples: PT15M, PT1H, P1D, FULL*
Interval *string
// The aggregation to use for sorting results and the direction of the sort.
// Only one order can be specified.
// *Examples: sum asc*
OrderBy *string
// Dimension name(s) to rollup results by. For example if you only want to see
// metric values with a filter like 'City eq Seattle or City eq Tacoma' but don't
// want to see separate values for each city, you can specify 'RollUpBy=City' to
// see the results for Seattle and Tacoma rolled up into one timeseries.
RollUpBy *string
// The start time of the query. It is a string in the format
// 'yyyy-MM-ddTHH:mm:ss.fffZ'. If you have specified the endtime parameter, then
// this parameter is required.
// If only starttime is specified, then endtime defaults to the current time.
// If no time interval is specified, the default is 1 hour.
StartTime *string
// The maximum number of records to retrieve per resource ID in the request.
// Valid only if filter is specified.
// Defaults to 10.
Top *int32
}
QueryResourcesOptions contains the optional parameters for the Client.QueryResources method.
type QueryResourcesResponse ¶
type QueryResourcesResponse struct {
// The metrics result for a resource.
MetricResults
}
QueryResourcesResponse contains the response from method Client.QueryResources.
type ResourceIDList ¶
type ResourceIDList struct {
// The list of resource IDs to query metrics for.
ResourceIDs []string
}
ResourceIDList - The comma separated list of resource IDs to query metrics for.
func (ResourceIDList) MarshalJSON ¶
func (r ResourceIDList) MarshalJSON() ([]byte, error)
MarshalJSON implements the json.Marshaller interface for type ResourceIDList.
func (*ResourceIDList) UnmarshalJSON ¶
func (r *ResourceIDList) UnmarshalJSON(data []byte) error
UnmarshalJSON implements the json.Unmarshaller interface for type ResourceIDList.
type TimeSeriesElement ¶
type TimeSeriesElement struct {
// An array of data points representing the metric values. This is only returned
// if a result type of data is specified.
Data []MetricValue
// The metadata values returned if $filter was specified in the call.
MetadataValues []MetadataValue
}
TimeSeriesElement - A time series result type. The discriminator value is always TimeSeries in this case.
func (TimeSeriesElement) MarshalJSON ¶
func (t TimeSeriesElement) MarshalJSON() ([]byte, error)
MarshalJSON implements the json.Marshaller interface for type TimeSeriesElement.
func (*TimeSeriesElement) UnmarshalJSON ¶
func (t *TimeSeriesElement) UnmarshalJSON(data []byte) error
UnmarshalJSON implements the json.Unmarshaller interface for type TimeSeriesElement.