利用StackStorm实现故障智能诊断

携程旅行网是国内领先的在线旅游服务公司,也是国内规模较大的互联网公司之一。随着近年来业务的迅猛增长,支撑网站的技术和系统的复杂性和规模也随之呈跳跃性的攀升。要迎接网站规模和复杂性提升带来的各种挑战,运维部门首当其冲。运用新技术,新思维来应对各种出现的新问题是运维技术人员天天都要面对的工作。本文中将介绍我们如何应对新场景下的排障工作。

问题描述

当运维自动化程度提高后,对于自动化服务的请求数量不断增长,业务规则和流程的复杂性日益加大。用户对自动化服务越来越依赖,因此对服务标准的要求也在提高,尤其表现在对服务可靠性的高要求。而另一方面,开发周期短,外部依赖多,不可控因素多等原因又使得工具和系统的缺陷在所难免。因此,在出现故障后能够快速定位问题,快速解决问题,把对用户的影响降到最低,就成了一个直接关系到产品成败的非功能性需求。

以携程运维工作流平台(携程运维工作流平台是一个运行携程核心运维流程,如服务器,网络,应用等上线/下线/变更等工作流的系统平台)为例,一台服务器的上线流程从提交请求到服务器交付需要控制在半小时之内,而流程由近十个环节,和近十个工具或系统交互,任何一个环节出现微小故障或者不稳定都可能造成流程中断。因此,需要我们能尽早发现每个环节的问题,修复问题。

传统策略和它的问题

传统方式下,我们使用黑盒策略,只监控流程的外在表现。监控流程中的每个步骤,给流程的每个步骤设置SLA,一旦SLA超时,就发邮件提醒相关人员及流程组。告警邮件发出后,运维人员需要接收到告警,登录系统,分析告警,定位诊断,修复故障。

上述策略存在明显的问题:

1)    时间延误:运维人员不能及时响应告警,造成响应及处理时间不可控

2)    人力成本:人工调查故障需要消耗大量的人力成本,而且经验积累过程缓慢(因为同一个处理人员处理同一个问题的间隔时间可能比较长,不能快速利用上次的排障经验)

3)    有价值的历史数据没有保存,无法统计告警现状及解决方案。如果有保存和分类的历史数据,我们可以了解系统的主要故障区域有哪些,以便进行针对性的改良设计。

4)    引入人为错误:人工处理过程还有可能引入人为错误

解决思路

为了全面掌握当前系统中故障的分布情况,我们先进行了第一步工作:建立一个排障系统对故障进行自动记录和分类。我们在流程平台中的关键环节进行埋点,将最能反映故障和异常的特征参数随着故障警告一起输送出来,在系统中根据这些特征参数对故障和人工分析的结果进行分类。

经过一段时间的人工处理,统计出如下报表:

从报表中,我们可以看到几个结果:

有很大一部分是无需干预的。

告警数量虽然很多,但是类别却不多,大量告警可以被诊断为同一问题,使用同样的修复方式。

绝大部分的故障可以通过告警中带有的特征参数进行自动分类或者利用简单的逻辑进行自动分类 – 自动诊断问题是可行的。

根据告警落地后的分析报告,很清楚地可以看到自动诊断流程是可行的,并且可以节省大量人力成本,并且大幅缩短排障时间和消除人为错误。

故障自动诊断方案

既然所有的问题的答案最终都指向自动诊断,那么我们来看下自动诊断需要包含哪些功能才能解决我们的问题。

故障自动诊断流程需要做到如下几点:

告警发出时立即响应

识别误报或可自行修复的告警

自动处理误报及无需干预的告警

对于复杂情况的告警进行预先诊断并返回结果

有了以上目标,接下来我们需要选择合适的工具实现自动诊断流程。

StackStorm介绍

StackStorm (以下简称ST2)是时下非常流行的一个自动化引擎,擅长处理自动化流程,支持各种服务及工具的自动化与集成。可以轻松的实现故障诊断和自动修复。因此利用ST2来实现故障自动诊断和修复应该是非常不错的选择。

那么,ST2到底是什么,能做什么,为什么可以应用到故障智能诊断中。下面做简单介绍。

ST2是什么

官方定义:

StackStorm is a platform for integration and automationacross services and tools. It ties together your existing infrastructure andapplication environment so you can more easily automate that environment. Ithas a particular focus on taking actions in response to events.

简单来说:StackStorm是一个事件驱动的自动化引擎。

ST2优势

携程之前使用最多的工作流平台是BMC的产品Remedy。Remedy同样是一个使用范围广泛的自动化工作流引擎。和Remedy这种比较庞大的工作流平台相比,ST2有以下优势:

• 开源,StackStorm Exchange提供了各种各样的Pack,只要进行简单的Pack安装后就可以使用。

• 对DevOPS友好,ST2的Action支持任何形式的编程语言,如:Python,Java等,用简单的标记语言定义流程,如:yaml,简单易上手。

• 活跃的用户群,很多大公司(如:Netflix,AMAZON )都在使用StackStorm

• 平台,可以给我们提供非常有价值的参考。

• 更擅长自动化,故障诊断,自动修复等场景

• 相比Remedy复杂的集群部署配置,ST2的集群配置要简单得多

ST2运行机制

ST2运行机制 (官方)

ST2运行机制(简单理解)

Sensor接收或者监听外部Events,触发Triggers,映射到Rules,在Rules中判断是否满足Criteria,满足则运行具体的Workflow

实施过程

对ST2有了初步了解以后,我们来看下ST2如何应用到故障自动诊断流程中。

ST2故障自动诊断流程实现

通过Sensor监听吐到告警系统中的告警,通过不同的Rule将告警分发到不同的Workflow进行处理


告警系统中包含多个系统(如:ITSM,CMS,…)的告警,ST2的Sensor会定期拉取告警系统中的告警信息,进行初步处理后,分发到Rules,每个Rule会根据配置的Criteria,判断是否符合触发该Rule的条件,如果符合则执行Rule对应的Workflow,否则结束。

ST2故障自动诊断流程优势

ST2故障自动诊断流程解决了以往排障遇到的问题,告警得到及时响应,同时自动化流程解放了人力,大部分误报的请求被自动处理掉,对于无法自动处理的告警,也可以进行初步的分析,将分析结果以邮件等形式反馈给运维人员,节省人工检查的时间。自动化流程也避免了人为错误的引入。

除此之外,利用ST2实现自动诊断流程也有它自身的优势:

1)    ST2通过统一的Sensor将告警预处理并分发到Rules,不同系统的Rule根据条件触发自动诊断流程。不同系统的告警诊断互不干扰,Rules之间,Workflows之间相对独立,可以很好的支持横向扩展。

2)    Pack共享,减少重复代码

3)    自动诊断流程可以灵活的定义流程中的Action,方便系统告警的扩展

4)    告警处理过程被系统记录,有利于后期查找分析

ST2故障自动诊断流程实例

ITSM告警自动诊断Workflow

ITSM告警自动诊断Workflow实例

成果和小结

正确的思路+正确的工具=预期的结果。有了ST2自动诊断流程之后,我们将告警的发出,记录,诊断,报表各环节全部打通,形成闭环,成为一套完整的告警自动诊断解决方案。

通过ST2自动诊断流程,经过告警自动诊断,告警结果回写到告警系统中,得出的报表前后对比数据如下:

ST2自动诊断前

ST2自动诊断后

经过对ST2实现故障自动诊断功能的初步尝试,ST2初露锋芒,给我们带来的收益也显而易见。

有了这第一阶段的实践和成果,我们有更多的信心和经验来展望下一步:

•  将更多告警自动诊断接入ST2

•  紧接自动诊断,将故障自动修复流程也加入ST2

•  针对经常发生的故障做进一步的根因分析

原文来自:携程技术保障中心

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 227,572评论 6 531
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 98,071评论 3 414
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 175,409评论 0 373
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 62,569评论 1 307
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 71,360评论 6 404
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 54,895评论 1 321
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 42,979评论 3 440
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,123评论 0 286
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 48,643评论 1 333
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 40,559评论 3 354
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 42,742评论 1 369
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,250评论 5 356
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 43,981评论 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,363评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 35,622评论 1 280
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 51,354评论 3 390
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,707评论 2 370

推荐阅读更多精彩内容

  • 腾讯游戏一直是腾讯最赚钱的部门,其蓝鲸体系以“独特”的方式承载着半个腾讯,也承载着国内游戏行业半数份额。 蓝鲸是腾...
    zwwsense阅读 7,262评论 1 55
  • A. 问答题 1. 简述运维工作中专业巡视的内容及周期。 答:运维工作中专业巡视的内容及周期如下: 1) 专业巡视...
    tomding阅读 3,234评论 0 2
  • 你是真孤独。 袁梅,100顶高帽。
    蝽笙阅读 507评论 0 0
  • 今天第一天上课,从早到晚,6节课,嗓子有点疼,但是我很开心。明天继续努力。加油
    琳子Lynn阅读 204评论 0 1