来自 Github 的 Jason Dixon 在罗马召开的 DevOps Days 上,发表了关于“当前及未来监控系统发展”的演讲。他认为,未来监控系统应当由可替换组件构成,每个组件应当只专注于一种功能。
按照 Jason 的设想,这样的系统架构有以下特点:
- 模块组合 (明确定义各组件功能、接口以及协议)
- 富有弹性 (监控系统在架构层面能够应对中断的发生)
- 完全自助 (不需要运维人员的干预,用户可以自助进行操作)
- 自动化 (提供自动化功能)
- 智能关联 (自动建立服务间的关联关系)
- 界面友好(用户乐于使用这个系统)
这样一套系统中,各组件通讯方式如下图所示:
- 传感模块:由无状态代理组成,负责收集指标数据,并以日志流格式通过 HTTP、 JSON 或直连的方式上传。
- 汇聚模块:负责进行数据转换、处理、汇总,或者进行指标数据的中转。
- 状态引擎:负责跟踪事件流的变化,能够自动根据相关信息分析问题根源并进行预测。
- 存储引擎:支持对数据进行转换和聚合,并能够接近实时的性能进行查询或以 JSON、XML 或 SVG 等标准格式输出。
- 计划任务模块:提供计划任务的管理接口对任务进行管理,并提供扩展接口。
- 通知模块: 负责根据状态引擎提供的数据发送报警消息,并对状态进行跟踪以用于其他目的。
- 可视化模块:通过仪表板以及其他的用户接口用于展示各种指标和警报信息。
Jason 强调,为实现细粒度指标的收集,必须进行数据收集规划和必要的架构调整。这样就使得系统通过对历史数据的分析来预测未来变化趋势以及阈值违例成为可能。
InfoQ 谈到 Jason 最近在这个领域的项目,他介绍到:
在可视化方面,我在一些如 Tasseo 、 Descartes 等这样的工具上进行研究,以提升在中断时运维人员的响应能力。最近,我们实现了对各类指标进行实时的关联分析功能,我认为这是相当重要的。但是,我们发现引起中断的问题往往是由连锁故障造成,导致他们无法在一张图像上展示出来。
另外,我所看好的 Graphite 项目,但是它缺少对指标命名空间的访问控制。我计划在 Backstop 这个项目中加入令牌访问验证。这样监控系统的管理员可以授权特定程序或开发人员访问指定的指标命名空间。
本演讲以及其它在罗马 DevOps Days 上发表的演讲,请在这里观看。
查看英文原文: The Future of Monitoring: an Interoperable Architecture
感谢崔康对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。
评论