写点什么

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

  • 2020-02-07
  • 本文字数:2897 字

    阅读完需:约 10 分钟

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

本文介绍两个可行的 K8s 监控方案:Prometheus 和 Sensu。两个方案都能全面提供系统级的监控数据,帮助开发人员跟踪 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 的监控数据整合,形成基于事件的监控路径。


1569550660034042757.jpeg

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 命令:


1569550673314067543.jpeg


1569550678724013411.jpeg


1569550684204096375.jpeg


下方为 Prometheus Collector 的 check 实例:


1569550691364033465.jpeg


1569550697234023995.jpeg

3.3 优势

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


  • 既能监控 K8s 集群的健康状况又能动态监控周边基础设施的健康状况,并采集相关指标。

  • 既能实现问题自动发现,又能通过自动化工作流简化监控流程。

  • 同时运行 Prometheus 和 Sensu 能够获得更多上下文信息,实现更细粒度的数据抓取分析。

  • Sensu 采用标准通信密码,可通过单个 agent 安全采集传输数据。

  • 便于管理配置监控设置。

  • 能够监控整个基础设施。

四、结论

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


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


2020-02-07 20:431773

评论

发布
暂无评论
发现更多内容

一站式云安全保障,就用行云管家!完美保障!

行云管家

云计算 云安全 企业上云 云资源 云管理

恒源云(GPUSHARE)_[文本分类] 文本数据增强1(论文笔记)

恒源云

深度学习 语音识别

安全漏洞之任意文件上传漏洞分析

网络安全学海

黑客 网络安全 信息安全 渗透测试 安全漏洞

2021低代码平台推荐,每一个都具有10年行业开发经验!

J2PaaS低代码平台

低代码 低代码开发 低代码开发平台 地代码平台

飞桨EasyDL桌面版正式发布 本地数据、本地网络、本地算力也能高效建模

科技热闻

CameraX ImageAnalysis

Changing Lin

12月日更

重点人员管控系统开发搭建,指挥调度平台建设方案

电微13828808271

“有创业者的地方,创业邦一直都在” 创业邦100未来独角兽峰会暨2021创业邦年会圆满落幕

创业邦

🏆【Alibaba中间件技术系列】「RocketMQ技术专题」RocketMQ消息发送的全部流程和落盘原理分析

洛神灬殇

RocketMQ 消息队列 Apache RocketMQ 12月日更

从Hadoop框架讨论大数据生态

编程江湖

大数据 hadoop

视频通信中的码率控制算法

拍乐云Pano

音视频 RTC 视频编码 码率控制

「Oracle」数据库字符集编码修改

恒生LIGHT云社区

数据库 oracle

如何跟踪log4j漏洞原理及发现绕WAF的tips

H

网络安全 漏洞

语音信号处理 4:汉语中语音的分类及韵律特性

轻口味

28天写作 12月日更

[架构实战营] 模块七作业

张祥

架构实战营

如何在 GitHub 上高效阅读源码?

AlwaysBeta

GitHub 源码 源码分析 源码阅读 源码解析

情报信息分析研判系统搭建,情指勤一体化平台建设开发

电微13828808271

30个类手写Spring核心原理之自定义ORM(下)(7)

Tom弹架构

Java spring 源码

波卡生态的去中心化存储Crust Network | Hoo虎符研究院

区块链前沿News

波卡生态挖矿 Hoo虎符 虎符交易所 虎符研究院 去中心化存储

CRM系统如何帮助企业改变销售周期

低代码小观

程序员 销售管理 销售 CRM CRM系统

智慧社区小程序搭建,智慧平安社区解决方案

电微13828808271

30个类手写Spring核心原理之动态数据源切换(8)

Tom弹架构

Java spring 源码

超市发:多措并举 提振销售 服务顾客

科技热闻

【等保小知识】等保一级需要测评吗?

行云管家

网络安全 等保 等级保护 等保一级

微服务架构 | 如何利用日志链路追踪程序执行的慢SQL?

码农架构

性能分析 微服务治理 慢SQL 链路分析

区块链数字收藏品平台开发,数字藏品交易平台搭建

电微13828808271

由IDC余热回收创新技术实践引出的跨界合作探讨

安第斯智能云

算力 碳中和 节能 跨界合作

如何开始移动网站测试

FunTester

测试 web测试 FunTester 移动端测试 响应式网页

致敬全新的未来!创业邦100未来独角兽峰会暨2021创业邦年会成功举办

创业邦

熟悉又陌生的白帽黑客组织OWASP

喀拉峻

黑客 网络安全 安全 OWASP

干货分享!边云融合的时序时空数据库实践详解

百度开发者中心

物联网 时序数据库

Kubernetes监控实践(2):可行监控方案之Prometheus和Sensu_文化 & 方法_PingCAP技术团队_InfoQ精选文章