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 的脚本现在可以按描述工作