13 Prometheus 之云时代的监控目标及挑战
传统 IT 环境中人员更关注底层基础设施的运维、项目管理,对业务需求的理解和响应比较被动。云计算中 IT 人员需要更关注业务的需求,探索新的业务模式,主动发现客户需求,寻找新的技术和解决方案,而不仅仅关注底层平台的运维和资源管理。
监控系统的目标是:提供对复杂信息系统的全面监控,反映云资源池的健康状况和可用性情况,得到一个可控制、可预测的云环境,支持云业务安全、稳定、高效、持续地运行;同时,有效地控制管理成本,规范管理工作,实现运行管理的智能化和高效性,提高整体的维护水平;及时掌握各种资源现状和运行信息,为决策提供支持。
监控是运维团队眼睛的延伸。监控系统应当解决三个问题:“出问题了吗?”“哪里出了问题?”“是什么问题?”
通过建立完善的监控体系,可以达到以下目的。
长期趋势分析:通过对监控样本数据的持续收集和统计,对监控指标进行长期趋势分析。例如,通过对磁盘空间增长率的判断,我们可以提前预测在未来什么时间节点上需要对资源进行扩容。
对照分析:两个版本的系统运行资源使用情况的差异如何?在不同容量情况下系统的并发和负载变化如何?通过监控能够方便地对系统进行跟踪和比较。
告警:当系统出现或者即将出现故障时,监控系统需要迅速反应并通知管理员,从而能够对问题进行快速处理或者提前预防问题的发生,避免对业务产生影响。
故障分析与定位:当问题发生后,需要对问题进行调查和处理。通过对比分析不同监控数据与历史数据,能够找到并解决根源问题。
数据可视化:通过可视化仪表盘能够直接获取系统的运行状态、资源使用情况,以及服务运行状态等直观的信息。
云计算监控又面临如下的挑战:
持续变更。持续变更中,监控的参数频繁变更,监控系统参数也经常需要随着变更。
自下而上还是自上而下。采用了自下而上的方式进行监控:根据聚合值,低层中的错误和单个模块中的错误,可以在它们传播和影响到上层应用服务器或者应用本身之前被发现。采取自上而下的方法来监控基于云的和高度复杂的系统是解决以上问题的一种尝试,通过监控上层或者聚合数据,从顶层问题出发再以智能的方式深入低层数据。仍然必须收集低层数据,但不会系统化地监控错误。
复杂的微服务架构。在具有大量节点的微服务架构中,如何在这些仍然工作的节点中找出响应慢的节点?如何定义“慢”?如何选择合适的阈值?
大容量的分布式数据。在大型系统中,监控每件事情会引入性能、传输和存储方面的巨大开销。一个大型系统很容易生成数百万个事件以及指标数据,每秒都会产生大量的日志。
合理的监控体系架构
在业务逻辑、应用程序和运行环境层级上收集数据,在每一层,以事件、日志和指标为监控对象。可以在所有服务器上使用特定文件来存储日志,但最好将所有日志发送到公共日志服务中,这样更利于聚合、查询和清除。此外,在应用程序栈的所有层级中收集指标,能更好地了解系统的活动状态。在操作系统级别,可以收集 CPU、内存、磁盘或网络的使用率等。
事件路由器负责事件的存储和转发:支持监控可视化、趋势分析、告警、异常检测等。通过采集、存储和聚合所有监控信息,能实现更深入的分析和健康检查。事件路由器用于存储与服务(和它们支持的应用程序与运行环境)有关的配置,可以实现基于阈值的告警和健康检查。
监控系统是服务可靠性层级中的最底层。离开了监控系统,就没有能力辨别一个系统是否在正常提供服务。没有一套设计周全的监控体系就如同蒙着眼睛狂奔。作为一个合格的系统运维人员,需要先于用户发现系统中存在的问题。没有监控的支持,上层应急事件处理、事后总结/问题根因分析、测试+发布、容量规划、软件开发、产品设计也就没有了根基。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/a2a33fc0b75e48c1757bbb22a】。文章转载请联系作者。
评论