StackStorm与ChatOps实践

本文主要介绍StackStorm结合Hubot实现ChatOps的实践。

背景介绍

StackStorm是什么?

StackStorm是一个跨服务和工具进行集成和自动化的平台,将用户现有的基础建设和应用程序环境联系在一起,因此可以更轻松地自动化该环境。它特别着重于响应事件而采取行动。一句话总结StackStorm就是一个事件驱动的自动化引擎。
StackStorm与ChatOps实践
StackStorm是具有模块化体系结构的服务,拥有高可扩展性和灵活性,配备Web UI,CLI客户端,并且完美支持 ChatOps 和全操作的API实现。下面是StackStorm的官方架构图。
StackStorm与ChatOps实践
官方也给出了一些利用StackStorm可以实现的常见操作,例如:

  • 便利的故障排除:由Sensu,Nagios,New Relic等监控系统捕获的系统故障,可以触发在物理节点,OpenStack,Amazon实例以及应用程序组件上运行一系列诊断检查,并将结果发布到诸如WeChat,Slack或JIRA等共享通信应用。
  • 自动修复:识别并验证OpenStack计算节点上的硬件故障,适当的疏散实例并通知管理员可能的故障时间,但如果出现问题,冻结工作流程并唤醒相关人员处理。
  • 持续部署:使用Jenkins进行构建和测试,配置一个新的AWS集群,开启负载均衡器的一些流量等。

ChatOps又是什么?

ChatOps理念最早由GitHub提出,他们发现在日常工作中,经常执行 git checkout git commit git push 等git常用指令。为了免于不停的运行这些相同的指令,他们开发了Hubot机器人,来帮助完成诸如代码提交,代码部署,代码合并等一系列繁杂的工作,ChatOps也就应运而生了。

ChatOps是对DevOps的升级,结合 AI 落地,最终实现“聊着天就把活干了”。ChatOps 以聊天室,即沟通平台为中心,通过机器人对接后台的各种服务,相关工作人员只需要在聊天会话中对机器人发出命令,即可与后台服务进行交互。ChatOps有效的联接了人和工具、人和人以及工具和工具,打破了信息壁垒,从而大大提高了工作效率和协作体验。

场景示例

StackStorm结合Hubot可以带来怎样的ChatOps体验?下面通过磁盘空间告警处理这一场景,做一个简单的展示。流程如下图所示,StackStorm接入Zabbix后,Zabbix告警触发流程启动,中间的交互过程通过Slack完成。这里假设预先设置的磁盘空间清理脚本适用。
StackStorm与ChatOps实践
在Slack中配置好hubot聊天机器人后,管理员能够接收到Zabbix告警,同时会收有一条询问是否忽略该告警,这里通过inquiry源格式回复False后,hubot将会按照上述流程进行下一步骤,继续询问是否清理,回复yes后,StackStorm将会在后台自动执行清理脚本,并将清理的空间大小反馈给管理员,最终可以看到告警恢复的通知。
StackStorm与ChatOps实践

未来应用

1 实现运维自动化

上面展示的是一个非常简单的场景,通过StackStorm还可以实现更多复杂的运维场景,例如前面官方给出的一些操作。利用StackStorm完成监控自动化,检测修复自动化,事件提醒自动化等一系列运维自动化操作,可以大大提高运维效率。

2 运维聊天机器人

基于Hubot开发Adapter,可以在自有沟通平台上搭建ChatOps聊天机器人,将运维工程师从重复繁琐的工作中解放出来。更进一步,结合语音识别功能,呼出式的智能小助手也是可以畅想一下的啦!