liujinlong
作者liujinlong联盟成员·2020-04-07 10:41
项目经理·china

故障自愈StackStorm

字数 1300阅读 1156评论 0赞 0

故障自愈作为运维领域的热门话题之一,各个公司都会投入大量的人力来开发不同的组件,如何正确、有序的调用不同组件以及避免相同功能组件的开发,是一件亟待解决的问题。StackStrom 是一个基于事件流并自动执行的系统框架,基于此,可以让外部系统产生的事件,有序的、可编排的集合到一起,作为一个完整的事件流去执行,从而解决一些高频次的运维难题。

StackStorm 简介

StackStorm 是一个将服务和工具集成在一起的自动化平台,它将现有的基础架构和应用程序环境联系在一起,因此使用者可以更轻松的自动化调用,把注意力集中在需要执行的操作上。
主要组成角色:
传感器(Sensors)是用于分别接收或监视事件的入站或出站集成的Python插件。 当来自外部系统的事件发生并由传感器处理时,StackStorm触发器将发射到系统中。
触发器(Triggers)是外部事件的StackStorm表示形式。 有通用触发器(例如定时器,webhooks)和集成触发器(例如,Sensu告警,JIRA问题更新)。 通过编写传感器插件可以定义新的触发器类型。
动作(Actions)是StackStorm出站集成。 有通用动作(ssh,REST调用),集成(OpenStack,Docker,Puppet)或自定义操作。 动作是Python插件或任何脚本,通过添加几行元数据将其消耗到StackStorm中。 动作可以由用户通过CLI或API直接调用,或者作为规则和工作流程的一部分使用和调用。
规则(Rules)将触发器映射到动作(或工作流),应用匹配条件并将触发器加载到动作输入中。
工作流(Workflows)将动作拼接成“超级动作”,定义顺序,转换条件以及传递数据。 大多数自动化不止一步,因此需要多个动作。 工作流就像“原子”动作一样,可在Action库中使用,并且可以手动调用或由规则触发。
包(Packs)是内容部署的单位。 它们通过对集成(触发器和动作)和自动化(规则和工作流)进行分组,简化了StackStorm可插拔内容的管理和共享。 StackStorm Exchange上有越来越多的包可用。 用户可以创建自己的包,在Github上共享它们,或者提交给StackStorm Exchange.
审计跟踪(Audit Trail)记录并存储手动或自动操作执行的审计跟踪,并存储触发上下文和执行结果的全部细节。 它还被记录在审计日志中,用于集成外部日志记录和分析工具:LogStash,Splunk,mysql等
大概执行流程是:
StackStorm通过包含sensors和actions的可扩展套件插入环境中。

服务系统通过push或pull的方式把event传给sensors, sensors会产生一个trigger
到规则配置中查询该trigger对应的动作或者工作流
将来自工作流的Action发送到消息队列(内置rabbitmq)中
Actions到达外部的系统后就执行相应的动作
日志和审计历史被推送到数据库进行存储(Mongodb)
处理后的结果被发送回规则引擎进行进一步处理

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

X社区推广