有效运维的 on-call 机制

[编者按]本文作者为云告警平台OneAlert负责人,著《云计算与OpenStack》,在IT运营管理、云计算方面从业10多年。

正文

互联网技术的发展,离不开运维支撑工作,没有零bug的程序,没有不出问题的系统,问题故障不可怕,可怕的是没能有序的处理:

  1. 突发紧急事件太多,疲于应付,团队士气低下,效率不高。

  2. 重要事情淹没在大量事件中,没有有序跟进处理,会引发严重业务影响。

如何有效处理紧急事件驱动的工作,成为(特别是运维主管)运维工作的关键。我接触了大量的各类型公司运维,从初创、中小、大型公司,总结和分享一些大多公司通用的on-call机制,帮助有序的处理紧急事件:

  1. 监控告警事件集中化。

  2. 建立多层次和职责划分的支撑团队。

  3. 通知到位和及时响应。

  4. 告警风暴关联合并。

  5. 事件单记录和团队协作。

基本上都是围绕人、流程、工具三方面进行,参考了ITIL的管理思路,大家感兴趣也可以参考下,特别是其中的ITIL V3的运营管理。

监控告警集中化

大多公司都用了zabbix和nagios、open-falcon等监控工具,对硬件、网络、应用进行监控。可能会存在监控分散问题:

  1. 环境比较复杂的时候,可能会用多个工具,如cacti监控网络,zabbix监控应用和服务器。

  2. 如果有多个异地数据中心时,可能需要部署多个zabbix和工具。

  3. 部分关键业务,需要单独的开发监控脚本/工具进行独立监测。
    如果没有集中告警机制,容易出现邮件满天飞的现象,也很难跟进和处理,邮件也容易遗漏。

告警集中化,就是所有的生产监控发现的告警事件集中到一起,这样我们盯着一个平台就够了,同样也容易分析问题,是不是相同和类似原因。

  1. 能够直观掌握现有环境的状况。

  2. 发现事件相关性的,有些问题有较强关联性的,如网络稳定性影响主机,数据库性能影响业务等。

  3. 方便跟踪和后续的统计分析。

  4. 集中处理,就不用查看各种监控工具了,效率更高。

建立支撑流程和机制

如果监控工具单一,集中化不是最必要的,如何有序处理才是最核心的。特别运维团队是3-5人到数十/百人,就很有必要梳理下支撑流程和响应机制了。

  • 建立一线、二线甚至三线支撑团队,一线好理解,一般是7x24小时值班的同学们。

  • 二线一般是资深工程师,或者是对应的应用开发/测试同学。

  • 三线一般是主管或者是外部的厂家,如涉及硬件、IDC机房等相关服务方。

如果管理比较细一些,还会进行业务拆分,形成一个矩阵,例如一线、二线根据不同专业,如负责网络和负责不同应用的团队。
另外还要考虑告警严重的程度级别,进行差异化处理,要求严格的同学一般会建立响应级别[1-3]或[1-5]:

  • 严重级别,如大范围影响业务/终端用户的,需要及时处理。一般要求多长时间响应处理,如3-10分钟有人响应,无响应立刻升级。

  • 警告级别:影响范围和严重程度会低一些的故障,处理时长可以长一些。

  • 提醒级别:依次更低。

那么问题来了,规划和设计挺好,如何落地呢?目前看zabbix、nagios、open-falcon等监控工具更多是聚焦如何发现问题,支撑流程属于处理问题的范畴,或者是说管理范畴,这一点目前市面上合适工具较少:

  1. 人肉方式:一个监控班,7x24值班,人为处理和通知。大多运营商和金融及其他超大规模公司的管理方式。

  2. 技术实现方式:通过分派策略、标签识别、排班机制等:

    • 通过分派策略、可以进行流程的设计,根据级别、应用设置对应的一、二线负责人,以及处理时限,超时未响应(确认告警)自动升级。

    • 标签技巧,如何识别不同业务和应用,一般来说可以在告警的标题打标签,如[HOST][NETWORK]等,或者是通过zabbix/nagios的hostgroup, applications等字段打标签。这样在分派策略就可以进行(正则)匹配了。

    • 排班,7x24小时紧绷状态不是谁都能扛得住的,适当轮班缓解下压力。可以通过排班机制,白夜班,按周等模式进行轮流。

接触过一个互联网金融公司,设计了非常规范化的流程和P0-P5级别应急处理方案,涉及了网络、云平台、近50个应用研发团队。

cmd-markdown-logo有效运维的 on-call 机制

分派升级

cmd-markdown-logo有效运维的 on-call 机制

排班管理

通知到位和及时响应

再好的流程和设计,当时没有及时收到通知和处理,那么就会很郁闷了,最后一公里问题解决方式:

  • 邮件通知,简单有效,就是不够及时。
  • 短信方式,需要开发对接,目前很多公司都有自己的短信服务通道。要注意一个限制:部分运营商会限制一天相类似内容只能发送10-30条。
  • 微信、移动APP通知,适应移动大潮。微信方式,好处是人人都有,坏处就是告警消息和正常沟通消息会混淆。
  • 电话,救命线,电话通知可以应对特别重要的告警,例如晚上严重的电话通知,目前这一点国内也有不少服务商,需要对接下。
  • QQ,钉钉、worktile等协作类工具,这一点属于彩蛋性质。

还支持几点:不同级别、不同时间段的设置,例如晚上严重的电话通知,白天工作时间就不用了。
这里面还存在一个问题,当告警规模大了后,特别是告警风暴的话,很容易撑爆邮箱或者是手机短信了,所以接下来就聊下告警风暴规避的问题。

告警关联合并

这个问题比较大,基本上有些监控工具做了一部分,目前看也是一个业界难题,简单来说:

  1. 静态规则方式,需要知识经验积累,根据业务逻辑梳理出一些父子关系。简单如,出现服务器Down的告警,肯定该机器上的业务应用也会Down,那么就整理为一条规则。需要一套告警的过滤引擎,根据告警字段信息进行匹配。

  2. 关联关系分析,依赖CMDB,服务关联关系,根据调用依赖关系进行告警的根源追溯。CMDB的建设和维护是非常困难的事情,数据准确性和实时性是决定CMDB效果的根本因素。CMDB国内落地效果理想的很少,只能依赖自动化,微服务、docker、devops大量应用让IT环境更动态、更复杂,没有自动化机制保障是非常困难的。

  3. 机器学习方式,相比前两种方式,机器学习更取巧一些,或者是说应该是未来的方向,节省大量人力物力。

我们目前做了一些尝试分享下:

  • 时间序列合并,如同一个告警信息,每个几分钟发生一次,就会合并,直到告警恢复/关闭掉。

  • 机器学习合并,包括实时计算和离线计算,算法方面参考了相似度、决策树、分类等算法。以相似度来说:首先采集告警的多维度信息,包括时间、主机、服务、分组hostgroups、应用applications、标签tags等基本维度信息,计算不同告警之间相似度,如果达到阈值,如告警A和告警B有70%相似就关联起来。目前没有一种算法是最合适的,以相似度为例因为根据业务不同,各维度的权重,阈值灵敏度有些差异。例如某些应用的机器名规范化很高,如portal_mysql_master,portal_mysql_slave1,portal_mysql_slave2之类的,机器名权重可以高一些。机器学习领域是未来的重要发展方向,目前我们还在摸索中。

  • 通知合并,瞬间告警通知量大的情况下,降频合并发送通知,如有16条告警未处理。

cmd-markdown-logo有效运维的 on-call 机制

机器学习告警合并

事件单Incident的处理

如果告警量很大,告警后续处理和跟踪往往会依赖于外部团队(部门外或公司外)。但是监控告警粒度太细了,可能很多告警都是一个事情。如上面的告警风暴中,由于应用程序故障,引发引发了大量的异常,之后又产生连锁反应,其实就是一个事情,只需要处理一个事情就行。
一般来说一线人员会采用邮件或者电话方式,直接通知对应负责人,但是这个就很难追踪和事后分析,所以一套事件管理机制。
ITIL规范的事件Incident流程很有参考价值,感兴趣同学参考下。事件工单需要:

  • 将批量告警转为事件工单,这里包括手动转发和自动匹配规则转发。

  • 手动生成事件工单,一般属于非告警类触发,如人工发现或用户投诉等引发的事件。

  • 事件工单包括影响范围、严重程度,两者的交叉矩阵影响到处理的优先级。包括分类、子类、自定义标签,分类和标记有助于后续的统计分析。

  • 责任人和责任组,分派到其他团队或个人,并通知提醒。

cmd-markdown-logo有效运维的 on-call 机制

事件单

影响范围紧急程度优先级
1-高1-高1-关键
1-高2-中2-重要
1-高3-低3-普通
2-中1-高2-重要
2-中2-中3-普通
2-中3-低4-次要
3-低1-高3-普通
3-低2-中4-次要
3-低3-低5-待定

影响范围和紧急程度的交叉矩阵影响到优先级

小结

On-Call机制建立后,通过告警和事件数据分析、建立起以数据指标驱动的团队文化,有机会和大家分享。

OneAlert 是 OneAPM 旗下产品,是国内第一个 SaaS 模式的云告警平台,集成国内外主流监控/支撑系统,实现一个平台上集中处理所有 IT 事件,提升 IT 可靠性。想技术文章,请访问 OneAPM 官方技术博客。

本文转自 OneAPM 官方博客

转载于:https://www.cnblogs.com/oneapm/p/5600676.html

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

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

相关文章

团队项目:界面设计

游戏内关卡为2D横版界面,背景为楼群贴图,整体色调以灰色为主,与摩托车手的主题相配。游戏中配有音效及背景音乐,背景音乐为我组成员自行创作录制完成。界面展示如下: 图1 游戏中设计图 图中显示的摩托车手即为玩家操控…

Hystrix简介

在过去的几天里,我一直在探索Netflix Hystrix库,并欣赏了这个出色的库所提供的功能。 引用Hystrix网站上的内容: Hystrix是一个延迟和容错库,旨在隔离对远程系统,服务和第三方库的访问点,停止级联故障&am…

MP3音乐播放器搜索引擎-鼠标拖动窗口

定义鼠标的按压,移动,施放事件 (1)鼠标的按压事件 globalpos是全局坐标,即鼠标相对于桌面屏幕左上角的坐标我们通过this->frameGeometry().topLeft();可以获得当前窗口的左上角的x左边或y坐标 在移动事件中我们可以…

SpringMVC学习--文件上传

简介文件上传是web开发中常见的需求之一,springMVC将文件上传进行了集成,可以方便快捷的进行开发。 springmvc中对多部件类型解析在 页面form中提交enctype"multipart/form-data"的数据时,需要springmvc对multipart类型的数据进行解…

VS code常用的快捷键

在前端的开发过程中,如果有一个比较好的开发工具,配合一些常用的快捷键,开发效率将大大提升,正所谓工具善其事必先利其器。前端推荐使用编辑器VS code,用过HB-X,ST3,Webstorm等编译器之后就会发现,前端编辑…

平台日志架构说明log4j漏洞问题解析

Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每…

2016/06/22 中色启动筹码分析作业

2016/06/22 中色启动筹码分析作业——待核实 201转载于:https://www.cnblogs.com/carl2380/p/5608596.html

浏览器各个属性的作用

作为前端程序员不可避免的会和浏览器打交道,所以要对浏览器的各个属性的作用进行了解,方便开发及调试,这里以谷歌浏览器为例进行简单的介绍。一是巩固对浏览器属性的认识,二是方便大家的学习。首先打开谷歌浏览器按F12查看控制台属…

Moment.js日期处理库的使用

Moment.jsMoment.js是一个轻量级的JavaScript时间库,它方便了日常开发中对时间的操作,提高了开发效率。这个在一些金融保险公司会经常用到,比如一下时间的格式化处理,时间的选择等等。这个比较好的地方是可以格式化时间&#xff0…

转: 微博的多机房部署的实践(from infoq)

转: http://www.infoq.com/cn/articles/weibo-multi-idc-architecture 在国内网络环境下,单机房的可靠性无法满足大型互联网服务的要求,如机房掉电,光缆被挖的情况也发生过。微信就曾发生大面积故障,包括微信信息无法发出、无法刷…

知道这些性能优化手段,工资起码提升一倍

1.什么是性能?性能指标有哪些?计算机的性能,其实和我们干体力劳动很像,好比是我们要搬东西。对于计算机的性能,我们需要有个标准来衡量。这个标准中主要有两个指标。第一个是响应时间(Response time)或者叫…

亲手把360奇安信软件卸载了,爽!

由于工作原因,在上一家公司安装了360奇安信安全软件,到了下一个公司还需要安装另一个安全软件,这个必须要卸载,卸载!卸载!但是卸载需要输入密码,没有密码还输入卸载不了,我曾经联系3…

VM虚拟机中CentOS6.4操作系统安装一

在 VMware中鼠标单击“编辑虚拟机设置”,在弹出的“虚拟机设置”对话框中的“硬件”标签中选择“CD/DVD(IDE)”,然后在右侧的“CD /DVD(IDE)”连接选项中选择“使用ISO映像文件”,使用“浏览”按…

vue基础教程总结篇,用最短的时间入门vue.js(持续更新...)

目前,vue已经成为前端工程师必会的框架之一,这里简单总结一下,可以让您快速的入门vue,师傅带进门,修行靠个人,最主要的还是自己多动手,多实践,本专栏会持续更新。 1.vue安装教程及简介 2.vue计…

关于SP一些响应码的API返回码及解析集合

在一些金融的行业(银行、证券、保险等),如果接触了一些中间件,比如长城、恒银、广电等一些厂商的设备,不同的厂商有不同的一些规范,在应用开发的过程中难免会和中间件的错误码打交道,这里总结一…

eclipselink_Java EE 7的高峰– EclipseLink的多租户示例

eclipselink水族馆是有关所有相关规范和参考实现中有关Java EE进度的灵感和最新信息的重要来源。 他们从Oracle的Shaun Smith( 博客 / 推特 )获取了有关EclipseLink作为开源项目的地位和未来的演讲。 他介绍了将在EclipseLink 2.4中提供的所有新功能&…

关于一些常见智柜问题的分析及解决办法

竟然还有小伙伴感觉自研项目不好的小伙伴?渐渐感觉不管是在小公司或者在大公司,能有一个值得奋斗的远方就可以了,比如薪资高,钱多事少离家近,自己真的对自己目前做的事情感兴趣,否则干啥都感觉没劲&#xf…

流绩效–您的想法

上周,我介绍了一些有关Java 8流性能的基准测试结果。 你们和gal足够感兴趣,可以留下一些想法,还有哪些可以介绍。 这就是我所做的,这是结果。 总览 最后一篇文章的序言也适用于此。 阅读它,以找出所有数字为何撒谎&a…

java中JVM的原理

一、java虚拟机的生命周期: Java虚拟机的生命周期 一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序。程序开始执行时他才运行,程序结束时他就停止。你在同一台机器上运行三个程序,就会有 三个运行中的Java虚拟机。 Java虚…

2022将至,前端程序员们应该一起放个烟花庆祝一下,走起

前言:小时候,在我印象中,每到快过年的时候就有很多卖炮仗的,一般也就是阳历的12月份到明年的正月15号卖炮仗的商家比较多,省下买辣条的钱去买炮仗,在老家也就过年和除夕两天及正月15日这几天放烟花和炮仗比…