Kubernetes监控实践(2):可行监控方案之Prometheus和Sensu

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
简介: 本文介绍两个可行的K8s监控方案:Prometheus和Sensu。两个方案都能全面提供系统级的监控数据,帮助开发人员跟踪K8s关键组件的性能、定位故障、接收预警。

本文介绍两个可行的K8s监控方案:Prometheus和Sensu。两个方案都能全面提供系统级的监控数据,帮助开发人员跟踪K8s关键组件的性能、定位故障、接收预警。

拓展阅读:Kubernetes监控实践(1):K8s的工作原理与监控实践

一、K8s监控之Prometheus

1.1 简介

Prometheus是针对容器和微服务的开源监控预警工具,功能稳健,适用于开发流程中的云端管理员和开发人员等各个相关方。Prometheus定时聚合配置对象中的指标数据,评估规则表达式,展示结果,发送预警。

Prometheus不仅能够监控预定义指标,还能实现多维数据模型,进行深度分析,并针对多个指标建立关联,从多个角度为开发人员和管理员提供数据支持。

1.2 工作原理

Prometheus是K8s环境的附加层。首次安装时应定义数据采集参数和数据采集时间间隔。Prometheus既能实时监控K8s节点,也能对监控数据进行定时分析。Prometheus也可以针对节点失效等故障发送预警。

1.3 Prometheus Operator

很多用户会混淆controller和operator。K8s Operator是指Controller向K8s API中添加新的对象、配置管理Prometheus等应用的模式。简而言之,operator是针对特定领域的controller。

PrometheusOperator简化了Prometheus在K8s中的运行,不需要改变K8s的配置。使用Prometheus Operator可以轻松监控K8s的服务。可以通过预定义的.yml文件运行Prometheus。Prometheus Operator能够创建、配置并管理K8s上的所有监控实例。部署新应用时,K8s会创建新的pod(容器)。创建完毕后,原有pod会被销毁。Prometheus持续监控API,如发现不一致,则基于服务或pod变化创建新的Prometheus配置。

1.4 核心组件

作为一款稳健的监控工具,Prometheus从服务上拉取数据,不需要服务主动推送数据。不过Prometheus提供推送入口,但无法拉取数据时可以接受服务推送上来的数据。

此外,Prometheus支持将时间序列与指标名称和键值对关联起来,简化了对多云端的监控。Prometheus不仅监控应用全局,还能钻取到微服务层面。用户可通过查询功能管理数据,了解应用状况;也可以使用PromQL创建图表和表格,实现数据可视化,并根据具体参数生成预警。

Prometheus的Web控制台展示了所有功能和工具。用户可通过正则表达式和高级PromQL检索条件创建数据集和预警。Prometheus还支持外网访问。

1.5 优势

Prometheus最大的优势在于简单灵活,可以实现监控的多维数据模型。用户可以轻松搭建容器集群的监控框架,还可以结合Grafana,进一步提高监控数据的可视化水平。

Prometheus可以通过K8s的本地服务发现配置采集node、pod和服务指标。用户可直接定义表达式,创建预警,不需要在不同的监控系统中来回切换。

Prometheus的抓取能力能够集成到K8s、Docker和StatsD等工具中。用户还可以通过Web GUI配置预警、管理图表。

不过Prometheus也存在不足:数据模型受限。Prometheus默认的时序数据采集模型有利有弊:一方面,这种模型有助于按照标准格式采集数据;另一方面,标准化数据格式导致数据模型受限。Prometheus通过discovery机制与K8s保持通信,因此存在延迟。

二、K8s监控之Sensu

2.1 简介

Sensu是多云端容器基础设施监控工具。Sensu agent是跨平台事件生成器,用户可通过执行service check监控系统和服务的健康状况,同时采集分析metrics,不仅提供预警或事件管理功能、监控API、客户端库以及多脚本或编程语言插件,还支持自定义工作流,丰富了Sensu能力。

Prometheus通过拉取的方式主动抓取数据,而Sensu则采用消息总线的通信机制,通过发布/订阅(Pub/Sub)的方式推送或拉取数据。

2.2 工作原理

Sensu使用本地插件从StatsD库、Prometheus exporter、Nagios插件、SNMP陷阱等主流程序中采集数据。不同于Prometheus等其他监控工具,Sensu开箱即用,支持多云端环境,用户配置框架后即可提供高可用性。

Sensu提供event filter、mutator和operator handler,支持创建并自动化模型工作量。这样,外部监控工具的数据便可与Sensu的监控数据整合,形成基于事件的监控路径。

2.3 核心组件

Sensu针对K8s容器优化了自动发现能力。用户可针对K8s和Docker等容器环境轻松配置监控check和collector,也可以针对K8s所有组件和运行在K8s上的应用配置多个check。

Sensu也支持本地集成和插件,可以与日志工具和Prometheus同时使用。用户可同时运行Sensu和Prometheus,处理不同的数据集。Sensu可以采集StatsD metrics,并将采集结果写入Prometheus。

Sensu还能在K8s环境中运行。假设一开始将Sensu部署在某个容器中,后来决定将整个应用迁移到其他容器环境中。迁移完成后,Sensu agent依然能够在新的环境中正常运行,也能被Sensu发现,因为Sensu具备自动发现机制。

2.4 在K8s中的应用

Sensu可扩展性强,可随着部署应用和云环境的增加不断扩展,提供具体的功能监控服务。Sensu监控对象的数量没有上限,也不会因为监控对象的增加变得更加复杂。

三、K8s监控之Sensu+Prometheus

同时运行Sensu和Prometheus能够提高监控的可见性,实现各自功能的优势互补。

3.1 工作原理

SensuPrometheus Collector是Sensu Check插件,聚合从Prometheus exporter或Prometheus query API抓取的数据。采集的数据以Influx(默认)、Graphite、JSON格式存储在STDOUT中。

SensuPrometheus Collector集成了Sensu的工作量自动化能力和Prometheus的数据抓取能力。用户可根据需求自行设计实现代码和预警接收时间。Sensu还可以将采集到的metrics数据存储到InfluxDB、Graphite和Prometheus等外部时序数据集中。

3.2 安装Sensu PrometheusCollector

用户可以通过Sensu的资产索引库Bonsai发现、下载、共享资产。点击Bonsai信息页面的下载按钮,下载Sensu后端平台和架构的资产定义。收到check、filter、mutator或handler请求时,Sensu会根据资产定义下载验证资产。

下载资产定义后,可以通过Sensu的资源管理命令行工具sensuctl进行资产注册,然后创建监控工作流。

下方是Prometheus collector的资产定义及相应的Linux sensuctl命令:

下方为Prometheus Collector的check实例:

3.3 优势

同时运行Sensu和Prometheus具有下列优势:

  • 既能监控K8s集群的健康状况又能动态监控周边基础设施的健康状况,并采集相关指标。
  • 既能实现问题自动发现,又能通过自动化工作流简化监控流程。
  • 同时运行Prometheus和Sensu能够获得更多上下文信息,实现更细粒度的数据抓取分析。
  • Sensu采用标准通信密码,可通过单个agent安全采集传输数据。
  • 便于管理配置监控设置。
  • 能够监控整个基础设施。

四、结论

Sensu能够监控整个基础设施,且定制化水平高,上下文更丰富。Prometheus模型稳健,能够实现深度数据钻取;Sensu则采用行业标准技术和格式(如Nagios和StatsD),监控整个基础设施。Sensu能够与Prometheus相互补充,提供更加丰富的上下文信息。

随着我们对软件依赖程度的加深,软件的可用性和故障修复时间对企业的存活非常重要。因此,只有充分了解系统才能克服这些挑战,基础设施和应用监控正是关键的一环。要想充分利用K8s的能力,必须实施统一的监控解决方案,实现新老技术的有效衔接。

本篇为译文,原文作者:STEFAN THORPE

原文链接:https://dzone.com/refcardz/monitoring-kubernetes

译文首发于UAVStack智能运维

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
3月前
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第26天】Prometheus与Grafana是智能运维中的强大组合,前者是开源的系统监控和警报工具,后者是数据可视化平台。Prometheus具备时间序列数据库、多维数据模型、PromQL查询语言等特性,而Grafana支持多数据源、丰富的可视化选项和告警功能。两者结合可实现实时监控、灵活告警和高度定制化的仪表板,广泛应用于服务器、应用和数据库的监控。
417 3
|
2月前
|
存储 数据采集 Prometheus
Grafana Prometheus Altermanager 监控系统
Grafana、Prometheus 和 Alertmanager 是一套强大的开源监控系统组合。Prometheus 负责数据采集与存储,Alertmanager 处理告警通知,Grafana 提供可视化界面。本文简要介绍了这套系统的安装配置流程,包括各组件的下载、安装、服务配置及开机自启设置,并提供了访问地址和重启命令。适用于希望快速搭建高效监控平台的用户。
146 20
|
2月前
|
Prometheus 监控 Cloud Native
Prometheus+Grafana监控Linux主机
通过本文的步骤,我们成功地在 Linux 主机上使用 Prometheus 和 Grafana 进行了监控配置。具体包括安装 Prometheus 和 Node Exporter,配置 Grafana 数据源,并导入预设的仪表盘来展示监控数据。通过这种方式,可以轻松实现对 Linux 主机的系统指标监控,帮助及时发现和处理潜在问题。
199 7
|
2月前
|
Prometheus 运维 监控
Prometheus+Grafana+NodeExporter:构建出色的Linux监控解决方案,让你的运维更轻松
本文介绍如何使用 Prometheus + Grafana + Node Exporter 搭建 Linux 主机监控系统。Prometheus 负责收集和存储指标数据,Grafana 用于可视化展示,Node Exporter 则采集主机的性能数据。通过 Docker 容器化部署,简化安装配置过程。完成安装后,配置 Prometheus 抓取节点数据,并在 Grafana 中添加数据源及导入仪表盘模板,实现对 Linux 主机的全面监控。整个过程简单易行,帮助运维人员轻松掌握系统状态。
285 3
|
2月前
|
Prometheus 监控 Cloud Native
无痛入门Prometheus:一个强大的开源监控和告警系统,如何快速安装和使用?
Prometheus 是一个完全开源的系统监控和告警工具包,受 Google 内部 BorgMon 系统启发,自2012年由前 Google 工程师在 SoundCloud 开发以来,已被众多公司采用。它拥有活跃的开发者和用户社区,现为独立开源项目,并于2016年加入云原生计算基金会(CNCF)。Prometheus 的主要特点包括多维数据模型、灵活的查询语言 PromQL、不依赖分布式存储、通过 HTTP 拉取时间序列数据等。其架构简单且功能强大,支持多种图形和仪表盘展示模式。安装和使用 Prometheus 非常简便,可以通过 Docker 快速部署,并与 Grafana 等可
417 2
|
4月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
303 62
|
4月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
178 60
|
3月前
|
存储 Prometheus 监控
监控堆外第三方监控工具Prometheus
监控堆外第三方监控工具Prometheus
78 3
|
3月前
|
存储 Prometheus 运维
在云原生环境中,阿里云ARMS与Prometheus的集成提供了强大的应用实时监控解决方案
在云原生环境中,阿里云ARMS与Prometheus的集成提供了强大的应用实时监控解决方案。该集成结合了ARMS的基础设施监控能力和Prometheus的灵活配置及社区支持,实现了全面、精准的系统状态、性能和错误监控,提升了应用的稳定性和管理效率。通过统一的数据视图和高级查询功能,帮助企业有效应对云原生挑战,促进业务的持续发展。
91 3
|
3月前
|
Prometheus 监控 Cloud Native
在 HBase 集群中,Prometheus 通常监控哪些类型的性能指标?
在 HBase 集群中,Prometheus 监控关注的核心指标包括 Master 和 RegionServer 的进程存在性、RPC 请求数、JVM 内存使用率、磁盘和网络错误、延迟和吞吐量、资源利用率及 JVM 使用信息。通过 Grafana 可视化和告警规则,帮助管理员实时监控集群性能和健康状况。

热门文章

最新文章