【第一章 K8S与Prometheus】介绍适用于Kubernetes的监控工具
分散监视的问题点
微服务架构的采用增加了对容器的采用,以打包、分发和运行微服务。这需要编排器来处理服务器上这些容器的可用性、性能和部署。
然而,由于各种分散和多样化的应用程序相互作用,微服务、容器化和编排工具的整体设置使得日志记录和监视变得复杂。如果由于单一故障点而导致连续的进程中断,并可能识别问题,但检测其他问题则是另一回事。
像Kubernetes这样的容器编配工具,可以在各种分布式系统中编配容器,通过分布式处理来减少复杂性。但是,Kubernetes本身就很复杂,有太多需要监控的组件。与只有2个组件要监控的单体应用程序(应用程序和主机)不同,Kubernetes有4个组件需要监控,包括节点(主机)、Kubernetes平台本身、Docker容器和容器化的微服务。
在云原生时代,传统的监控工具仅记录CPU使用率、内存使用量、每秒的输入/输出(I/O)、延迟、网络带宽等参数到日志中已经不再足够。云原生时代需要在容器或服务级别上提供详细的监控策略。
此外,傳統的監控方法是與長期的主機模型一起設計的。傳統的數據中心由許多用於托管單片應用程序的服務器組成,並使用靜態IP和主機名。監控與這些固定參數相關聯,並且相對於微服務架構很少發生變化。
微服务架构的应用程序的特点是部署在动态和临时的容器中。在Kubernetes中,需要运行多个应用程序模型。除非特别指定,Kubernetes倾向于将Pod放在被认为合适的节点上。事实上,Kubernetes调度Pod的功能是自动调整系统的缩影。
因此,容器化环境的监控工具需要提供即时的服务检测和自动检测容器生命周期事件。此外,由于容器每秒钟都在创建或重新启动,因此需要调整指标。
总的来说,在微服务环境中定位问题会比单体应用环境稍微困难一些。这是因为请求需要在多个服务之间的不同堆栈层之间进行传输。为了同时监控这些相互连接的层级,并简化故障排除,需要最新的监控工具来根据资源对应用程序和基础架构的操作进行分类。
标准Kubernetes仪表板和内部工具的限制
Kubernetes标准仪表板提供了显示资源使用率信息的基本用户界面。此外,您可以使用该仪表板对应用程序和集群本身在集群内的布局进行整理。但是,Kubernetes仪表板缺乏像Prometheus和Grafana等更高级的Kubernetes监控工具的精细性。此外,Kubernetes仪表板依赖于被弃用的Kubernetes性能监控和指标收集系统Heapster。
投资于Kubernetes的组织不需要在内部开发自己的工具,而是需要调查许多监控工具。下面的工具不仅对Kubernetes的监控很有效,而且由开源社区不断改进,因此是可信赖的工具。
cAdvisor -> cAdvisor容器性能监控工具
cAdvisor是一个专为容器构建的开源容器资源使用量和性能分析代理,它的核心是DockerDNA。在Kubernetes中,cAdvisor被包含在Kubelet二进制文件中。因此,cAdvisor在节点级别而不是Pod级别上运行。
在通常的配置中,cAdvisor会自动检测所有活动容器,并实时报告CPU、内存、文件系统和网络的使用情况。
cAdvisor作为一个工具,适合用于测量一些基本的机器性能特征。然而,事实是它没有自带分析引擎来报告有意义的洞察。
Kube状态指标
Kube-state-metrics是一项最小化的服务,与现在不再推荐的Heapster同时使用,用于收集报告给Kubernetes API服务器的数据。它曾经非常受欢迎。
获取有关Deployment、Node、PersistentVolume、Pod、Service等对象状态的洞察。
最大的缺点是Kube-state-metrics以纯文本形式提供指标。当然,可以将这些指标抓取并转换成适用于强大的分析软件套件的格式。然而,这意味着需要使用自己的工具来理解来自Kube-state-metrics的数据。
普罗米修斯
Prometheus是为Kubernetes环境带来端到端可见性的最有希望的方法之一。Prometheus不仅仅是一个监控系统,还需要与各种远程终端和存储系统(如VictoriaMetrics、Elasticsearch、Graphite、InfluxDB、Postgres等)进行集成,并考虑如何通过Webhook接收器(如SNS、SMS、SNMP、Slack、IRC、Telegram Bot等)发送警报,才能释放其真正的潜力。
MetricFire提供托管的Hosted Prometheus服务。您可以立即使用它来尝试Prometheus,无需进行任何设置。
Grafana可以被描述为一个数据可视化和监控平台。
Grafana 是一种度量分析平台,它可以查询、可视化、警报并理解 Kubernetes 的度量数据。
您可以使用Grafana Kubernetes应用程序来监视Kubernetes。该应用程序包含有关集群、节点、Pod/容器和部署的四个仪表板。
Grafana最大的优势在于其灵活性,这使得您可以轻松地将多个指标汇总到方便的仪表盘上。例如,您可以从cAdvisor或Prometheus获取指标。除了所有节点和pod都具有的标准指标外,Grafana还允许您添加应用程序特定的指标。
MetricFire 提供 Grafana 作为一项服务。您可以在这个服务中试用 Grafana 并查看其详细信息。
“Kubewatch” — kube监控
Kubewatch是一个能够轻松集成到Slack频道的事件触发通知系统。只需指定需要监视的内容,该系统的Kubernetes客户端库就能与Kubernetes API服务器进行交互,并返回通知。
您可以选择监视以下资源:
- デーモンセット、デプロイメント、ポッド、レプリカセット、レプリケーションコントローラー、サービス、シークレット、構成マップなど
猎人
Jaeger在Kubernetes等复杂的分布式系统中负责事务故障排查和监控。
微服务架构本质上是分散的,当实现分散上下文传播、事务监控和延迟优化时可能会遇到问题。Jaeger是为分散系统开发的监控系统。
Jaeger是一种支持OpenTracing本地化的工具,它致力于解决Kubernetes网络和可观测性的问题。Jaeger的仪表化库、后端和Web界面都采用了与供应商无关的API和用于分布式追踪的仪表化集合,以支持OpenTracing标准。Jaeger客户端是OpenTracing API的语言专用实现。Jaeger守护进程通过Jaeger客户端库接收应用程序发送的追踪信息。它可以作为边车容器或独立的DaemonSet运行。
MetricFire (度量火)
MetricFire提供了一个包括的基础设施和应用程序监控平台,其中包含一系列开源监控工具。当前提供的平台包括托管的Prometheus和托管的Grafana。用户只需将指标发送到MetricFire,便可以在漂亮的Grafana仪表盘上实时查看指标,无需额外操作。
此外,MetricFire提供了Prometheus和Grafana作为服务,并包含了在长期存储和技术支持方面缺少的OSS Prometheus和Grafana的功能。立即在MetricFire上注册免费试用,来验证一下吧。
总结
对于投资于K8和Docker容器以增强微服务的公司来说,不需要创建新工具,考虑使用现有的Kubernetes监控工具之一将节省时间和成本。
另外,我们推荐使用已经经过改进的现有监控工具,这些工具得益于我们提供的独一无二的定制选项以及庞大的社群。
对于企业来说,使用托管式Kubernetes监控工具是一个值得考虑的选项。这样可以集中精力为客户提供价值,而无需花费时间去处理可避免的任务。
请在MetricFire上注册免费试用账号,立即开始对Kubernetes进行监控。预定演示,并直接咨询关于Kubernetes设置的监控问题。