C# Azure 用Webhook添加警报规则
本篇文章的目的是什么?
Azure云端一直困扰着我的是,如果遇到数据库累积数据量过大、数据库DTU过大、应用程序服务访问量过大等,我们都没办法知道他们什么时候过大。只能做的是,我们天天看着我们的应用,看监控图表、看应用访问速度。
直到在新版Portal中出现了警报规则… 我们可以用emal、webhook的方式来接收警报。email就不用说了,直接配置即可,我们这里主要说webhook…
Webhook是什么、怎么理解Webhook
请看另外一篇文章:Webhook是什么、怎么理解
Azure警报规则可用于那些地方
所有的Azure上面的警报,包括数据库、应用程序服务等
使用前提
有登录Azure的资格、能在Azure上创建警报规则
创建&配置警报规则
以xxx数据库为例,我们创建一个当数据库大小大于1G的时警报规则,如下:
具体路径是 选中了数据库—>警报规则—>添加警报规则
配置webhook
在webhook上配置我们的url,以 http://xxx/webhook/receivedPhone 为例,我们在最下面的Webhook下添加地址:
配置完毕了,我们开始最重要的代码编写。
代码编写
在查看这里的代码编写之前,你可以看看微软的官方说明 https://docs.microsoft.com/en-us/azure/monitoring-and-diagnostics/insights-webhooks-alerts
可以看到,我们接收到的Json数据格式为:
{
"status": "Activated",
"context": {
"timestamp": "2015-08-14T22:26:41.9975398Z",
"id": "/subscriptions/s1/resourceGroups/useast/providers/microsoft.insights/alertrules/ruleName1",
"name": "ruleName1",
"description": "some description",
"conditionType": "Metric",
"condition": {
"metricName": "Requests",
"metricUnit": "Count",
"metricValue": "10",
"threshold": "10",
"windowSize": "15",
"timeAggregation": "Average",
"operator": "GreaterThanOrEqual"
},
"subscriptionId": "s1",
"resourceGroupName": "useast",
"resourceName": "mysite1",
"resourceType": "microsoft.foo/sites",
"resourceId": "/subscriptions/s1/resourceGroups/useast/providers/microsoft.foo/sites/mysite1",
"resourceRegion": "centralus",
"portalLink": "https://portal.azure.com/#resource/subscriptions/s1/resourceGroups/useast/providers/microsoft.foo/sites/mysite1"
},
"properties": {
"key1": "value1",
"key2": "value2"
}
}
解析可以看看官网上的说明。
我们开始看看怎么代码编写吧。
这里的代码以C#为例,并且是Web Api类型的项目,我们在Webhook Contrller里添加了方法ReceivedPhone,用来接收Azure发过来的警报。因为上面已经配置了路径 ‘/webhook/receivedPhone‘
我们用WebApi来接收webhook信息,要用到System.Net.Http.HttpRequestMessage来接收信息,因为webhook是http请求。
具体代码如下:
[HttpPost]
[Route("receivedPhone")]
public async Task ReceivedPhone(HttpRequestMessage req)
{
try
{
dynamic data = await req.Content.ReadAsAsync<object>();
string name = data?.context?.name;//webhook的名字
string resourceName = data?.context?.resourceName;//资源名字
string resourceType = data?.context?.resourceType;//资源type
string metricName = data?.context?.condition?.metricName;//度量名字
string metricValue = data?.context?.condition?.metricValue;//度量值
string metricUnit = data?.context?.condition?.metricUnit;//度量单位 //下面做处理
}
catch (Exception e)
{ }
}
从代码可以看出,我们用到C#4中的动态语言来解析数据,来获取webhook发送过来的信息,从而避免错误。
我主要获取name、resourceName等信息,这些都是重要的信息。如果想获取其他额外的信息,请按照Json数据来添加。
其他说明
为了安全起见,我们一般都配置一个token,避免人家乱用。
例如配置的webhook地址为:http://xxx/webhook/receivedPhone?token=xxx
然后在ReceivedPhone方法中,添加token判断就可以了.
public async Task ReceivedPhone(HttpRequestMessage req, string token)
在这里,作者想要webhook收到信息之后发送短信来及时通知相关人员,所以我们webhook获取到相关信息后,直接发短信给相关用户。
可以关注本人的公众号,多年经验的原创文章共享给大家。
C# Azure 用Webhook添加警报规则的更多相关文章
- 为Azure Web Site 添加ADFS验证支持之一 设置ADFS的信任关系
很多时候企业开发的应用都会通过AD(Active Directory)进行验证用户名密码的,在企业里面统一一个AD来进行账号密码管理也是一个很好的实践.当企业打算将一个应用迁移到Azure的时候,使用 ...
- [Asp.net MVC]Asp.net MVC5系列——在模型中添加验证规则
目录 概述 在模型中添加验证规则 自定义验证规则 伙伴类的使用 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net MVC5 ...
- C# MVC ( 添加路由规则以及路由的反射机制 )
在项目文件夹下找到 App_Start 下 找到 RouteConfig.cs文件 打开 (1) 约束的规则 从上往下 贪婪性 (2) 用 routes.MapRoute(...) 添加 ...
- 通过编程为Outlook 2007添加邮件规则
Outlook 所支持的邮件规则相当有用,我们经常需要针对某些特征的邮件做特殊的处理.例如将其移动到某个特定文件夹,或者删除它等等. Outlook所支持的邮件规则主要两大类:收到邮件时和发送邮件时 ...
- CMD命令行netsh添加防火墙规则
1.为e:\f.exe 添加防火墙规则(参考:https://www.cnblogs.com/zhen656/p/4275270.html),需要管理员权限. >netsh advfirewal ...
- yii 前端js动态添加验证规则
在使用 activeForm 生成表单及验证时,默认是按照 model 里的 rules 生成js验证,model 验证在加载完页面后生效,不可修改,如果需要扩展.动态验证,需要使用js来配合 直接上 ...
- 为Azure Web Site 添加ADFS验证支持之二 在代码里使用ADFS
下面我们来创建一个MVC 5.0的ASP.Net程序,并且将它部署到Azure Web Site上 通过Visual Studio 2015创建Web Project 在选择ASP.net模板的地方, ...
- CentOS 7下iptables配置添加修改规则端口方法(转)
简介: Linux CentOS 7默认没有安装iptables,默认的防火墙是firewalld,云吞铺子分享CentOS 7系统下iptables安装.iptables规则配置(放行或者禁用端口) ...
- Azure Cost alerts 花费警报
一,引言 2020已完结,迎来了2021年新的开始.Allen 在新的一年中继续分享自己所学习到的 Azure 技术.本篇文章的内容也不多,也是一个网友遇到的一个问题----- Azure 上有没有花 ...
随机推荐
- hdu 1.3.2 Moving Tables
这道题比较简单,就是用数组存取其路径.如101和102是对门,其过道号可以记为51. 1和2之间的为1. 今早突然收到操作系统停课的通知,哈哈 回来就做一下水题,开心 #include<cst ...
- windform 重绘Treeview "+-"号图标
模仿wind系统界面,重绘Treeview + - 号图标 一,首先需要图片 ,用于替换原有的 +-号 二.新建Tree扩展类 TreeViewEx继承TreeView using System; u ...
- ASP.NET MVC 做的网站项目
感谢博客园团队日夜为广大需要获取知识人们所做的奉献 博客园团队您们辛苦了 ASP.NET MVC 实现有论坛功能的网站(有iis发布网站 这是之前写的... www.lazyfitness.cn 经过 ...
- 【BZOJ3097】 Hash Killer I
BZOJ3097 Hash Killer I Solution 考虑它是自然溢出,相当于就是对\(2^{63}\)取膜 那么就有\(aaaaa...aaa\)(多于64个)和\(baaaa...aaa ...
- 「雅礼集训 2017 Day1」 解题报告
「雅礼集训 2017 Day1」市场 挺神仙的一题.涉及区间加.区间除.区间最小值和区间和.虽然标算就是暴力,但是复杂度是有保证的. 我们知道如果线段树上的一个结点,\(max=min\) 或者 \( ...
- C#6.0语言规范(十五) 委托
委托启用其他语言(如C ++,Pascal和Modula)已使用函数指针进行寻址的方案.但是,与C ++函数指针不同,委托是完全面向对象的,与成员函数的C ++指针不同,委托封装了对象实例和方法. 委 ...
- jquery中ajax的几种方式
三种简写: $.get(URL,data,function(data,status,xhr),dataType) $(selector).post(URL,data,function(data,sta ...
- flask框架--模板
今天又是一个精彩又无聊的一天,不过随着知识的缓慢的增加我的内心也充满了干劲,虽然前进的有些缓慢 但我不会这么容易放弃的,一定要相信自己,不要灰心 好了 ~ 不说废话了 , 我自己听的都有些受不了了 . ...
- [POC]K8 DLLhijack Test
POC: 2016.11 Winrar却持 XP资源管理器却持 DLL却持VS全版本 https://www.cnblogs.com/k8gege/p/10261254.html POC:https: ...
- 解决 ORA-27102: out of memory
记一次故障处理总结: 操作系统:windows server 2008 R2数据库版本:11.2.0.2 故障描述:外部应用连接数据库,提示连接不正常: 排错过程:1.首先 检查数据库监听服务状态是否 ...