TOC
背景
随着 Kubernetes 成为容器编排领域的霸主,越来越多的业务大规模在生产环境使用 Kubernetes 来部署、管理服务。腾讯云TKE正是基于原生 Kubernetes,提供以容器为核心的、高度可扩展的高性能容器管理服务,自从2017年推出后,随着 Kubernetes 的火热,我们的集群规模也增长到万级,在这过程中我们的各基础组件,尤其是etcd面临了以下挑战:
如何通过一套监控系统,采集万级的TKE集群的 etcd 等组件 metrics 监控数据?
如何高效治理万级集群、主动发现故障及潜在隐患?
如何快速感知异常,实现快速处置、乃至自愈?
为了解决以上挑战,我们基于 Kubernetes 的扩展机制,实现了一套含etcd集群管理、调度、迁移、监控、备份、巡检于一体的可视化的etcd平台,本篇文章重点和你分享的是我们etcd监控平台是如何解决以上挑战的。
面对大规模监控数据采集问题,我们的解决方案从TKE诞生之初的单 Prometheu 实例、到基于 Promethes-Operator 动态构建多 Prometheus 实例、添加监控 Target, 再到基于 TKE云原生 Prometheus 产品实现水平可扩展的监控系统,成功为万级 Kubernetes 集群提供稳定的 etcd 存储服务和监控能力,etcd 监控平台治理的 Kubernetes 集群数也实现了从个位数、到千级、万级的突破。目前数据规模上,单位时间内 Prometheus Target 高达数万个,单地域指标数据量 Series 千万级,面对大规模监控数据,监控数据可用性仍能保持在99.99%以上。
面对复杂分布式环境中,各种可能出现的不可控人为操作失误、硬件、软件故障,我们基于 Kubernetes 扩展机制、丰富 的etcd 知识与经验积累构建了多维度、可扩展的的巡检系统,帮助我们高效治理万级集群、主动发现潜在隐患。
面对监控数据庞大,告警泛滥,我们基于高可用的监控数据,结合运营场景,建立标准化的数据运营体系,大幅减少无效告警,提高告警准确性,并进一步引入多维度的SLO,收敛告警指标,为业务方提供直观的服务水平指标。通过标准化的数据运营体系、告警分类、告警跟进、上升机制、简单场景的自愈策略等,实现故障快速处置、乃至自愈。
下面,我们就和你详细介绍下,我们是如何解决以上三个挑战,希望其中的最佳实践能帮助你快速构建可扩展的业务监控系统。
如何构建高可用,可扩展的监控数据采集服务?
首先是第一个问题,如何通过一套监控系统,采集万级的TKE集群的etcd组件 metrics 监控数据?
大家都知道,etcd是一个开源的分布式 key-value 存储系统,它是 Kubernetes 的元数据存储,etcd的不稳定会直接导致上层服务不可用,因此etcd的监控至关重要。
2017年,TKE诞生之初,集群少,因此一个单 Prometheu 实例就可以搞定监控问题了。
2018年,Kubernetes 越来越被大家认可,我们的 TKE 集群数也越来越多,因此我们引入了 Promtheus-Operator 来实现动态管理 Prometheus 实例、通过多 Prometheus 实例,我们基本扛住了数千的 Kubernetes 集群监控需求,下面是其架构图。
…..