7总结
试读章节
*因课程内容体量大,此处提供部分试读,全文内容可参考上面的目录,感兴趣可以直接下载全文,该系列15个课程系列全部开放免费学习1前言容器云平台在运维体系中,监控是不可或缺的组成部分。通过监控可以实时掌握系统运行状态,历史状态的回访等,为系统性能优化提供真实的用户行为与体验。传统的监控系统针对物理机或虚拟机设计,对于容器云平台来说,使用传统的监控工具会增加监控的复杂程度。在容器云平台中,容器运行实例,例如符合CRI-O的容器实现是一个工具,它使你能够以容器化的方式运行应用程序,Kubernetes是一个用于编排、管理容器的平台,而在实际情况中想使用容器实例工具命令行去手动地管理数千个容器,这是不切实际的。然而,仅仅通过Kubernetes管理并运行数千个容器是不够的,你还需要监控这些容器,以确保服务处于最佳运行状态。这一过程类似于实现网站可靠性工程(SiteReliabilityEngineering),它是由谷歌提出并推广的一个术语。可观测性和分析性是SRE的重要组成部分。它可细分为以下三个部分:
监控,从应用程序和宿主机中提取数值指标,这些指标可以被可视化和分析,以显示资源的当前状态。一旦提取到了数值指标,就可以使用它们来设置告警规则、促进分析和调试,并更好的做出决策。
日志,帮助开发人员在容器发生故障时,排除出错原因。容器日志随着容器生命周期的结束也就消失了。Kubernetes和Docker确实提供了一种浏览容器日志的方式,但是它的功能非常有限。因此,在任何以容器构成的环境中,集中式的管理日志是必须的。
跟踪,帮助你调试在网络上运行的服务,并跟踪请求链路,直到找到问题的根源。在微服务体系结构中,当多个服务/容器相互发送请求以完成一个业务任务时,需要一个适当的跟踪解决方案。
在本章节中,我们通过对较为流行的几种容器云监控产品进行分析,找出功能匹配、可扩展、功能强大的监控产品,并以实例的方式进行一定的阐述,来达到选型的目的。
2常见的容器云平台监控开源工具本小节将讲解六个最热门的容器云平台监控开源工具,专门用于容器化服务的监控和分析。
2.1Prometheus
Prometheus在开发社区中非常流行,是CNCF项目的毕业生。Prometheus最初由Soundcloud创建并开放源代码。Prometheus简化了提取数值指标的过程,直接从一个基于时间序列的监控端点中提取。适用于监视高度动态变化的容器环境。Prometheus由三个部分组成:PrometheusServer、Alertmanager和Exporters。Exporters以独立进程或容器的方式运行在目标机器上,生成各种指标数据,通过API的方式发送给PrometheusServer。PrometheusServer负责服务发现,也可以从Exporters直接拉取指标数据,然后将数据存储在Prometheus的数据库中,用于可视化或告警服务。Alertmanager用于设置告警规则,分析Prometheus数据库中的数据,当触发某个规则时,向接收者发送警报。在这里可以找到大量的Exporters,它们都得到了Prometheus的官方支持和社区的维护。
Prometheus已经成为监控云原生应用的行业标准。尽管它以服务发现的简单性、易用性、告警服务和与Kubernetes的集成而闻名。但指标数据只能被PrometheusServer拉取的方式并不理想。这意味着Exporters必须能够被PrometheusServer访问,因此,在Prometheus中实现了一个Pushgateway,它支持将数据直接推送给PrometheusServer,而不是由PrometheusServer主动拉取。Prometheus的另一个缺点是它不能很好地水平扩展。这个问题可以在ThanosAdaptationOfPrometheus找到解决方案。
Prometheus相关工具和技术:Grafana、Cortex、Thanos、PrometheusExporters、AlertManager、Istio、PrometheusOperator。
Prometheus监控范例图:
2.2Grafana
Grafana是一款开源的指标分析和可视化套件。它允许你使用来自多个数据源(如Prometheus、Elas-ticsearch、Mysql、Postgres和Redis)的数据创建自定义仪表板。此外,Grafana最新的版本有自己的告警系统和基于角色的访问控制(RBAC)系统。Grafana作为一种数据可视化工具,在Prometheus的用户中非常出名,它可以有效地可视化存储在Prometheus中的指标数据。Grafana为来自各种数据源的数据提供了大量官方和社区构建的定制化仪表板,允许用户轻松地设置仪表板并监控数据。Grafana提供另一种相关产品Loki,它将Kubernetes中的日志聚集起来,并与GrafanaUI很好地集成在一起。相关工具和技术:Loki、Prometheus。
2.3ElasticStack
ElasticStack是一组来自Elastic的开源产品,旨在帮助用户实时搜索、分析和可视化来自任何类型的数据源的任何格式的数据。该产品之前被称为ELK,每个字母代表公司的一款主要产品:Elasticsearch,Logstash和Kibana。ElasticStack利用Elasticsearch提供监测和日志解决方案。
为了聚合日志,人们倾向于使用Elasticsearch进行存储,使用Logstash或Fluentd发送日志,使用Kibana进行可视化。Fluentd不是ElasticStack的一部分,但它广泛地应用于Kubernetes环境中,用以代替Logstash。类似地,Metricbeat用于获取指标数据并在Kibana上进行可视化。ElasticStack企业版附带了X-Pack,X-Pack是一组支持报表、警报和基于角色的访问控制(RBAC)等功能的附加工具。默认情况下,ElasticStackGUI(Kibana)不支持RBAC。你必须使用ElasticStack企业版本来启用RBAC。相关工具和技术:X-Pack、Metricbeat、Logstash、Kibana。
2.4SensuGo
SensuGo是一款用于多云监控的遥测和服务健康检测解决方案。帮助你查看服务器、容器、服务、应用程序、功能和跨任何公有或私有云的连接设备。Sensu可以和Prometheus一起运行,以获得两种解决方案的最佳效果,也可以在没有Prometheus的情况下自己运行。因为将应用程序级别的指标数据导出到Prometheus需要将PrometheusSDK加载到应用程序的代码库中,并暴露一个端口,所以Sensu与Prometheus一起工作是最好的。然后,该端口负责收集数据并存储在PrometheusServer中。这听起来好像有很多工作要做——有时确实如此。Sensu通过使用Sidecar的方式来避免这种复杂性。在应用程序旁部署了一个Sensu代理。Sensu代理不断地收集数据并发送给PrometheusServer,这样就不需要更改应用程序代码了。Sensu也可以脱离Prometheus工作,独自在Kubernetes中运行,在Kubernetes中,Sensu有自己的服务器来存储和可视化由Sensu代理收集的数据。相关工具和技术:Prometheus。
2.5SysdigInspect
Sysdig公司有两款开源产品:SysdigInspect和Falco。在这里,我们将重点讨论Inspect,SysdigInspect用于监视和捕获系统中运行的容器进程,并允许深入这些进程以进行事后取证。帮助分析应用程序性能、排查错误并监视任何可能出现错误的处理器。此外,如果你的系统遭到了破坏,Sysdig帮助你了解破坏是如何发生的,以及在这个过程中丢失了哪些数据。SysdigInspect是一个非常强大的工具,它