Azure实践之如何批量为资源组虚拟机创建alert
发表于:2024-07-27 作者:千家信息网编辑
千家信息网最后更新 2024年07月27日,通过上一篇的简介,相信各位对于简单的创建alert,以及Azure monitor使用以及大概有个印象了。基础的使用总是非常简单的,这里再分享一个常用的alert使用方法实际工作中,不管是日常运维还是
千家信息网最后更新 2024年07月27日Azure实践之如何批量为资源组虚拟机创建alert
通过上一篇的简介,相信各位对于简单的创建alert,以及Azure monitor使用以及大概有个印象了。基础的使用总是非常简单的,这里再分享一个常用的alert使用方法
实际工作中,不管是日常运维还是做项目,我们都需要知道VM的实际性能情况,避免出现性能瓶颈,因此创建alert是一种非常方便的方式,我们可以通过alert第一时间知道系统出现了性能的瓶颈,以便尽快采取解决措施。
因此,也衍生了一个实际的问题,单独为一台VM开启alert很简单,但是如果我们需要为一个资源组内十几甚至几十上百台VM统一创建alert,则会非常麻烦
在这里分享一个自己写的简单脚本,可以通过批量的方式为一个资源组内的所有VM,或者是某个单独的VM创建alert,省去很多不必要的重复性工作,以下是代码的内容
<# .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创建alert,方便起见这里目前只是设置了CPU和内存两种 [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 nameswitch ($Metric){ Memory { $MetricName = "\Memory\% Committed Bytes In Use" } CPU { $MetricName = "\Processor Information(_Total)\% Processor Time" } default { # }}#Find the vm if vmname parameter specifiedtry{ $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创建CPU10分钟之内大于80便发邮件给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"
创建完成后即可在alert中国看到对应的内容
Get-AzureRmAlertRule -ResourceGroupName mxytest -WarningAction SilentlyContinue
也可以通过PowerShell获取到信息
资源
方式
可以通过
实际
性能
内容
名称
方法
瓶颈
脚本
还是
邮件
工作
运行
最大
代码
使用方法
例子
信息
内存
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全漫画作品中学生作品
如何查找app连接的服务器地址
高槻泉界服务器设置家
无密码网络安全
电信网络安全工程师职称
中小学生网络安全汇报
日本住友软件开发强不强
网络安全管理局有用吗
office数据库的功能
通信网络安全小说
七日杀服务器老掉线
工业园区高品质服务器
博兴设备软件开发服务
打印机服务器的配置与管理
网络安全防范的例子
网络安全管控监狱信息
网络安全创新能力比赛
元宇宙软件开发上市公司
网络安全具体做什么
平阴软件开发电话
军营网络安全稿件
昆明免费的外贸数据库怎么找
深圳逻辑思维软件开发
春节网络安全秘籍
人工智能数据库专业大学排名
分布式数据库怎么搭建
保卫网络安全问题
怀柔区综合软件开发
网络安全是每个人的
数据库管理的六个阶段