【51CTO.com快译】监控可帮助你确保Kubernetes应用程序顺畅运行,并排除可能出现的任何问题。 Prometheus是一款流行的开源监控工具,许多公司用它来监控IT基础架构。不过还有许多其他监控工具可用,本文介绍了替代Kubernetes Prometheus的六款监控工具。
Prometheus是最初在SoundCloud开发的一种开源监控系统,旨在监控多维数据收集和查询。 Prometheus服务器有自己的独立单元,不依赖网络存储或外部服务。因此,Prometheus不需要大量其他的基础架构或软件。
Prometheus的主要优点包括:与Kubernetes紧密集成、许多可用的导出器和库以及快速的查询语言和API。Prometheus的主要缺点包括:简化受约束的数据模型,基于pull的模型的有限粒度以及缺乏加密。
下面介绍了使用Prometheus监控Kubernetes之外的六种工具。每种工具都有其优缺点。不妨看看每种工具的主要功能。
1. Grafana
Grafana是一个开源平台,用于可视化、监控和分析度量指标。Grafana侧重于时间序列分析。Grafana可以通过众多图形选项(包括线图、热图和条形图)显示所分析的数据。被监控的度量指标超过预定义的阈值时,你会收到警报。
主要功能包括:
- 警报:可以通过不同的渠道(包括SMS、电子邮件、Slack或PagerDuty)获得警报。如果你更喜欢其他沟通渠道,可以使用一些代码创建自己的通知程序。
- 仪表板模板化:模板化让你可以创建可重复用于多个使用场景的仪表板。比如说,可以为生产服务器和测试服务器使用同样的仪表板。
- 配置:可以使用脚本使Grafana中的一切实现自动化。比如说,可以使用含有IP地址、服务器和数据源预设值的脚本,自动启动Grafana和新的Kubernetes集群。
- 注释:发生错误时适用于数据关联。可以通过在图形中添加文本来手动创建注释,也可以从任何数据源获取数据。
2. cAdvisorc
cAdvisor收集、处理和导出有关运行中容器的性能和资源使用情况信息。cAdvisor直接支持Kubernetes,因为它已集成到Kubelet二进制文件中。
主要功能包括:
- 自动发现:自动发现某个节点中的所有容器,并收集统计信息,包括内存、CPU、网络和文件系统的使用情况。
- 存储插件:将统计信息导出到不同的存储插件,比如Elasticsearch和InfluxDB。
- 机器整体使用情况:通过分析机器上的“root”容器,提供机器整体使用情况。
- Web-UI:可以在Web-UI上查看显示有关机器上所有容器的实时信息的度量指标。
3. Fluentd
Fluentd将数据源与后端系统分离开来,为此在两者之间提供了统一的日志层。日志层使你可以收集生成的多种类型的日志。
主要功能包括:
- JSON数据结构:使你能够统一所有日志数据处理方面,比如跨不同数据源的缓冲、过滤和输出日志。
- 可插拔架构:灵活的插件系统使你可以通过连接多个数据源和输出来扩展Fluentd的功能。
- 系统资源:Fluentd实例在30MB到40MB的内存上运行,每秒可以处理13000个事件。如果需要更多内存,可以使用Fluent Bit轻量级转发器。
- 可靠性:支持基于文件的缓冲和内存缓冲,防止节点上数据丢失。此外,可以设置Fluentd以支持高可用性和可靠的故障切换。
4. Jaeger
Jaeger是一款开源工具,用于监控Kubernetes等分布式服务之间的流量。Jaeger使用分布式跟踪来跟踪服务请求通过不同微服务的路径。然后,你可以直观地看到请求流。分布式跟踪是一种管理和观察微服务的方法,它作为服务网格的一部分运行。
主要功能包括:
- 高可扩展性:旨在杜绝单一故障点(SPOF),可根据业务需求进行扩展。
- 多种存储选项:支持两种开源NoSQL数据库Elasticsearch和Cassandra。Jaeger还提供了简单的内存存储用于测试。
- 云原生部署:支持不同的配置方法,包括环境变量、命令行选项和配置文件。Kubernetes模板、Kubernetes Operators和Helm图支持Kubernetes部署。
- 监控:Jaeger后端组件默认情况下公开Prometheus度量指标和日志。
5. Telepresence
Telepresence是一款开源工具,可以在本地运行单一服务的同时,将该服务连接到远程Kubernetes集群。Telepresence在Pod中部署了双向网络代理,该代理可为Kubernetes环境收集数据,包括TCP连接、环境变量和卷。
主要功能包括:
- 兼容性:使用OS原生软件包,可在Linux和Mac OS上运行。
- 开发工作流程:针对Kubernetes上的多容器应用程序开发,为你提供了快速开发工作流程。你可以在运行本地Docker容器的同时让它充当你集群的代理。
- 本地调试Kubernetes服务:登台集群中有错误时,你希望在本地运行服务。Telepresence使你可以在本地调试服务。
- 连接到远程Kubernetes集群:可以从本地进程访问远程集群。该访问权限让你可以使用笔记本电脑上的本地工具与集群内的进程进行联系。
6. Zabbix
Zabbix旨在监控大量网络参数和服务器的运行状况,并基于存储的数据提供许多数据可视化和报告功能。拥有少量服务器的小公司和拥有多台服务器的大企业可以使用Zabbix监控IT基础架构。
主要功能包括:
- 灵活的阈值:你可以定义灵活的问题阈值(又叫触发器)。这些触发器基于来自后端数据库的值。
- 实时可视化:你可以使用内置的绘图功能立即查看被监控的对象。
- 自动发现:提供自动管理Kubernetes等庞大环境的几种方法。你可以自动添加和删除贵组织中的文件系统和网络接口。
- 网络发现:使你能够定期扫描网络、查找外部服务或Zabbix代理,一旦发现就采取预定义的措施。
- 分布式监控:提供使用Zabbix代理监控分布式基础架构的有效方法。你可以使用代理在本地收集数据,然后将数据报告给服务器。
原文标题:6 Kubernetes Prometheus Alternatives,作者:Limor Wainstein
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】