Fix scale set resource id with azure_monitor output (#5821)
This commit is contained in:
parent
9cdf1ea56e
commit
ad877fdd91
|
@ -43,6 +43,35 @@ type AzureMonitor struct {
|
||||||
MetricOutsideWindow selfstat.Stat
|
MetricOutsideWindow selfstat.Stat
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// VirtualMachineMetadata contains information about a VM from the metadata service
|
||||||
|
type virtualMachineMetadata struct {
|
||||||
|
Compute struct {
|
||||||
|
Location string `json:"location"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
ResourceGroupName string `json:"resourceGroupName"`
|
||||||
|
SubscriptionID string `json:"subscriptionId"`
|
||||||
|
VMScaleSetName string `json:"vmScaleSetName"`
|
||||||
|
} `json:"compute"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *virtualMachineMetadata) ResourceID() string {
|
||||||
|
if m.Compute.VMScaleSetName != "" {
|
||||||
|
return fmt.Sprintf(
|
||||||
|
resourceIDScaleSetTemplate,
|
||||||
|
m.Compute.SubscriptionID,
|
||||||
|
m.Compute.ResourceGroupName,
|
||||||
|
m.Compute.VMScaleSetName,
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
return fmt.Sprintf(
|
||||||
|
resourceIDTemplate,
|
||||||
|
m.Compute.SubscriptionID,
|
||||||
|
m.Compute.ResourceGroupName,
|
||||||
|
m.Compute.Name,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type dimension struct {
|
type dimension struct {
|
||||||
name string
|
name string
|
||||||
value string
|
value string
|
||||||
|
@ -65,6 +94,7 @@ const (
|
||||||
|
|
||||||
vmInstanceMetadataURL = "http://169.254.169.254/metadata/instance?api-version=2017-12-01"
|
vmInstanceMetadataURL = "http://169.254.169.254/metadata/instance?api-version=2017-12-01"
|
||||||
resourceIDTemplate = "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Compute/virtualMachines/%s"
|
resourceIDTemplate = "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Compute/virtualMachines/%s"
|
||||||
|
resourceIDScaleSetTemplate = "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Compute/virtualMachineScaleSets/%s"
|
||||||
urlTemplate = "https://%s.monitoring.azure.com%s/metrics"
|
urlTemplate = "https://%s.monitoring.azure.com%s/metrics"
|
||||||
urlOverrideTemplate = "%s%s/metrics"
|
urlOverrideTemplate = "%s%s/metrics"
|
||||||
maxRequestBodySize = 4000000
|
maxRequestBodySize = 4000000
|
||||||
|
@ -200,31 +230,17 @@ func vmInstanceMetadata(c *http.Client) (string, string, error) {
|
||||||
return "", "", err
|
return "", "", err
|
||||||
}
|
}
|
||||||
if resp.StatusCode >= 300 || resp.StatusCode < 200 {
|
if resp.StatusCode >= 300 || resp.StatusCode < 200 {
|
||||||
return "", "", fmt.Errorf("unable to fetch instance metadata: [%v] %s", resp.StatusCode, body)
|
return "", "", fmt.Errorf("unable to fetch instance metadata: [%s] %d",
|
||||||
|
vmInstanceMetadataURL, resp.StatusCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
// VirtualMachineMetadata contains information about a VM from the metadata service
|
var metadata virtualMachineMetadata
|
||||||
type VirtualMachineMetadata struct {
|
|
||||||
Compute struct {
|
|
||||||
Location string `json:"location"`
|
|
||||||
Name string `json:"name"`
|
|
||||||
ResourceGroupName string `json:"resourceGroupName"`
|
|
||||||
SubscriptionID string `json:"subscriptionId"`
|
|
||||||
} `json:"compute"`
|
|
||||||
}
|
|
||||||
|
|
||||||
var metadata VirtualMachineMetadata
|
|
||||||
if err := json.Unmarshal(body, &metadata); err != nil {
|
if err := json.Unmarshal(body, &metadata); err != nil {
|
||||||
return "", "", err
|
return "", "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
region := metadata.Compute.Location
|
region := metadata.Compute.Location
|
||||||
resourceID := fmt.Sprintf(
|
resourceID := metadata.ResourceID()
|
||||||
resourceIDTemplate,
|
|
||||||
metadata.Compute.SubscriptionID,
|
|
||||||
metadata.Compute.ResourceGroupName,
|
|
||||||
metadata.Compute.Name,
|
|
||||||
)
|
|
||||||
|
|
||||||
return region, resourceID, nil
|
return region, resourceID, nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue