Last updated
Last updated
对管理的服务进行定期巡检,早期发现隐患
巡检服务与监控服务很类似
目标
方便添加巡检项
需求分析重点是需求
trigger
https://github.com/openstack/ceilometer
只能由 agent 往 trans 进行发送数据,当监控项需要变更时,需要在 agent 侧进行变更,即监控项的管理缺失
Arbiter(仲裁): Arbiter 节点读取本地的配置,然后将配置切分之后分发到多个合适的 schedulers 节点。
Scheduler(调度): scheduler 节点负责分别管理 poller 和 reactionner 节点的任务调度。
Poller(轮询): poller 节点通过各类插件执行 scheduler 节点的任务,获取各种健康指标。
Reactionner(响应): reactionner 节点的任务是一旦满足要求将触发 event_handlers 机制(比如发送通知等)。
Broker(中间人): broker 节点的任务真的是中间人——导出和管理 scheduler 节点中的数据。
Receiver (接收人): 可选节点,在某些特定场景下可以通过 reciver 节点汇总数据(比如汇总私网内部数据,统一转发)
主动监控与被动监控(对象都指的服务端)
除了 Arbiter 节点之外,任何的节点都可以不是唯一的。节点之间的关系也都是多对多的。
每一个节点都支持 / 依赖插件,或者说 Shinken 本身只是一个插件的框架而已。
保障性能和可靠性——根据 CAP 法则,放弃了一致性。
Satellite(shinken/satellite.py)--卫星
主要角色
传感器(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,statsd,syslog
大概执行流程
从各个服务系统通过 push 或 pull 的方式把 event 传给 sensors, sensors 会产生一个 trigger
到规则配置中查询该 trigger 对应的动作或者工作流
将来自工作流的 Action 发送到消息队列(内置 rabbitmq)中
Actions 到达外部的系统后就执行相应的动作
日志和审计历史被推送到数据库进行存储(Mongodb)
处理后的结果被发送回规则引擎进行进一步处理
总体设计重点是设计与折衷
一般来说会有个简单的架构图,并配以文字对架构进行简要说明;
架构图中如果有很多模块,需要对各个模块的功能进行简要介绍;
设计与折衷是总体设计中最重要的部分;
https://github.com/zeroSteiner/rule-engine
需要 Python3 支持
// 详细设计重点在“详细”
(有了数据库 + 接口 + 流程,别的同学拿到详设文档,基本也能够搞定了)
简要的交互可用文字说明,复杂的交互建议使用流程图,交互图或其他图形进行说明
graphite(Python)
--- 异常检测算法库
适配了 AWS