通过上一篇的简介,相信各位对于简单的创建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.134Created on:    2019/1/10 13:19Created by:    mxyOrganization:  Filename:      ===========================================================================.DESCRIPTIONA 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 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 StopWrite-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 alertif ($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-NullWrite-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获取到信息

转载于:https://blog.51cto.com/mxyit/2345235

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

  1. 任务不再等待!玩转DataWorks资源组

    引言 DataWorks提供了三种资源组的能力:独享资源组.自定义资源组和默认资源组,很多开发者在使用资源组时经常会碰到各类情况,到时候任务运行失败或者延迟,例如: 1. 正在使用默认资源组,任务经常 ...

  2. Greenplum【问题记录 01】资源组配置后GPCC用户无法认证登录

    1.问题描述 设置资源组后,可以正常启动数据库,但是无法连接,cat /home/gpadmin/data/master/gpseg-1/pg_log/startup.log查看启动日志,报错信息如下 ...

  3. MySQL8.0——Resource Group(资源组)

    资源组介绍 简介 MySQL是单进程多线程的程序,MySQL线程包括后台线程(Master Thread.IO Thread.Purge Thread等),以及用户线程.在8.0之前,所有线程的优先级 ...

  4. Greenplum 6.9 资源组中文文档

    本文更新版本:http://www.200yi.com/ff_internal/wiki.php?id=wiki:Database:Greenplum:资源管理:Greenplum%206.9%20资 ...

  5. Greenplum【集群搭建 02】cgroup工具安装+用户资源组配置+集群资源组配置+数据库资源组配置+资源组相关信息(一篇学会资源组配置)

    采用资源组的形式管理数据库集群的内存.cpu等信息,非特殊说明,需要在集群每台机器上执行. 1.安装cgroup工具 # 1.安装 yum install -y libcgroup-tools# 如果 ...

  6. 【Azure】微软 Azure 基础解析(五)核心体系结构之管理组、订阅、资源和资源组以及层次关系

    本系列博文还在更新中,收录在专栏:「Azure探秘:构建云计算世界」 专栏中. 本系列文章列表如下: [Azure]微软 Azure 基础解析(三)描述云计算运营中的 CapEx 与 OpEx,如何区 ...

  7. 2.Azure资源组迁移

    在上一篇文章,我给大家介绍了Azure虚拟机创建的过程以及注意事项,希望为刚接触使用Azure的用户提供一些指导,当然在新的产品面前入坑是难免的,在这我就遇到了一个中文支持不好的坑,还记得上篇文章中, ...

  8. 如何扩展 Azure 资源组中虚拟机的 OS 驱动器

    概述 在资源组中通过从 Azure 应用商店部署映像来创建新的虚拟机 (VM) 时,默认的 OS 驱动器空间为 127 GB. 尽管可以将数据磁盘添加到 VM(数量取决于所选择的 SKU),并且我们建 ...

  9. 资源组 —— 助你轻松解决单账户内的资源分组管理难题

    最近,阿里云ResourceManager服务新增了"资源组管理"功能,以帮助客户解决企业内部多用户.多项目的资源分级管理难题.使用资源组管理,您可以对单个云账号下多个地域.多种资 ...

最新文章

  1. iOS 中client和server的 Web Service 网络通信 (1)
  2. BZOJ1051 [HAOI2006]受欢迎的牛 Tarjan 强连通缩点
  3. python断言assert实例_Python断言assert的用法代码解析
  4. oracle中字符串的脚本表示什么意思,sql脚本中rem与prompt,define等的含义
  5. 计算机科学个人陈述,计算机专业个人陈述样本
  6. MySQL的内连和外连
  7. 施一公:优秀博士如何养成
  8. AM3352启动分析:
  9. Java开发笔记(一百三十九)JavaFX的输入框
  10. 算法竞赛入门经典 1 实验
  11. kangle源码idc下载_kangle康乐idc商务系统搭建源码+教程
  12. 配置 Linux 阿里源
  13. AUTOCAD——创建块与插入块命令
  14. 整理了上千个Python类库,简直太酷啦!
  15. 突破微信服务号群发限制
  16. python训练opencb分类器_垃圾邮件分类.ipynb
  17. 深入理解RGB与CMYK色彩模式
  18. 解决Module build failed: Error: Cannot find module ‘node-sass‘Require stack
  19. Shopify和其他电子商务平台上的微数据
  20. Linux系统进阶-基础IO

热门文章

  1. 从源码角度剖析VC6下的内存分配与切割的运作
  2. 十、非规则组织分析及其数学模型——锯齿形斜纹组织
  3. 02-图像的几何变换
  4. lisp捕捉垂足_定位-'Cal计算器
  5. 2014_shanghai_visit
  6. Linux系统监控shell脚本
  7. 简答面向数据报,面向字节流
  8. QString中包含中文的时候, 转为char *
  9. CString string 转换
  10. 设计模式----2(简单工厂模式的概念,简单工厂模式的实现,简单工厂模式的优缺点)