热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

metricbeat监控多个linux_十大Kubernetes开源监控工具

作者:陈峻来源:http:51cto.com如今,Kubernetes在GitHub上已经拥有了超过58000万颗点赞之星,
e4f5d40c52ecac8731c4449ae12de8d5.png

作者:陈峻

来源:http://51cto.com

如今,Kubernetes在GitHub上已经拥有了超过58000万颗点赞之星,而且它在全球范围内有着2200多名在册的贡献者。可以说,它已然成为了容器编排方面的实际标准。不过,在解决并运行分布式微服务应用的过程中,它时常也会面临一些严峻的挑战。其中,广为开发与运维人员所提及的挑战之一便是:对于Kubernetes的监控问题。面对复杂的分布式环境,大家往往需要通过开发各种开源的监控方案,以满足实际应用的需求。

当前,在Kubernetes生态系统及其社区中,有着林林总总的Kubernetes工具。它们中有的能够通过日志来辅助检测状态;有的则是一种数据收集器;而另一些则提供了操作Kubernetes的界面。有些是Kubernetes原生的,有些则是开发人员自行研发的。在本文中,我们将通过优缺点的比较,向您介绍十大流行的Kubernetes开源监控工具。

Prometheus

优点:Kubernetes原生,易于使用,拥有庞大的社区。

缺点:可扩展性与存储能力不强。

由于具有与大量数据源的集成能力,因此Grafana在业界备受欢迎。同时,强大的Grafana具有警报、注释、过滤、特定数据源查询、可视化仪表板、身份验证与授权、以及跨组织协作等多种功能。

优点:拥有大型生态系统,以及丰富的可视化与警报功能。

缺点:未能针对Kubernetes的日志管理进行优化。

ELK(ala Elastic Stack)

就Kubernetes的日志而言,最受欢迎的开源解决方案当属ELK Stack。ELK是Elasticsearch、Logstash和Kibana的首字母缩写,其实它包含了第四个组件:Beats。它们都属于轻量级的数据传送器。虽然堆栈中的每一个组件都仅负责日志管道中的不同阶段,但是它们组合在一起,却能为Kubernetes提供了一个全面而强大的日志解决方案。

其中,Logstash管道能够在发送日志并对其进行存储之前,完成数据的汇总和处理。具有可扩展性的Elasticsearch,即使在存储和搜索数百万个文档时,也能具有不俗的表现。其对应的Kibana平台,则能够出色地为用户提供分析数据所需的可视化界面。

堆栈中所有不同的组件都可以被轻松部署到Kubernetes环境之中。您可以使用各种部署配置、以及helm图表,将不同的组件作为pod予以运行。通过部署,我们可以将Metricbeat和Filebeat作为守护进程的采集器,将Kubernetes的元数据附加到对应的文档中。

优点:拥有庞大的社区,易于在Kubernetes中部署与使用,具有丰富的分析功能。

缺点:扩展起来较为麻烦。

Fluentd/Fluent Bit

Fluentd在Logstash的基础上进行了相关性能的改进,因此也广受Kubernetes用户的欢迎。在工具设计方面,Fluentd拥有出色的性能、可扩展性和可靠性。各种简单方便的输入与输出,并不会对其性能产生任何影响。针对处理传输中的故障、以及数据过载问题,Fluentd使用磁盘或内存来进行缓冲和队列。同时,Fluentd通过支持多种配置选项,以确保提供更为灵活的数据管道。

Kubernetes原生的Fluentd和Fluent Bit都隶属于CNCF项目。它们不但可以与Kubernetes无缝集成,而且能够在仅占用少量资源的情况下,使用相关的pod和容器元数据来丰富各类数据。

优点:具有庞大的插件生态系统,提供优异的性能与可靠性。

缺点:配置较为麻烦。

cAdvisor(https://github.com/google/cadvisor)

作为一款开源的代理工具,cAdvisor能够通过收集、处理和导出数据,来展示那些正在运行的容器性能,及其资源使用情况。它能够以Kubelet二进制文件的形式,被内置集成到Kubernetes之中。

与其他代理工具不同,cAdvisor并不是被部署在每个pod中,而是在节点级别上。它能够自动发现计算机上所有正在运行的容器,并收集到诸如内存、CPU等系统网络指标。

作为一款基础性的本地开源监视工具,cAdvisor具有易用性,用户可以开箱即用(out-of-the-box)的方式发现Prometheus的参数指标。不过,要想成为一款全方位的监视解决方案,cAdvisor尚有持续改进的空间。

优点:内置于Kubernetes,易于部署和使用,能够支持多个端点。

缺点:过于基础,缺乏分析的深度,且功能有限。

kubewatch(https://github.com/bitnami-labs/kubewatch)

顾名思义, kubewatch能够监控那些特定的Kubernetes事件,并将此类事件以通知的形式推送到诸如Slack和PagerDuty的端点上。具体而言,kubewatch能够通过监控,来获悉Kubernetes指定资源的变化,其中包括:守护进程集、部署、pod、副本集、复制控制器、服务、密码、以及各种配置映射。Kubewatch不但易于配置,而且能够使用helm来进行自定义部署。

优点:支持多个端点,且易于部署。

缺点:只是一个监控器。

kube-ops-view(https://github.com/hjacobs/kube-ops-view)

虽然kube-ops-view项目的官方文档已明确指出:它不是一款监控工具,不能对生产环境进行监控与报警。但是它可以为您提供Kubernetes集群、不同部署节点、以及节点上不同Pod的运行状态信息。

44c6e96f19e2c0df11adba4fdd58bb87.png

资料来源:GitHub

优点:易于部署与使用。

缺点:作为只读工具,不太适用于管理Kubernetes资源。

kube-state-metrics

作为一款Kubernetes的原生监控指标服务,kube-state-metrics能够侦听各种Kubernetes API,并能够生成诸如Pod、服务、部署、以及节点等,有关对象的状态指标。您可以通过链接:https://github.com/kubernetes/kube-state-metrics/tree/master/docs,来获悉kube-state-metrics能够生成的完整指标列表。

kube-state-metrics虽然极其简单易用,但是由于它只能提供单一的指标服务,因此需要更多的改进,才能集成到完整的Kubernetes监控解决方案之中。kube-state-metrics能够以纯文本格式,导出HTTP端点上的指标。那些使用Prometheus的用户会经常使用到它。

优点:属于Kubernetes原生,易于使用,能与Prometheus无缝集成。

缺点:仅提供单一的指标生成服务。

Jaeger(https://github.com/jaegertracing/jaeger)

目前,分布式跟踪正在逐渐成为针对Kubernetes环境监视和故障排除的优秀实践方式。Jaeger正是此类开源跟踪工具中的佼佼者。

2016年,Uber在其他现有跟踪工具:Zipkin和Dapper的启发下,开发出了开源式的Jaeger。它能够帮助用户执行根本原因分析,性能优化和分布式的事务监控。

Jaeger具有适用于Go、Java、Node、Python和C++应用程序的OpenTracing-based特征。它能够根据每一个服务或端点,来使用一致性的前端信息采样频率。同时,它也支持Cassandra、Elasticsearch、Kafka、以及内存等多种存储后端模式。

Jaeger具有多种上手模式:用户既可以使用全新的Jaeger Operator(https://www.jaegertracing.io/docs/1.13/operator/),也可以使用守护进程来进行配置,另外它还有一个适用于测试和演示目的的all-in-one部署方式。

优点:易于部署,且能够通过用户界面来检测各种监控选项。

缺点:提供有限的后端集成。

Weave Scope

由Weaveworks开发的监视工具--Weave Scope,能够让您获悉对于Kubernetes集群的操作洞见。

虽然和kube-ops-view有几分类似,但Weave Scope主要是通过更好的用户界面,来提升服务等级;并允许用户在其界面上运行各种诊断命令,来管理不同的容器。

83921fc14e0c38ebfe9ae514c63822e2.png

图片来源:GitHub

您可以通过该应用工具,来有效地掌控部署环境,并在其上部署自己的基础架构,以及不同的组件连接。

优点:提供了“零配置”式的用户界面。

缺点:其分析深度欠佳。

总结

上述所列举的十大Kubernetes开源工具,只是业界所有工具中的“冰山一角”。它们在不同程度上为用户提供了设计Kubernetes堆栈的可观察性。您可以通过设置小型的沙箱环境,从小规模的测试开始,进行尝试性的测试和部署,进而判断出哪一款才是您真正所需要的工具。

ps:看更多干货,加入技术交流微信群可以关注我的公众号360linker



推荐阅读
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • flask json传输失败_GO小知识之实例演示 json 如何转化为 map 和 struct
    简单谈一些JSON数据处理的小知识。近期工作中,因为要把数据库数据实时更新到elasticsearch,在实践过程中遇到了一些JSON数据处理的问题。实 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • Elasticsearch1Elasticsearch入门1.1Elasticsearch术语1.1.16.0以前的Elasticsearch术语1.1.26.0以后的Elasti ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 解决php错误信息不显示在浏览器上的方法
    本文介绍了解决php错误信息不显示在浏览器上的方法。作者发现php中的各种错误信息并不显示在浏览器上,而是需要在日志文件中查看。为了解决这个问题,作者提供了一种解决方式:通过修改php.ini文件中的display_errors参数为On,并重启服务。这样就可以在浏览器上直接显示php错误信息了。 ... [详细]
  • 此版本重点升级了Online代码生成器,支持更多的控件生成,所见即所得,极大的提高开发效率;同时做了数据库兼容专项工作,让Online开发兼容更多数据库:Mysql、SqlServer、Oracle、Postgresql等!!!项目介绍 ... [详细]
  • 架构师必读:日均500万数据,如何进行数据存储选型?
    点击上方关注我,选择“置顶或者星标”作者:麦田里的老农来源:https:zhuanlan.zhihu.comp37964096小编公司有一 ... [详细]
author-avatar
avici
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有