打通钉钉+WebHook:日志服务告警升级

摘要: 用一个最最常用的案例(Nginx日志分析)来说明当前使用场景,告警要解决的3个问题:是否有错误;是否有性能问题;是否有流量急跌或暴涨

阿里云日志服务是针对实时数据一站式服务,用户只需要将精力集中在分析上,过程中数据采集、对接各种存储计算、数据索引和查询等琐碎工作等都可以交给日志服务完成。

9月日志服务升级实时分析功能(LogSearch/Analytics),可以使用查询+SQL92语法对日志进行实时分析,并在结果分析可视化上,支持自带Dashboard、DataV、Grafana、Tableua(通过JDBC)、QuickBI等可视化方式。

在监控场景中光有可视化是不够的,日志服务提供告警与通知功能如下:

将查询(SavedSearch)保存下来
对查询设置触发周期(间隔),并对执行结果设定判断条件并且告警
设置告警动作(如何通知),目前支持通知方式有3种:

通知中心:在阿里云通知中心可以设置多个联系人,通知会通过邮件和短信方式发送
WebHook:包括钉钉机器人,及自定义WebHook等
(即将支持)写回日志服务(logstore):可以通过流计算,函数服务进行事件订阅;也可以对告警生成视图和报表
告警功能配置与使用可以参见告警文档。

图片描述

告警设置案例(Nginx日志为例)
我们用一个最最常用的案例(Nginx日志分析)来说明当前使用场景,告警要解决的3个问题:

是否有错误
是否有性能问题
是否有流量急跌或暴涨
准备工作(Nginx日志接入)
日志数据采集。详细步骤请参考5分钟快速入门 或 直接在Logstore页面 数据源接入向导 中设置。
索引设置,详细步骤请参考索引设置与可视化或最佳实践网站日志分析案例。
对关键指标设置视图 + 告警。
(在做完1、2步骤后,在查询页面可以看到原始日志)

图片描述
Sample视图(例子):

图片描述

1. 是否有错误
错误一般有这样几类:404(请求无法找到地址)/502/500(服务端错误),我们一般只需关心500(服务端错误),将这个query保存下来,统计单位时间内错误数c。告警可以设定一个规则c > 0 则产生告警:

status:500 | select count(1) as c

这种方式比较简单,但往往过于敏感,对于一些业务压力较大的服务而言有零星几个500是正常的。为了应对这种情况,我们可以在告警条件中设置触发次数为2次:只有连续2次检查都符合条件后再发告警。

2. 是否有性能问题
服务器运行过程中虽然没有错误,但有可能会出现延迟(Latency)增大情况,因此我们可以针对延迟进行告警。

例如我们可以通过以下方式计算某个接口(“/adduser”)所有写请求(”Post“)延时。告警规则设置为 l > 300000 (当平均值超过300ms后告警)。

Method:Post and URL:"/adduser" | select avg(Latency) as l

利用平均值来报警简单而直接,但这种方法往往会使得一些个体请求延时被平均掉,反馈不出问题。例如我们对该时间段的Latency可以计算一个数学上的分布(划分20个区间,计算每个区间内的数目),从分布图上可以看到大部分请求延时非常低(<20ms),但最高的延时有2.5S。

Method:Post and URL:"/adduser" | select numeric_histogram(20, Latency)

图片描述

为应对这种情况,我们可以用数学上的百分数(99%最大延时)来作为报警条件,这样既可以排除偶发的延时高引起误报,也能对整体的演示更有代表性。以下的语句计算了99%分位的延时大小 approx_percentile(Latency, 0.99) ,同样我们也可以修改第二个参数进行其他分位的划分,例如中位数的请求延时 approx_percentile(Latency, 0.5)

Method:Post and URL:"/adduser" | select approx_percentile(Latency, 0.99) as p99

在监控的场景中,我们也可以在一个图上绘出平均延时,50%分位延时,以及90%分位延时。以下是按一天的窗口(1440分钟)统计各分钟内延时的图:

* | select avg(Latency) as l, approx_percentile(Latency, 0.5) as p50, approx_percentile(Latency, 0.99) as p99, date_trunc('minute', time) as t group by t order by t desc limit 1440

图片描述

3. 是否有流量急跌或暴涨?
服务器端自然流量一般符合概率上的分布,会有一个缓慢上涨或下降过程。流量急跌或暴涨(短时间内变化非常大)一般都是不正常的现象,需要留意。

(例如下图的监控中,在2分钟时间内流量大小下跌30%以上,在2分钟内后又迅速恢复)

图片描述

急跌和暴涨一般会有如下参考系:

上一个时间窗口:环比上一个时间段
上一天该时间段的窗口:环比昨天
上一周该时间段的窗口:环比上周
我们这里以第一种情况来作为case讨论,计算流量infow数据的变动率(也可以换成QPS等流量)。

3.1 首先定义一个计算窗口
例如我们定一个1分钟的窗口,统计该分钟内的流量大小,以下是一个5分钟区间统计:

* | select sum(inflow)/(max(__time__)-min(__time__)) as inflow , __time__-__time__%60  as window_time from log group by window_time order by window_time limit 15

从结果分布上看,每个窗口内的平均流量 sum(inflow)/(max(time)-min(time)) 应该是均匀的:

图片描述

3.2 计算窗口内的差异值(最大值变化率)
这里我们会用到子查询,我们写一个查询,从上述结果中计算最大值 或 最小值 与平均值的变化率(这里的max_ratio),例如如下计算结果max_ratio 为 1.02。我们可以定义一个告警规则,如果max_ratio > 1.5 (变化率超过50%)就告警。

* | select max(inflow)/avg(inflow) as max_ratio from (select sum(inflow)/(max(__time__)-min(__time__)) as inflow , __time__-__time__%60  as window_time from log group by window_time order by window_time limit 15) 

图片描述

3.3 计算窗口内的差异值(最近值变化率)
在一些场景中我们更关注最新的数值是否有波动(是否已经恢复),那可以通过max_by方法获取最大windows_time中的流量来进行判断,这里计算的最近值为lastest_ratio=0.97。

注意:

这里的max_by函数计算结果为字符类型,我们需要强转成数字类型
如果要计算变化相对率,可以用(1.0-max_by(inflow, window_time)/1.0/avg(inflow)) as lastest_ratio 代替

* | select max_by(inflow, window_time)/1.0/avg(inflow) as lastest_ratio from (select sum(inflow)/(max(__time__)-min(__time__)) as inflow , __time__-__time__%60  as window_time from log group by window_time order by window_time limit 15) 

图片描述

总结
日志服务查询分析能力是完整SQL92,支持各种数理统计与计算等,只要会用SQL都能进行快速分析,欢迎尝试!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523213.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AliOS Things v1.1.1新特性

摘要&#xff1a; 今年杭州云栖大会上&#xff0c;AliOS Things正式发布&#xff0c;10/20在github上开源v1.1.0版本。经过AliOS Things团队及合作伙伴1个多月的努力&#xff0c;很高兴有些更新可以和大家分享。AliOS Things v1.1.1包含了ESP32支持&#xff0c;AT框架&#xff…

Spark精华问答 | spark性能优化方法

Hadoop再火&#xff0c;火得过Spark吗&#xff1f;今天我们继续关于Spark的精华问答吧。1Q&#xff1a;影响性能的主要因素是什么&#xff1f;A&#xff1a;网络传输开销大硬件资源利用率低同一资源的复用率低2Q&#xff1a;优化的方向有哪些&#xff1f;A&#xff1a;设置数据…

阿里云Elasticsearch的X-Pack:机器学习、安全保障和可视化

摘要&#xff1a; ELK是日志分析领域较为流行的技术选择&#xff0c;不少阿里云用户选择在ECS上搭建开源Elasticsearch。与自建开源Elastisearch相比&#xff0c;阿里云Elasticsearch做了性能优化&#xff0c;支持弹性扩容&#xff0c;并搭载了商业版组件X-Pack&#xff0c;为用…

2017北京云栖大会:云效企业级协同研发专场议题揭秘!

摘要&#xff1a; 阿里巴巴原汁原味的研发协同平台是如何支撑双十一1682亿背后的研发协同&#xff1f;大中型企业如何完成公有云/专有云/混合云转型升级&#xff0c;实现高效协同研发&#xff1f; 阿里巴巴原汁原味的研发协同平台是如何支撑双十一1682亿背后的研发协同&#xf…

毋庸置疑,容器带来改变!

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 刘晶晶对于飞贷金融科技副总裁陈定玮而言&#xff0c;金融行业数据具有相较于其他行业更为严格的的高标准安全性要求&#xff0c;对容错的要求更为尤甚&#xff1b;此外是否能高效支撑飞贷金融科技的核心业务&#xff0c;尤其…

阿里云发布首款全球智能互联的网络产品——云骨干网

摘要&#xff1a; 12月13日&#xff0c;阿里发布全球首款智能互联的网络产品–云骨干网&#xff08;Cloud Backbone Network&#xff09;。这款产品能够分钟级构建多地域全球网络&#xff0c;并和混合云连成一体&#xff0c;打造具有企业级规模和通信力的智能云上骨干网络。12月…

MaxCompute复杂数据分布的查询优化实践

摘要&#xff1a; 2017年中国大数据技术大会于12月7-9日在北京新云南皇冠假日酒店隆重举行, 大会就大数据时代社会各行业的智能化进程和行业实践展开深入讨论。 在12月8日的“大数据分析与生态系统”分论坛上&#xff0c;来自阿里巴巴计算平台事业部的高级技术专家少杰&#xf…

Linux 主机信息 总览

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…

这项技术,风头正劲,BAT要力捧!程序员:我彻底慌了...

人工智能离我们还遥远吗&#xff1f;近日&#xff0c;海底捞斥资1.5亿打造了中国首家火锅无人餐厅&#xff1b;阿里酝酿了两年之久的全球首家无人酒店也正式开始运营&#xff0c;百度无人车彻底量产。李彦宏称&#xff0c;这是中国第一款能够量产的无人驾驶乘用车。而阿里的这家…

joi模块验证日期格式_python datetime模块详解

一、datetime模块介绍通过print(dir(datetime))&#xff0c;我们可以看到模块内属性和类&#xff1a;[MAXYEAR, MINYEAR, __builtins__, __cached__, __doc__, __file__, __loader__, __name__, __package__, __spec__, date, datetime, datetime_CAPI, sys, time, timedelta, …

AliOS Things 基于组件化思想的多bin特性

摘要&#xff1a; 今年杭州云栖大会上&#xff0c;AliOS Things正式发布&#xff0c;其中有一个基于组件化思想的多bin特性&#xff0c;这是AliOS Things有专利保护的多bin fota升级解决方案的核心 今年杭州云栖大会上&#xff0c;AliOS Things正式发布&#xff0c;其中有一个基…

数据库风云:老骥伏枥,新秀辈出

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者&#xff1a;姜洪军“在数据库技术方面&#xff0c;亚马逊落后甲骨文10至20年”。2018年10月23日&#xff0c;甲骨文&#xff08;Oracle&#xff09;创始人、执行董事长拉里埃里森&#xff0c;在甲骨文举办的一次大会的主题演讲…

解读阿里云oss-android/ios-sdk 断点续传(多线程)

摘要&#xff1a; oss sdk 断点续传功能使用及其相关原理 前言 移动端现状 随着移动端设备的硬件水平的不断提高&#xff0c;如今的cpu&#xff0c;内存等方面都大大的超过了一般的pc电脑&#xff0c;因此在现今的程序中&#xff0c;合理的使用多线程去完成一些事情是非常有必…

云钻还在吗 苏宁怎么解除实名认证_快手7天怎么养号,5步简易养号方案送上

今天我们聊一聊&#xff0c;新注册的快手号&#xff0c;7天怎么养号&#xff1f;为什么要养号&#xff1f;什么情况下需要养号&#xff1f;一般来说&#xff0c;新账号、播放量不高、很少热门、违规等情况&#xff0c;都需要养号。养号有什么作用&#xff1f;养号的作用很多&am…

将html表格导出到excel表格,table2excel-将HTML表格内容导出到Excel中_html/css_WEB-ITnose...

简要教程jquery-table2excel是一款可以将HTML表格的内容导出到微软Excel电子表格中的jQuery插件。该插件可以根据你的需要导出表格中的内容&#xff0c;不需要的行可以不导出。它文件体积小&#xff0c;使用非常方便。注意导出的Excel文件的格式&#xff0c;默认导出为.xlsx格式…

RDS读写分离,海量数据一键搞定

简介 RDS为用户提供高透明&#xff0c;高可用&#xff0c;高性能&#xff0c;高灵活的读写分离服务。在最近的版本我们基于短连接的用户进行了优化&#xff0c;使得短连接的用户负载均衡更加完善合理。RDS读写分离有如下特性&#xff1a; 易用/透明性 用户只需要在原来的只读…

7 行代码优雅地实现 Excel 文件导出功能?

文章目录一、前言二、Apache poi、jxl 的缺陷三、阿里出品的 EasyExcel&#xff0c;安利一波四、EasyExcel 解决了什么五、快速上手5.1 添加依赖5.2 七行代码搞定 Excel 生成六、特殊场景支持七、Web 下载示例代码八、需要注意的点九、总结一、前言 关于导出 Excel 文件&#…

Docker精华问答 | 用dockerfile制作镜像

Docker 是个划时代的开源项目&#xff0c;它彻底释放了计算虚拟化的威力&#xff0c;极大提高了应用的维护效率&#xff0c;降低了云计算应用开发的成本&#xff01;使用 Docker&#xff0c;可以让应用的部署、测试和分发都变得前所未有的高效和轻松&#xff01;1Q&#xff1a;…

日志服务Flink Connector《支持Exactly Once》

摘要&#xff1a; Flink log connector是阿里云日志服务推出的&#xff0c;用于对接Flink的工具&#xff0c;包含两块&#xff0c;分别是消费者和生产者&#xff0c;消费者用于从日志服务中读数据&#xff0c;支持exactly once语义&#xff0c;生产者用于将数据写到日志服务中&…

两个瓶子水怎样一样多_同事每天比我多睡两个小时!省下70万买了地铁站附近房子 杭州姑娘却感叹买房时一定是脑子进了水……...

都市快报讯 你上下班路上要多久&#xff1f;这个问题最近引起网友热议。 昨天&#xff0c;杭州市城乡建设发展研究院发布11月份城区交通运行分析&#xff1a;从上个月起&#xff0c;杭州的交通运行已经开启“冬季模式”&#xff0c;晚高峰出行进一步集中&#xff0c;拥堵程度环…