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.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相关推荐
- 任务不再等待!玩转DataWorks资源组
引言 DataWorks提供了三种资源组的能力:独享资源组.自定义资源组和默认资源组,很多开发者在使用资源组时经常会碰到各类情况,到时候任务运行失败或者延迟,例如: 1. 正在使用默认资源组,任务经常 ...
- Greenplum【问题记录 01】资源组配置后GPCC用户无法认证登录
1.问题描述 设置资源组后,可以正常启动数据库,但是无法连接,cat /home/gpadmin/data/master/gpseg-1/pg_log/startup.log查看启动日志,报错信息如下 ...
- MySQL8.0——Resource Group(资源组)
资源组介绍 简介 MySQL是单进程多线程的程序,MySQL线程包括后台线程(Master Thread.IO Thread.Purge Thread等),以及用户线程.在8.0之前,所有线程的优先级 ...
- Greenplum 6.9 资源组中文文档
本文更新版本:http://www.200yi.com/ff_internal/wiki.php?id=wiki:Database:Greenplum:资源管理:Greenplum%206.9%20资 ...
- Greenplum【集群搭建 02】cgroup工具安装+用户资源组配置+集群资源组配置+数据库资源组配置+资源组相关信息(一篇学会资源组配置)
采用资源组的形式管理数据库集群的内存.cpu等信息,非特殊说明,需要在集群每台机器上执行. 1.安装cgroup工具 # 1.安装 yum install -y libcgroup-tools# 如果 ...
- 【Azure】微软 Azure 基础解析(五)核心体系结构之管理组、订阅、资源和资源组以及层次关系
本系列博文还在更新中,收录在专栏:「Azure探秘:构建云计算世界」 专栏中. 本系列文章列表如下: [Azure]微软 Azure 基础解析(三)描述云计算运营中的 CapEx 与 OpEx,如何区 ...
- 2.Azure资源组迁移
在上一篇文章,我给大家介绍了Azure虚拟机创建的过程以及注意事项,希望为刚接触使用Azure的用户提供一些指导,当然在新的产品面前入坑是难免的,在这我就遇到了一个中文支持不好的坑,还记得上篇文章中, ...
- 如何扩展 Azure 资源组中虚拟机的 OS 驱动器
概述 在资源组中通过从 Azure 应用商店部署映像来创建新的虚拟机 (VM) 时,默认的 OS 驱动器空间为 127 GB. 尽管可以将数据磁盘添加到 VM(数量取决于所选择的 SKU),并且我们建 ...
- 资源组 —— 助你轻松解决单账户内的资源分组管理难题
最近,阿里云ResourceManager服务新增了"资源组管理"功能,以帮助客户解决企业内部多用户.多项目的资源分级管理难题.使用资源组管理,您可以对单个云账号下多个地域.多种资 ...
最新文章
- iOS 中client和server的 Web Service 网络通信 (1)
- BZOJ1051 [HAOI2006]受欢迎的牛 Tarjan 强连通缩点
- python断言assert实例_Python断言assert的用法代码解析
- oracle中字符串的脚本表示什么意思,sql脚本中rem与prompt,define等的含义
- 计算机科学个人陈述,计算机专业个人陈述样本
- MySQL的内连和外连
- 施一公:优秀博士如何养成
- AM3352启动分析:
- Java开发笔记(一百三十九)JavaFX的输入框
- 算法竞赛入门经典 1 实验
- kangle源码idc下载_kangle康乐idc商务系统搭建源码+教程
- 配置 Linux 阿里源
- AUTOCAD——创建块与插入块命令
- 整理了上千个Python类库,简直太酷啦!
- 突破微信服务号群发限制
- python训练opencb分类器_垃圾邮件分类.ipynb
- 深入理解RGB与CMYK色彩模式
- 解决Module build failed: Error: Cannot find module ‘node-sass‘Require stack
- Shopify和其他电子商务平台上的微数据
- Linux系统进阶-基础IO