您好,登錄后才能下訂單哦!
通過(guò)上一篇的簡(jiǎn)介,相信各位對(duì)于簡(jiǎn)單的創(chuàng)建alert,以及Azure monitor使用以及大概有個(gè)印象了?;A(chǔ)的使用總是非常簡(jiǎn)單的,這里再分享一個(gè)常用的alert使用方法
實(shí)際工作中,不管是日常運(yùn)維還是做項(xiàng)目,我們都需要知道VM的實(shí)際性能情況,避免出現(xiàn)性能瓶頸,因此創(chuàng)建alert是一種非常方便的方式,我們可以通過(guò)alert第一時(shí)間知道系統(tǒng)出現(xiàn)了性能的瓶頸,以便盡快采取解決措施。
因此,也衍生了一個(gè)實(shí)際的問(wèn)題,單獨(dú)為一臺(tái)VM開(kāi)啟alert很簡(jiǎn)單,但是如果我們需要為一個(gè)資源組內(nèi)十幾甚至幾十上百臺(tái)VM統(tǒng)一創(chuàng)建alert,則會(huì)非常麻煩
在這里分享一個(gè)自己寫(xiě)的簡(jiǎn)單腳本,可以通過(guò)批量的方式為一個(gè)資源組內(nèi)的所有VM,或者是某個(gè)單獨(dú)的VM創(chuàng)建alert,省去很多不必要的重復(fù)性工作,以下是代碼的內(nèi)容
<# .NOTES =========================================================================== Created with: SAPIEN Technologies, Inc., PowerShell Studio 2017 v5.4.134 Created on: 2019/1/10 13:19 Created by: mxy Organization: Filename: =========================================================================== .DESCRIPTION A description of the file. #> param ( [parameter(Mandatory = $true)] [string]$RGName,#資源組名稱 [parameter(Mandatory = $false)] [string]$VmName,#VM名稱 [parameter(Mandatory = $true)] [string]$MailAddress,#郵件地址 [parameter(Mandatory = $false)] [ValidateSet("CPU", "Memory")] [string]$Metric = "CPU",#需要針對(duì)哪個(gè)metric創(chuàng)建alert,方便起見(jiàn)這里目前只是設(shè)置了CPU和內(nèi)存兩種 [parameter(Mandatory = $false)] [ValidateSet("GreaterThan", "GreaterThanOrEqual", "LessThan", "LessThanOrEqual")] [string]$Operation = "GreaterThan",#操作條件 [parameter(Mandatory = $false)] [int]$Threshold = 50,#閾值 [parameter(Mandatory = $false)] [ValidateSet("Average", "Last", "Maximum", "Minimum", "Total")]#計(jì)算方式,是平均還是最大等 [string]$TimeAggregationOperator = "Average", [parameter(Mandatory = $false)] [TimeSpan]$WindowSize = "00:05:00"#時(shí)間戳 ) function Write-DateTimeMessage { param ( [parameter(Mandatory = $false)] [switch]$Warning, [parameter(Mandatory = $true)] [string]$Message, [parameter(Mandatory = $false)] [string]$ForegroundColor ) if ($Warning) { Write-Warning ($(Get-Date -UFormat '%Y/%m/%d %H:%M:%S') + " * " + $Message) } else { if ($ForegroundColor) { Write-Host ($(Get-Date -UFormat '%Y/%m/%d %H:%M:%S') + " * " + $Message) -ForegroundColor $ForegroundColor } else { Write-Host ($(Get-Date -UFormat '%Y/%m/%d %H:%M:%S') + " * " + $Message) } } } #Get metric name switch ($Metric) { Memory { $MetricName = "\Memory\% Committed Bytes In Use" } CPU { $MetricName = "\Processor Information(_Total)\% Processor Time" } default { #<code> } } #Find the vm if vmname parameter specified try { $Error.Clear() if ($VmName) { Write-DateTimeMessage "Trying to find vm $VmName in resource group $RGName" $vms = Get-AzureRmVM -ResourceGroupName $RGName -Name $VmName -ErrorAction Stop Write-DateTimeMessage "vm $VmName Found in resource group $RGName" } else { $vms = Get-AzureRmVM -ResourceGroupName $RGName -ErrorAction Stop } # Create action email $actionEmail = New-AzureRmAlertRuleEmail -CustomEmail $MailAddress -WarningAction SilentlyContinue # Get resource id and add alert if ($vms -ne $null) { foreach ($vm in $vms) { $vmID = $vm.id $AlertName = $vm.Name + "_Alert_" + $Metric + "_" + $Operation + "_" + $Threshold + "_" + $actionEmail.CustomEmails $Error.Clear() Write-DateTimeMessage "Trying to add alert for vm $($vm.Name) ..." Add-AzureRmMetricAlertRule -Name $AlertName -Location "ChinaEast" -ResourceGroup $RGName -TargetResourceId $vmID -MetricName $MetricName -Operator $Operation -Threshold $Threshold -WindowSize $WindowSize -TimeAggregationOperator $TimeAggregationOperator -Action $actionEmail -ErrorAction 'Stop' -WarningAction 'SilentlyContinue' | Out-Null Write-DateTimeMessage "Add alert for vm $($vm.Name) successfully!" } } else { Write-DateTimeMessage "No vm in resource group $RGName" } } catch { Write-DateTimeMessage $Error[0].Exception.Message }
可以看到腳本很簡(jiǎn)單,運(yùn)行方法這里舉個(gè)例子,比如要為mxytest這個(gè)資源組下的所有VM創(chuàng)建CPU10分鐘之內(nèi)大于80便發(fā)郵件給abc@abc.com的alert,則可以按照以下方式運(yùn)行
.\Create-AzureAlert.ps1 -RGName mxytest -MailAddress "abc@abc.com" -Metric CPU -Operation GreaterThan -Threshold 80 -TimeAggregationOperator Average -WindowSize "00:10:00"
創(chuàng)建完成后即可在alert中國(guó)看到對(duì)應(yīng)的內(nèi)容
Get-AzureRmAlertRule -ResourceGroupName mxytest -WarningAction SilentlyContinue
也可以通過(guò)PowerShell獲取到信息
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。