写点什么

StackStorm 框架的浅析 (一)

  • 2019-11-15
  • 本文字数:2232 字

    阅读完需:约 7 分钟

StackStorm框架的浅析(一)

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

1 StackStorm 简介

StackStorm 是一个将服务和工具集成在一起的自动化平台,它将现有的基础架构和应用程序环境联系在一起,因此使用者可以更轻松的自动化调用,把注意力集中在需要执行的操作上。



stackstorm 中包含 sensor,rule,action,workflow 等组件,环境内的数据都统一的存在 MongoDB 中,组件之间消息的通信是利用 RabbitMQ 实现的。将各个组件组合在一起并加之依赖文件以及配置文件就形成了一个包,st2 包的结构如下所示:



由包的结构可以看出,每个组件各自形成一个独立的目录,每个组件由一个配置文件以及一个执行文件共同构成。各个组件的具体作用如下:


  • Sensors: 监听和接收外部系统的事件,当某个外部事件出现,trigger 被触发执行,现在只支持 py 文件;

  • Trigger: 是外部事件的具体表现,简单理解为就是事件触发器,衔接 sensor 和 rule,由用户自行定义;

  • Rule: 映射着所有 trigger 到 action 的规则,记录着 criteria 匹配的规则,映射 trigger 实例到 action 的 input;

  • Action: 是 st2 的具体执行动作和步骤,可以使用 py 脚本、执行指定命令;

  • Workflow: 多个 action 的集合,这些 action 被有序的、按照预先定义好的规则先后执行,现在支持 Orquesta 和 Mistral 两种格式;


各个组件之间实际的交互作用如下图所示:


2 st2 中的 packs

packs 是 stackstorm 中最小的部署单元,Pack 中包含 Action,Workflow,Rule 和 Sensor 等等的配置文件,StackStorm 通过 Pack 进行部署和归类。

packs 的查询

通过命令 st2 pack list 可以查询已经安装在环境中的 packs,效果如下:


packs 的安装

在 StackStorm Exchange 中存在很多可用的包,它是 stackstorm 的一个社区,你可以从上面下载你需要的包,当然你也可以自行编写自己的包上传到社区中。stackstorm 的 packs 安装后会将 packs 的文件下载到/opt/stackstorm/packs/<your_pack>目录下。st2 的 packs 的安装方式有很多种。


# 安装某个包的具体的commitst2 pack install cloudflare=776b9a4# 安装某个包的某个具体版本st2 pack install cloudflare=0.1.0# 利用url安装某个包st2 pack install https://github.com/emedvedev/chatops_tutorial=testing
复制代码


下面重点说一下安装自己编写的包,也就是如何安装本地包。


首先自己编写的包必须传到 git 上才能成功安装 其次利用命令 st2 pack install file:/// + 文件目录可以安装本地包,安装效果如下:



可以看到 packs 的安装需要 4 个步骤,第一是下载 packs,事实上虽然我们称之为从本地安装 packs,其实 st2 还是会从 packs 所在的 git 上将代码拉下来,因此这就是为什么我刚刚说自己编写的包必须传到 git 上才能成功安装的原因了;第二步是预览检查包是否有明显的错误;第三步是安装包的依赖环境,st2 对于每个包都会设定一个运行环境,packs 所需要的依赖可以写在 requirements.txt 中,并安装包的过程中一并安装;第四步是注册包,实际上是将包中的各个组件的信息,包中的配置信息以及参数写入 MongoDB 中。

packs 的卸载

st2 中 packs 的卸载十分容易,通过命令 st2 pack remove + < packname>就可以完成,卸载的效果如下:



可以看出 packs 的卸载主要由两个步骤,第一将 packs 的注册信息删除;第二步删掉 packs 的文件;实际上 packs 的安装和卸载是运行了两个相应的 workflow,具体的将在后续专题中讨论。

packs 的注册

是不是安装上 packs 以后就可以直接运行 packs 了呢??当然不是啦(想得美!)还需要手动注册一下 packs 才能执行。具体的操作如下:


首先将.yaml 文件复制到/opt/stackstorm/configs/目录下,注意在安装 packs 前该文件不能存在于/opt/stackstorm/configs/目录下,否则会导致安装失败。


设置该文件的权限为 775。


执行命令 sudo st2ctl reload --register-configs 就可以运行 packs 了。

packs 的编写

这里面我们主要讲解一下 packs 中配置文件的编写方式,对于各个模块的编写规范,将在后续讨论。


packs 除了各个模块外还有 4 个文件需要编写,分别是:requirements.txt,pack.yaml,packname.yaml 以及 config.schema.yaml


requirements.txt


requirements.txt 是依赖文件,在其中记录的是 packs 需要运行的环境中的依赖包,包括包的版本


pack.yaml


pack.yaml 中定义了 pack 的一些基础信息,包括 packname,版本,描述以及作者信息等,具体效果如下:



packname.yaml


对于 packname.yaml 请注意,该文件的名字并不是”packname.yaml“,而是在 pack.yaml 中定义的包的名字作为”packname“,请大家不要误解。这个文件中主要记录着 packs 的一些默认参数,参数可以是整数,小数,字典,数组以及字符串,具体的形式如下:



config.schema.yaml


config.schema.yaml 是默认参数的具体信息,包括参数名称,类型以及描述等,参数类型包括 string,integer,number,list,object,具体形式如下:



其中 required 字段表示该参数是否是必要参数,非必要参数将不会存入 MongoDB 中,secrect 字段表示该参数是否可见的,若为 true 则用户不可见。


本文转载自公众号 360 云计算(ID:hulktalk)。


原文链接:


https://mp.weixin.qq.com/s/VD026IukUNrL5olEFkCtFg


2019-11-15 10:572615

评论

发布
暂无评论
发现更多内容

DAPP开发全指南:从入门到精通的区块链应用之路

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

交易所开发实战:打造安全高效的数字货币交易平台

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 交易所开发代币开发

“数字创新产品课程” 12月6-7日 · CSPO认证在线课程

ShineScrum

产品负责人 CSPO认证

阿里云 AI 搜索 DeepSearch 技术实践

阿里云大数据AI技术

Grafana侧重可视化,那多数据源告警呢?

巴辉特

Grafana Nightingale 夜莺监控

解锁区块链未来:DAPP、交易所、链游、钱包及代币开发全解析

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

数字化转型与生态融合驱动的政务一体化平台小程序化实践

xuyinyin

学习生活两不误!解锁新生必备神器华为小艺与华为浏览器的多种用法

最新动态

PPT自动生成器有哪些?6个好用的AI工具盘点

职场工具箱

人工智能 效率工具 PPT 办公软件 AI生成PPT

Scrum Better with Kanban

ShineScrum

雅菲奥朗SRE知识墙分享(五): 『AWS解散上海AI研究院』

雅菲奥朗

AI SRE

OpenAI 开源模型 gpt-oss 是在合成数据上训练的吗?一些合理推测

Baihai IDP

开源 AI openai LLM gpt-oss

用社交媒体监测驱动品牌增长与用户互动

沃观Wovision

社交媒体 海外舆情监控 舆情监测系统

当舆情爆发时:社交媒体监测的危机应对策略

沃观Wovision

海外舆情监控 舆情监测系统

MaxCompute聚簇优化推荐功能发布,单日节省2PB Shuffle、7000+CU!

阿里云大数据AI技术

hash Shuffle ODPS 聚簇优化

MCP 开发实战:手把手教你封装高德地图与 arXiv API

测吧(北京)科技有限公司

医疗AI Agent最佳实践|焱融YRCache将推理效率提升65%,实现患者问诊秒级响应

焱融科技

推理 医疗智能体 AI Agent KVCache 焱融YRCache

构建电动汽车模拟器研究EVSE充电设备的技术实践

qife122

逆向工程 电动汽车充电

AI Agent智能体系列解读 | ModelArts Versatile-AI原生应用引擎插件类——MCP/工具能力详解

华为云开发者联盟

合合信息携手富士胶片商业创新(中国),AI让数码多功能机“读懂”文档

合合技术团队

人工智能 大数据 算法

“一课双证”Scrum Better with Kanban 认证&Scrum看板实践者认证 | 11月8日 · 在线面授

ShineScrum

Scrum 敏捷

3X-UI:强大的Xray-core网页管理面板

qife122

vpn Xray

数字先锋 | 携手扎囊县教育局,天翼云电脑叩响教育均衡发展之门!

天翼云开发者社区

云电脑 天翼云 智慧教育

公链钱包开发秘籍:构建安全便捷的区块链资产管理工具

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

链游开发新篇章:融合区块链技术的游戏创新与探索

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

各行业初级员工AI普及率强劲

财见

安装minio集群

天翼云开发者社区

存储

搭建MySQL主从

天翼云开发者社区

MySQL 数据库

Vibe Coding(氛围编程):把代码交给 AI 的瞬间,也交出了未来的维护权——慢慢学AI162

AI决策者洞察

五个维度解析TikTok推广营销中品牌如何筛选最合适的合作达人

Wolink

Tik Tok 海外推广 沃链Wolink 达人营销

StackStorm框架的浅析(一)_服务革新_刘毅_InfoQ精选文章