解决方案:#yyds干货盘点# Kubernetes 怎样实现自动化服务监控告警?(15)
优采云 发布时间: 2022-11-15 21:46解决方案:#yyds干货盘点# Kubernetes 怎样实现自动化服务监控告警?(15)
我们已经对Kubernetes有了一定的了解,以及如何在Kubernetes中部署自己的业务系统。
Kubernetes 的强大能力让我们使用容器来部署服务变得非常方便。Kubernetes 内置的副本保留能力可以避免部署的业务系统出现单点故障,提高可用性。各种探针也可以帮助我们对正在运行的容器做一些简单的定期检查。
但是如果想知道业务实际运行的一些指标,比如并发数、IOPS、线程数等,就需要通过监控系统来获取。此外,我们还需要监控系统支持对不同数据源的指标进行采集、分类、聚合、可视化展示。
今天我们就来说说Kubernetes的监控体系以及目前主流的监控方案。我们先来看看Kubernetes监控系统遇到的挑战。
Kubernetes 监控系统的挑战
以往业务应用部署时,大多固定在少数几个节点上,监控各种指标非常方便。通过在每个节点上部署相应的监控代理,用于采集相应的监控指标。
但是在Kubernetes系统中,监控问题变得更加复杂。
首先,业务应用的Pod会在集群中“漂移”,不可预测。你无法预测 Pod 将运行在哪些节点上,运行时间可能是短暂的,随时可能被新的、健康的 Pod 取代。此外,还有业务需要伸缩的场景。您无法提前预测哪些 Pod 将被销毁。这里还有两点值得关注,那就是:
除了StatefulSet管理的Pod名称是固定的,Deployment/ReplicaSet/DaemonSet等工作负载管理的Pod名称是随机的;Pod 的 IP 不固定。
在这种情况下,如果我们过去仍然通过固定IP或者固定域名来获取监控数据,那是行不通的。
其次,转向微服务架构后,必然会出现“碎片化”的问题。从之前的单体架构到微服务架构,模块和功能逐渐拆解成一组小的、松耦合的服务。每个小服务可以单独部署,也给监控带来麻烦。
还是那句话,通过前面的学习,你已经知道Kubernetes是通过标签和注解来管理pod的。这一新概念对以往传统的监测方式带来了冲击。因此,判断一个监控方案能否完美适配Kubernetes系统的标准就是是否采用了label和annotation的思想来采集监控指标。
最后,Kubernetes 强大的能力让我们可以更自由的部署应用。Kubernetes 可以连接各种 Cloud Provider(云服务提供商),比如 AWS、GCP、阿里云、VMWare 等。这意味着我们在部署服务时,可以选择在公有云、私有云或混合云中运行 Pod。这也给监控系统带来了前所未有的挑战。
尽管存在所有这些挑战,但我们可以采用许多选择。下面我们就来看看Kubernetes中常见的几种监控数据类别。
常见监控数据类别
在 Kubernetes 中,监控数据大致可以分为两类。
一种是应用层面的数据,主要帮助我们了解应用本身的一些监控指标。常见的应用级监控数据包括:CPU使用率、内存使用率、磁盘空间、网络延迟、并发请求数、请求失败率、线程数等,对于并发请求数等指标,应用本身需要暴露监控指标的接口。
除了应用自身的监控数据外,另一个是集群级别的数据。这个数据非常重要,它可以帮助我们随时了解集群本身的运行状态。通过监控各个Kubelet所在节点的CPU、Memory、网络吞吐量等指标,方便我们及时了解Kubelet的负载情况。还有Kubernetes各个组件的状态,比如etcd、kube-scheduler、kube-controller-manager、coredns等。
在集群运行过程中,还需要采集Kubernetes产生的各种事件数据,以及Deployment/StatefulSet/DaemonSet/Pod的状态、资源请求、调度、API延迟等数据指标。
我们来看看如何采集这些监控数据。
常用监控数据采集工具
Kubernetes集群的data采集工具主要包括以下几个工具。
1. 顾问
cAdvisor是Google专门开发的用于容器资源监控和性能分析的开源工具,不支持跨主机数据监控。需要将采集数据存储在外部数据库中,比如influxdb,然后使用图形展示工具进行监控可视化。一开始,cAdvisor 也内置在 Kubelet 中,不需要额外部署。但从v1.10版本开始,社区放弃了cAdvisor的端口,即默认不开启,在v1.12版本正式移除,转而使用Kubelet自带的/metrics接口进行暴露。
2. 堆表
Heapster 是一个相对较早的解决方案。它使用 cAdvisor 来采集和汇总各种性能数据。它是 Autoscale 所依赖的组件。在网上查找各种 Kubernetes 的监控方案时,你可能还会看到它。但是现在Heapster已经被社区抛弃了,建议大家在后续版本中改用metrics-server。下一节将介绍如何通过metrics-server实现自动扩缩容,控制资源水位。
3.指标服务器
metrics-server 是一个集群范围的监控数据聚合工具,用于替代 Heapster。我们将在下一节学习如何使用它,所以先了解它就足够了。
4. Kube 状态指标
kube-state-metrics 可以*敏*感*词* kube-apiserver 中的数据,生成新的资源对象的状态指标,比如 Deployment、Node、Pod。这也适用于 kube-state-metrics 和 metrics-server。
5.节点导出器
node-exporter是Prometheus的一个exporter,可以帮助我们获取节点级别的监控指标,比如CPU、Memory、磁盘空间、网络流量等等。
当然,可以采集数据的类似工具还有很多,这里就不一一列举了。有这么多数据采集工具可以帮助我们采集数据,我们可以根据自己的需要自由组合,形成我们的监控解决方案体系。
在 Kubernetes 1.12 版本之后,我们通常会选择 Prometheus + Grafana 来搭建我们的监控系统,这也是社区推荐的方式。
普罗米修斯+Grafana
普罗米修斯非常强大。是SoundCloud于2012年开发的开源项目,2016年加入CNCF,成为继Kubernetes之后第二个被CNCF接管的项目。2018年8月毕业,意味着Prometheus已经具备了一定的成熟度和稳定性,我们可以放心的在生产环境中使用它,或者集成到我们自建的监控系统中(这是多少厂商自建的监控系统建)。
在Prometheus的早期开发中,它参考了谷歌内部的Borg监控实现Borgmon。所以它非常适合与 Borg 的 Kubernetes 一起使用。
让我们看一个例子。下图是Prometheus + Grafana组成的监控方案。
最左边的Prometheus target就是我们要的数据采集。Retrieval负责采集这些数据,同时支持Push和Pull 采集两种方式。
为了保证数据的持久化,Prometheus采集获取的监控数据会通过时序数据库TSDB存储,支持按时间存储。TSDB在提供存储的同时,还提供了非常强大的数据查询和数据处理功能,这也是报警系统和可视化页面的基础。
此外,Prometheus还内置了一个告警模块Alertmanager,支持多种告*敏*感*词*式,如pagerduty、email等,以及告警动态分组等功能。
最后通过Grafana将这些监控数据多维度可视化,方便通过市场进行分析。
最后
Kubernetes 的副本保留和自我修复能力让应用程序尽可能长时间地运行,但这并不意味着我们不需要知道应用程序正在运行什么。因此,当我们开始将业务部署到Kubernetes上时,我们还需要部署一个监控系统,帮助我们了解业务内部运行的一些细节。同时,我们还需要对Kubernetes系统本身进行监控,帮助我们了解整个集群的当前状态。形状来指导我们的决策。Prometheus和Grafana是目前应用广泛的监控组合方案,很多监控方案也是基于此开发定制的。
欢迎扫描二维码获取更多资讯
解决方案:云舆情监测系统(关于云舆情监测系统的基本情况说明介绍)
小伙伴们大家好,今天小程来聊聊云舆情监控系统。云舆情监控系统文章的基本情况介绍,网友们比较关心这件事,所以现在就为大家简单介绍一下,希望对大家有所帮助。
一、系统介绍 云舆情监测系统是将搜索引擎技术应用于企业舆情情报服务的一项创新。
2、系统采用中文分词技术、自然语言处理技术、中文信息处理技术、云采集技术、云分析技术,对信息进行过滤、去重、相似聚类、情感分析、提取摘要等信息处理. 与专业分析师合作,生成详尽的舆情分析报告。
3、系统架构 信息云采集系统:多台服务器同时运行,采集系统,搜索引擎结果;云信息处理:.
文章分享到此结束,希望对大家有所帮助。