Azure 自动化。 PSMetric 到整数
Azure Automation. PSMetric to integer
我正在尝试创建一个 Azure Automation 工作簿来查询资源的某些指标,并根据该指标进行一些缩放 up/down。
我不知道如何将 PSMetricData 转换为整数以便对其进行比较。我现在的代码是
$MonitorParameters = @{
ResourceId = "abcde....."
TimeGrain = [TimeSpan]::Parse("00:05:00")
MetricNames = "cpu_percent"
}
$MetricValues = Get-AzMetric @MonitorParameters -DetailedOutput
$Last = $MetricValues.Data[0]
Write-Output $Last
我的输出是
Microsoft.Azure.Commands.Insights.OutputClasses.PSMetricValue
我通常在寻找类似的东西:
“如果最后 5 分钟 cpu_percentage > 70%”,则扩大规模..
只要用Write-Output $Last.Average
代替Write-Output $Last
,就会得到具体的值。
你应该注意到从命令 Get-AzMetric
得到的最新值是在最后一个小时之前,例如如果现在是2:37:00 AM
,那么最新的是1:38:00 AM
,你无法获取last 5 mins
值,TimeGrain = [TimeSpan]::Parse("00:05:00")
只是意味着每五分钟获取一次值。
更新:
应该可以,我创建了一个新的弹性池并测试了它,它是0
。
我在 runbook 中的脚本:
$connectionName = "AzureRunAsConnection"
try
{
# Get the connection "AzureRunAsConnection "
$servicePrincipalConnection=Get-AutomationConnection -Name $connectionName
Connect-AzAccount `
-ServicePrincipal `
-TenantId $servicePrincipalConnection.TenantId `
-ApplicationId $servicePrincipalConnection.ApplicationId `
-CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint
}
catch {
if (!$servicePrincipalConnection)
{
$ErrorMessage = "Connection $connectionName not found."
throw $ErrorMessage
} else{
Write-Error -Message $_.Exception
throw $_.Exception
}
}
$MonitorParameters = @{
ResourceId = "/subscriptions/xxxxx/resourceGroups/xxxx/providers/Microsoft.Sql/servers/joyserver1/elasticPools/joypool"
TimeGrain = [TimeSpan]::Parse("00:05:00")
MetricNames = "cpu_percent"
}
$MetricValues = Get-AzMetric @MonitorParameters -DetailedOutput
$Last = $MetricValues.Data[0]
Write-Output $Last
问题是我创建的是 powershell 工作流,而不是本机 powershell 脚本。
上面@Joy Wang 的脚本现在可以按描述工作
我正在尝试创建一个 Azure Automation 工作簿来查询资源的某些指标,并根据该指标进行一些缩放 up/down。 我不知道如何将 PSMetricData 转换为整数以便对其进行比较。我现在的代码是
$MonitorParameters = @{
ResourceId = "abcde....."
TimeGrain = [TimeSpan]::Parse("00:05:00")
MetricNames = "cpu_percent"
}
$MetricValues = Get-AzMetric @MonitorParameters -DetailedOutput
$Last = $MetricValues.Data[0]
Write-Output $Last
我的输出是
Microsoft.Azure.Commands.Insights.OutputClasses.PSMetricValue
我通常在寻找类似的东西: “如果最后 5 分钟 cpu_percentage > 70%”,则扩大规模..
只要用Write-Output $Last.Average
代替Write-Output $Last
,就会得到具体的值。
你应该注意到从命令 Get-AzMetric
得到的最新值是在最后一个小时之前,例如如果现在是2:37:00 AM
,那么最新的是1:38:00 AM
,你无法获取last 5 mins
值,TimeGrain = [TimeSpan]::Parse("00:05:00")
只是意味着每五分钟获取一次值。
更新:
应该可以,我创建了一个新的弹性池并测试了它,它是0
。
我在 runbook 中的脚本:
$connectionName = "AzureRunAsConnection"
try
{
# Get the connection "AzureRunAsConnection "
$servicePrincipalConnection=Get-AutomationConnection -Name $connectionName
Connect-AzAccount `
-ServicePrincipal `
-TenantId $servicePrincipalConnection.TenantId `
-ApplicationId $servicePrincipalConnection.ApplicationId `
-CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint
}
catch {
if (!$servicePrincipalConnection)
{
$ErrorMessage = "Connection $connectionName not found."
throw $ErrorMessage
} else{
Write-Error -Message $_.Exception
throw $_.Exception
}
}
$MonitorParameters = @{
ResourceId = "/subscriptions/xxxxx/resourceGroups/xxxx/providers/Microsoft.Sql/servers/joyserver1/elasticPools/joypool"
TimeGrain = [TimeSpan]::Parse("00:05:00")
MetricNames = "cpu_percent"
}
$MetricValues = Get-AzMetric @MonitorParameters -DetailedOutput
$Last = $MetricValues.Data[0]
Write-Output $Last
问题是我创建的是 powershell 工作流,而不是本机 powershell 脚本。 上面@Joy Wang 的脚本现在可以按描述工作