Kubernetes(k8s)-集群监控(Prometheus)

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。

我们在讲解kubectl的命令的时候讲过一个参数top,可以查看我们集群的监控信息,但是这个命令默认无法使用,因为还没有安装监控组件。虽然这个Prometheus组件部署以后这个指令还是不可用。但是我们可以通过这个Prometheus监控来看到这些资源使用情况。

csharp 复制代码
[root@master01 ]# kubectl top node
error: Metrics API not available
[root@master01 ]# 

我们部署任何一个服务,他都有可能出现问题,所以我们不仅需要在架构上保证他的高可用,同时也需要及时监控他的异常,避免出现问题而未及时发现,造成更大的异常从而触发业务故障。

在互联网早期的监控三件套:Nagios、Zabbix和Cacti ,到目前为止还有用的估计也就Zabbix。但是这个监控三件套都是传统监控项目,对目前的容器监控几乎没有对应的规则来适应。所以我们这里监控都不是以上几种。

目前在Kubernetes集群的监控里面Prometheus已经是事实上的标准,所以我们的的监控也是基于他来讲解的。****

Prometheus 是一款开源的云原生监控与警报工具 ,由 SoundCloud 团队开发并于 2016 年加入 CNCF(云原生计算基金会),现已成为 Kubernetes 生态中监控领域的 事实标准。其设计专为动态、分布式环境(如容器化、微服务架构)优化,具备高效的数据采集、存储、查询及告警能力。

一、核心特性

  1. 多维数据模型
  • 基于 指标名称(Metric Name)键值对标签(Labels) 标识时间序列数据,支持灵活的查询和聚合。

  • 示例:http_requests_total{method="POST", status="200"} 表示 HTTP POST 请求且状态码为 200 的计数器。

  1. 高效的查询语言(PromQL)
  • 提供强大的实时查询功能,支持聚合、切片、预测等操作。

  • 示例:统计每秒请求量:rate(http_requests_total[5m])

  1. 拉取(Pull)模型
  • Prometheus 主动从目标服务 拉取指标数据(通过 HTTP 协议),适合动态环境(如 Kubernetes)。

  • 支持通过 Pushgateway 接收短生命周期任务的推送(Push)数据。

  1. 服务发现
  • 自动发现监控目标,支持 Kubernetes、Consul、AWS 等平台,减少手动配置。
  1. 可视化与告警
  • 内置 Web UI 和 Grafana 集成,提供仪表盘。

  • 通过 Alertmanager 实现告警的分组、去重、静默和通知(邮件、Slack 等)。

  1. 存储与扩展性
  • 本地存储采用时间序列数据库(TSDB),支持高效压缩。

  • 可通过远程存储(如 Thanos、Cortex)扩展长期存储和高可用性。

二、架构组件

  1. Prometheus Server
  • 核心服务,负责数据采集、存储、查询和告警规则评估。

  • 从 Exporters 或应用程序暴露的 /metrics 端点拉取数据。

  1. Exporters
  • 将第三方系统(如 MySQL、Node.js、硬件)的指标转换为 Prometheus 格式。

  • 常用 Exporters:Node Exporter(主机监控)、Blackbox Exporter(网络探测)、JMX Exporter(Java 应用)。

  1. Pushgateway
  • 临时存储短暂任务(如批处理作业)推送的指标数据,供 Prometheus 拉取。
  1. Alertmanager
  • 处理 Prometheus 触发的告警,进行分组、抑制、静默,并发送通知。
  1. Client Libraries
  • 提供多种语言(Go、Java、Python 等)的 SDK,用于在应用中直接暴露指标。

三、数据模型

  • 指标(Metric) :由名称和标签唯一标识的时间序列,例如 cpu_usage{instance="server1", job="web"}

  • 样本(Sample) :时间戳 + 指标值,如 (1625097600, 75.3)

  • 类型

  • Counter:单调递增的计数器(如请求总数)。

  • Gauge:瞬时值(如内存使用量)。

  • HistogramSummary:统计样本分布(如响应时间分位数)。

简单理解Prometheus通过记录各种监控数据在不同时间段的值,然后通过这些值,我们可以获得集群的运行状态,然后设置对应的阈值进行报警。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

相关推荐
AlfredZhao1 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334661 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质2 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5202 天前
Linux 11 动态监控指令top
linux
Inhand陈工2 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智2 天前
ARP代理--工作原理
运维·网络·arp·arp代理