千家信息网

Azure实践之如何批量为资源组虚拟机创建alert

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,通过上一篇的简介,相信各位对于简单的创建alert,以及Azure monitor使用以及大概有个印象了。基础的使用总是非常简单的,这里再分享一个常用的alert使用方法实际工作中,不管是日常运维还是
千家信息网最后更新 2025年01月18日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与软件开发多少钱 如何把自己的网络安全进行到底 软件开发没有设计文档 高新区好服务器高质量的选择 杭州义牛网络技术有限公司公户 服务器系统安全加固方法 360网络安全大学姜思红 无法使用网络连接服务器 一百人同时在线的服务器 华为手机网络安全概念股 石化网络安全宣传周活动报道 同学录数据库web程序 bios服务器测试是干什么的 lenovo 服务器驱动 实时语音需要服务器中转么 roblox神奇宝贝服务器名称 服务器卡死ping不通 江苏品质软件开发定制价格 计算机网络技术主要作用 连云港江苏服务器服务商云空间 二调数据库更新技术流程 队列在软件开发中的应用领域 网络安全配置电脑
0