通過上一篇的簡介,相信各位對于簡單的創(chuàng)建alert,以及Azure monitor使用以及大概有個印象了。基礎(chǔ)的使用總是非常簡單的,這里再分享一個常用的alert使用方法
成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、網(wǎng)站建設(shè)、個舊網(wǎng)絡(luò)推廣、成都小程序開發(fā)、個舊網(wǎng)絡(luò)營銷、個舊企業(yè)策劃、個舊品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)公司為所有大學生創(chuàng)業(yè)者提供個舊建站搭建服務(wù),24小時服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
實際工作中,不管是日常運維還是做項目,我們都需要知道VM的實際性能情況,避免出現(xiàn)性能瓶頸,因此創(chuàng)建alert是一種非常方便的方式,我們可以通過alert第一時間知道系統(tǒng)出現(xiàn)了性能的瓶頸,以便盡快采取解決措施。
因此,也衍生了一個實際的問題,單獨為一臺VM開啟alert很簡單,但是如果我們需要為一個資源組內(nèi)十幾甚至幾十上百臺VM統(tǒng)一創(chuàng)建alert,則會非常麻煩
在這里分享一個自己寫的簡單腳本,可以通過批量的方式為一個資源組內(nèi)的所有VM,或者是某個單獨的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",#需要針對哪個metric創(chuàng)建alert,方便起見這里目前只是設(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")]#計算方式,是平均還是最大等
[string]$TimeAggregationOperator = "Average",
[parameter(Mandatory = $false)]
[TimeSpan]$WindowSize = "00:05:00"#時間戳
)
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
{
#
}
}
#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
}
可以看到腳本很簡單,運行方法這里舉個例子,比如要為mxytest這個資源組下的所有VM創(chuàng)建CPU10分鐘之內(nèi)大于80便發(fā)郵件給abc@abc.com的alert,則可以按照以下方式運行
.\Create-AzureAlert.ps1 -RGName mxytest -MailAddress "abc@abc.com" -Metric CPU -Operation GreaterThan -Threshold 80 -TimeAggregationOperator Average -WindowSize "00:10:00"
創(chuàng)建完成后即可在alert中國看到對應(yīng)的內(nèi)容
Get-AzureRmAlertRule -ResourceGroupName mxytest -WarningAction SilentlyContinue
也可以通過PowerShell獲取到信息