news 2026/4/14 16:36:14

一步到位!在 K8S 集群中搭建 Prometheus 监控(CentOS 环境)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一步到位!在 K8S 集群中搭建 Prometheus 监控(CentOS 环境)

前言:

Prometheus (普罗米修斯)是一款开源的系统监控与告警工具,最初由 SoundCloud 开发,后捐赠给 Cloud Native Computing Foundation(CNCF)并成为毕业项目,广泛用于云原生、容器化环境及传统基础设施的监控。它以时序数据存储灵活的查询语言主动式告警高扩展性为核心特点,是监控领域的主流解决方案之一。

一、核心特性

  1. 时序数据模型Prometheus 存储的是带标签(Label)的时序数据,每条数据由指标名称键值对标签数值组成,标签可灵活区分不同实例(如不同服务器的 CPU 使用率),支持多维数据查询。示例指标:cpu_usage{host="server01", core="0"} 25.5(server01 的 0 号核心 CPU 使用率为 25.5%)。

  2. PromQL 查询语言内置强大的 PromQL(Prometheus Query Language),支持对时序数据进行聚合、过滤、计算和预测,可实时查询监控指标,也能作为告警规则和可视化面板的数据源。示例查询:

    • 计算过去 5 分钟内 server01 的平均 CPU 使用率:avg(cpu_usage{host="server01"})[5m]
    • 筛选内存使用率超过 80% 的实例:memory_usage{job="app"} > 80
  3. 主动拉取(Pull)模式Prometheus 采用 “拉取” 方式采集数据:通过 HTTP 定期从被监控目标(Exporter 或应用程序暴露的 /metrics 端点)拉取指标,无需依赖外部消息队列,架构简单且易于故障排查;也支持 “推送” 模式(通过 PushGateway)适配短生命周期任务(如定时任务、容器 Job)。

  4. 内置告警管理结合 AlertManager 组件实现告警规则配置、分组、静默和路由:

    • 在 Prometheus 中定义告警规则(如 CPU 使用率持续 5 分钟超过 90%);
    • 触发后推送给 AlertManager,由其负责去重、分组,并发送至邮箱、Slack、PagerDuty 等渠道。
  5. 高可用与扩展性

    • 支持多实例部署(联邦集群 Federation),实现监控数据的分片与聚合;
    • 可通过远程存储集成(如 Thanos、VictoriaMetrics)解决本地存储的容量限制,实现长期数据留存。
  6. 丰富的 Exporter 生态Exporter 是采集第三方系统指标的组件,Prometheus 社区提供了大量官方 / 第三方 Exporter,覆盖常见场景:

    • 系统监控:node_exporter(服务器 CPU、内存、磁盘);
    • 容器监控:cadvisor(Docker 容器)、kube-state-metrics(Kubernetes 资源);
    • 应用监控:mysql_exporter(MySQL)、redis_exporter(Redis)、blackbox_exporter(HTTP/ICMP 探测)。

二、核心组件

  1. Prometheus Server核心组件,负责:

    • 从目标拉取指标数据并存储;
    • 处理 PromQL 查询;
    • 评估告警规则并触发告警。
  2. Exporters采集第三方系统指标并转换为 Prometheus 格式,暴露 /metrics 端点供 Server 拉取。

  3. PushGateway接收短生命周期任务的指标推送,暂存后供 Prometheus Server 拉取(适用于无法被主动拉取的场景)。

  4. AlertManager处理 Prometheus 发送的告警,负责告警的分组、静默、路由和通知。

  5. 可视化工具

    • Prometheus Web UI:内置简单的查询与可视化界面;
    • Grafana:主流的监控可视化工具,支持与 Prometheus 深度集成,可制作自定义仪表盘。

三、典型应用场景

  • 云原生监控:监控 Kubernetes 集群、容器、微服务(如通过 Spring Boot Actuator 暴露指标);
  • 基础设施监控:监控物理机、虚拟机的系统资源(CPU、内存、磁盘、网络);
  • 应用性能监控(APM):监控应用的接口响应时间、错误率、QPS;
  • 业务监控:自定义指标监控业务数据(如订单量、支付成功率)。

四、优势与局限性

优势:
  • 轻量级、易部署,无需依赖复杂的分布式存储;
  • PromQL 灵活强大,支持复杂的指标分析与计算;
  • 原生适配云原生环境,与 Kubernetes 深度集成;
  • 社区活跃,Exporter 生态丰富,文档完善。
局限性:
  • 本地存储基于时序数据库(TSDB),默认仅保留 15 天数据,长期存储需依赖第三方工具;
  • 拉取模式对网络可达性要求高,跨网络监控需额外配置(如反向代理);
  • 不适合存储高频、高基数的指标(如单指标标签维度过多),可能导致性能下降。

操作实例

前提准备:

  1. 三台centos系统
  2. 全部安装K8S,安装环境可以基于本作者以往所写的k8s安装博客

三台主机名称分为:

k8s-master:192.168.180.110

k8s-node1:192.168.180.120

k8s-node2:192.168.180.130https://blog.csdn.net/m0_68472908/article/details/146534195?spm=1001.2014.3001.5501https://blog.csdn.net/m0_68472908/article/details/146534195?spm=1001.2014.3001.5501

部署开始:(下述所说的所有节点包含master)

k8s-master下执行(所有操作以master下为先,若有需要别在其他节点上操作,会提示)

1. 在master上导入yaml文件,并修改IP(文件放在资源绑定,可自行获取)

因为源文件内的IP不对,要修改为实际IP

sed -i s/192.168.9.208/192.168.180.130/g alertmanager-pvc.yaml sed -i s/192.168.9.208/192.168.180.130/g grafana.yaml sed -i s/192.168.9.208/192.168.180.130/g prometheus-*.yaml sed -i s/192.168.9.207/192.168.180.120/g prometheus-*.yaml #可查看一番是否修改完成 grep 192.168. *.yaml

2. 应用prometheus RBAC授权

vim prometheus-rbac.yaml #将rbac.authorization.k8s.io/v1beta1 替换成rbac.authorization.k8s.io/v1,有两处 #修改完成后退出,更新资源 kubectl apply -f prometheus-rbac.yaml

3. 通过configmap创建prometheus主配置文件

kubectl apply -f prometheus-configmap.yaml

4. 部署NFS(仅k8s-node02执行)

yum install -y epel-release yum install -y nfs-utils rpcbind mkdir -p /data/file/prometheus-data vim /etc/exports /data/file 192.168.180.0/24(rw,sync,insecure,no_subtree_check,no_root_squash) #编写完成后,启用NFS systemctl enable rpcbind && systemctl restart rpcbind systemctl enable nfs && systemctl restart nfs

5. 所有节点安装NFS

yum install -y nfs-utils systemctl enable nfs && systemctl restart nfs mkdir -p /data/file mount 192.168.180.130:/data/file /data/file

6. 部署prometheus以及services

#所有节点执行 docker pull prom/prometheus:latest docker pull jimmidyson/configmap-reload:latest docker pull prom/alertmanager:latest docker tag prom/alertmanager:latest prom/alertmanager:v0.14.0 docker tag prom/prometheus:latest prom/prometheus:v2.2.1 docker tag jimmidyson/configmap-reload:latest jimmidyson/configmap-reload:v0.1 #仅master执行: kubectl apply -f prometheus-statefulset.yaml kubectl get statefulset.apps -n kube-system kubectl describe pod prometheus-0 -n kube-system kubectl apply -f prometheus-service.yaml kubectl get pod,svc -n kube-system #验证是否部署成功 iptables -P FORWARD ACCEPT echo 1 > /proc/sys/net/ipv4/ip_forward

7. 部署grafana

#三个节点均需创建 mkdir -p /data/file/grafana-data #三个节点均需创建 chmod -R 777 /data/file/grafana-data/ --- kubectl apply -f grafana.yaml kubectl get pod,svc -n kube-system

8. 监控k8s node节点

部署Prometheus Agent代理

cd /root/prometheus #两台node节点地址 scp -r node 192.168.180.120:/root/ scp -r node 192.168.180.130s:/root/

9. 执行安装(两台node执行)

cd /root/node sh node_exporter.sh sh node_exporter.sh netstat -anplt | grep node_export

10. web界面操作

登录:192.168.180.110:3000

需要输入的照着以下图片进行

11. 部署Alertmanager报警

kubectl apply -f prometheus-configmap.yaml

12. 部署Alertmanager

vim alertmanager-configmap.yaml data: alertmanager.yml: | global: resolve_timeout: 5m smtp_smarthost: 'smtp.126.com:25' smtp_from: 'xxxxx@126.com' //修改为实际发送邮箱 smtp_auth_username: 'xxxxx@126.com' //发送用户 smtp_auth_password: 'MRGECFAAIPYEQRSS' //修改为实际密码 receivers: - name: default-receiver email_configs: - to: "xxxxx@qq.com" //修改为实际接收者邮箱 #node1上执行 mkdir /data/file/alertmanager-data/ chmod -R 777 /data/file/alertmanager-data/ #切换master上执行 kubectl apply -f alertmanager-configmap.yaml kubectl apply -f alertmanager-pvc.yaml kubectl apply -f alertmanager-deployment.yaml kubectl apply -f alertmanager-service.yaml vim prometheus-statefulset.yaml volumeMounts - name: prometheus-rules mountPath: /etc/config/rules volumes: - name: prometheus-rules configMap: name: prometheus-rules #保存退出执行 kubectl apply -f prometheus-rules.yaml kubectl apply -f prometheus-statefulset.yaml sudo journalctl -xe | grep cni

13. 关闭节点测试邮件发送,测试成功

systemctl stop node_exporter

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/10 4:11:57

Wan2.2-T2V-A14B实现高保真720P视频生成

Wan2.2-T2V-A14B实现高保真720P视频生成 你有没有试过,把一句“穿汉服的少女站在烟雨中的石桥上”输入某个工具,结果出来的画面要么人物脸不对称,要么背景闪烁、布料飘动像纸片?这种体验让人既兴奋又失望——AI能“看懂”文字&…

作者头像 李华
网站建设 2026/4/13 12:00:19

PaddleOCR文字识别部署优化:使用conda环境与本地镜像源

PaddleOCR文字识别部署优化:使用conda环境与本地镜像源 在企业级AI项目落地过程中,一个看似简单却频繁卡住开发进度的环节——环境搭建。尤其是面对PaddleOCR这类依赖庞杂、对中文支持要求高的工具时,开发者常常遭遇“下载慢、安装失败、版本…

作者头像 李华
网站建设 2026/4/13 15:08:13

帮写标书多少钱,标书代写公司,代写工程采购服务等标书公司推荐

在那竞‮达已争‬白热‮度程化‬的招投‮个这标‬战场上,一份‮常书标‬常会直‮去接‬决定‮数及涉‬百万并‮甚且‬至是‮亿上‬金额项‮的目‬归属了。你可‮过有曾‬因为‮书标‬当中‮细的‬节而导‮被致‬废标‮况情的‬呢,又或‮是者‬面对那‮杂…

作者头像 李华
网站建设 2026/4/13 7:40:53

使用PyTorch安装后接TensorRT进行模型转换的技巧

使用PyTorch安装后接TensorRT进行模型转换的技巧 在AI系统从实验室走向真实世界的路上,一个常被忽视却至关重要的问题浮出水面:为什么训练时表现优异的模型,部署之后却“跑不动”?延迟高、吞吐低、资源吃紧——这些问题往往不是硬…

作者头像 李华
网站建设 2026/4/11 22:04:31

安卓系统层开发之C++与JNI核心技术

轻量化视频生成与Android原生集成:从模型到应用的完整实践 在移动设备上实时生成高质量视频,曾是仅限高端服务器和专业工作站的任务。然而,随着轻量化AI模型的崛起,这一能力正迅速向消费级硬件下沉。Wan2.2-T2V-5B 就是一个典型代…

作者头像 李华
网站建设 2026/4/14 21:37:59

CVE-2025-14702:Smartbit CommV Smartschool App 路径遍历漏洞深度解析

CVE-2025-14702:Smartbit CommV Smartschool App 路径遍历漏洞 严重性: 中等 类型: 漏洞 CVE编号: CVE-2025-14702 漏洞概述 在 Smartbit CommV Smartschool App 10.4.4 及更早版本中发现一个缺陷。受影响的组件是 be.smartschool…

作者头像 李华