当前位置: 首页 > news >正文

云原生技术k8s部署prometheus

目录

  • 一.基于kubernetes的prometheus介绍
    • 1.环境简介
    • 2.监控流程
    • 3.kubernetes监控指标
  • 二.prometheus安装
    • 1.安装prometheus operator
    • 3.Operator容器启动起来后安装prometheus stack
    • 4.查看prometheus容器状态
      • 5.查看servicemonitors
    • 6.修改grafana的service类型NodePort
    • 6.访问grafana
    • 7.修改prometheus的service类型
    • 8.查看监控目标
  • 三.配置 grafana dashboard
  • 四.监控Mysql数据库
    • 1.在kubernetes中安装mysql
    • 2.设置mysql密码
    • 4.创建service,暴露mysql端口
    • 5.访问测试
    • 6.设置权限
    • 7.配置mysql exporter采集mysql监控文件![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/ac13763c51c64517babf3ad86feea83b.png)
    • 8.测试是否获取metrics数据
    • 9.配置servicemonitor
    • 10.在prometheus查看监控目标是否出现
  • 五.对接钉钉报警
    • 1.部署Dingtalk
    • 2.修改配置文件
    • 3.启动服务
    • 4.配置Alertmanager

一.基于kubernetes的prometheus介绍

1.环境简介

node-exporter + prometheus + grafana 是一套非常流行的 Kubernetes 监控方案。它们的功能
如下:
node-exporter:节点级指标导出工具,可以监控节点的 CPU、内存、磁盘、网络等指标,并暴露Metrics 接ㄩ。
Prometheus:时间序列数据库和监控报警工具,可以抓取 Cadvisor 和 node-exporter 暴露的Metrics 接口,存储时序数据,并提供 PromQL 查询语言进行监控分析和报警。
Grafana:图表和 Dashboard 工具,可以査询 Prometheus 中的数据,并通过图表的方式直观展示Kubernetes 集群的运行指标和状态。

2.监控流程

(1)在Kubernetes集群的每个节点安装Cadvisor 和node-exporter,用于采集容器和节点级指标数据。(2)部署 Prometheus,配置抓取 cadvisor 和 node-exporter 的Metrics 接口,存储 containers 和
nodes 的时序数据。
(3)使用 Grafana 构建监控仪表盘,选择 Prometheus 作为数据源,编写 PromQL 查询语句,展示 K8S 集群的 CPU 使用率、内存使用率、网络流量等监控指标。
(4)根据监控结果,可以设置 Prometheus 的报警规则,当监控指标超过阈值时发送报警信息。这套方案能够全面监控 Kubernetes 集群的容器和节点,通过 Metrics 指标和仪表盘直观反映集群状态,并实现自动报警,非常适合 K8S 环境下微服务应用的稳定运行。
具体实现方案如下:
node-exporter:在每个节点也作为Daemonset 运行,采集节点 Metrics.
Prometheus:部署 Prometheus Operator 实现,作为 Deployment 运行,用于抓取 Metrics 和报警。
Grafana:部署 Grafana operator 实现,用于仪表盘展示。

3.kubernetes监控指标

K8S 本身的监控指标:
CPU 利用率:包括节点 CPU 利用率、Pod CPU 利用率、容器 CPU 利用率等,用于监控 CPU 资源使用情况。
内存利用率:包括节点内存利用率、Pod 内存利用率、容器内存利用率等,用于监控内存资源使用情况。
网络流量:节点网络流量、Pod 网络流量、容器网络流量,用于监控网络收发包大小和带宽利用率。
磁盘使用率:节点磁盘使用率,用于监控节点磁盘空间使用情况。
Pod 状态:Pod 的 Running、waiting、succeeded、Failed 等状态数量,用于监控 Pod 运行状态。
节点状态:节点的 Ready、NotReady 和 Unreachable 状态数量,用于监控节点运行状态容器重启次数:单个容器或 Pod 内所有容器的重启次数,用于监控容器稳定性。
API 服务指标:Kubernetes API Server 的请求 LATENCY、请求 OPS、错误码数量等,用于监控API Server 性能。
集群组件指标:etcd、kubelet、kube-proxy 等组件的运行指标,用于监控组件运行状态

这些都是 Kubernetes集群运行状态的关键指标,通过Prometheus 等工具可以进行收集和存储,然后在 Grafana 中设计相应的 Dashboard进行可视化展示。当这些指标超出正常范围时,也可以根据阈值设置报警,保证 Kubernetes 集群和服务的稳定运行。

例如:
CPU 利用率超过 88%报警
内存利用率超过 90%报警网络流量/磁盘空间突增报警
Pod/节点 NotReady 状态超过 10%报警
API Server 请求 LATENCY 超过 200ms 报警
etcd 节点 Down 报警等等

二.prometheus安装

1.安装prometheus operator

Prometheus Operator 是 Core0s 开源的项目,它提供了一种 Kubernetes-native 的方式来运行和管理 Prometheus。Prometheus operator 可以自动创建、配置和管理 Prometheus 实例,并将其与Kubernetes 中的服务发现机制集成在一起,从而实现对 Kubernetes 集群的自动监控。
Prometheus 和Prometheus Operator 的区别如下:Prometheus是一种开源的监控系统,用于记录各种指标,并提供査询接口和告警机制。而Prometheus0perator,则是一种用于在 Kubernetes 上运行和管理 Prometheus 的解决方案。相比于传统方式手动部署 Prometheus,Prometheus 0perator 可以自动创建、配置和管理 Prometheus 实例,并将其与Kubernetes 中的服务发现机制集成在一起,大幅简化了我们的工作量。
安装方法如下:

在这里插入图片描述
–server-side
这个特性主要目标是把逻辑从 kubectl apply 移动到| kube-apiserver 中,这可以修复当前遇到的很多有关所有权冲突的问题。
可以直接通过 API 完成声明式配置的操作,而无需依赖于特定的 kubectl apply 命令
如果要删除Prometheus Operator,可以使用下面的命令
kubectl delete --ignore-not-found=true -f manifests/setup
备注:
prometheus-operator 的作用主要是用来创建prometheus 的相关资源以及监视与管理它创建出来的资
源对象。

3.Operator容器启动起来后安装prometheus stack

在这里插入图片描述

4.查看prometheus容器状态

在这里插入图片描述

5.查看servicemonitors

servicemonitors 定义了如何监控一组动态的服务,使用标签选择来定义哪些 Service 被选择进行监控。这可以让团队制定一个如何暴露监控指标的规范,然后按照这些规范自动发现新的服务,而无需重新配置。
为了让 Prometheus 监控 Kubernetes 内的任何应用,需要存在一个 Endpoints 对象,Endpoints对象本质上是 IP 地址的列表,通常 Endpoints 对象是由 Service 对象来自动填充的,Service 对象通过标签选择器匹配 Pod,并将其添加到 Endpoints 对象中。一个 Service 可以暴露一个或多个端口,这些端口由多个 Endpoints 列表支持,这些端点一般情况下都是指向一个 Pod。Prometheus operator 引入的这个 ServiceMonitor 对象就会发现这些 Endpoints 对象,并配置 Prometheus 监控这些 Pod.ServiceMonitorspec的endpoints部分就是用于配置这些 Endpoints的哪些端口将被 scrape 指标的。
Prometheus operator 使用ServiceMonitor 管理监控配置

在这里插入图片描述

6.修改grafana的service类型NodePort

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.访问grafana

节点:端口在这里插入图片描述

7.修改prometheus的service类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.查看监控目标

在这里插入图片描述
在 Prometheus 中一条告警规则有三个状态
inactive:还未被触发;
pending:已经触发,但是还未达到for 设定的时间;firing:触发且达到设定时间

三.配置 grafana dashboard

prometheus提供的已经自动加入资源了只需要提供panel面板就可以查看资源利用情况
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四.监控Mysql数据库

在 Prometheus 的监控体系中,符合云原生设计理念的应用通常自带一个Metrics 接口,这使得Prometheus 能够直接抓取到应用的监控数据。然而,对于非云原生应用(如 MySOL、Redis、Kafka 等),由于它们并未原生暴露 Prometheus 所需的 Metrics 接口,因此我们需要借助 Exporter 来实现数据的采集和暴露。本案例将以 MySQL 为例,详细介绍如何通过 Exporter 实现对非云原生应用的监控,并将其集成到 Prometheus 监控体系中。

1.在kubernetes中安装mysql

在这里插入图片描述

2.设置mysql密码

在这里插入图片描述
在这里插入图片描述

4.创建service,暴露mysql端口

在这里插入图片描述

5.访问测试

在这里插入图片描述
在这里插入图片描述

6.设置权限

在这里插入图片描述

7.配置mysql exporter采集mysql监控文件在这里插入图片描述

在这里插入图片描述

8.测试是否获取metrics数据

在这里插入图片描述

9.配置servicemonitor

在这里插入图片描述

10.在prometheus查看监控目标是否出现

在这里插入图片描述

五.对接钉钉报警

首先在钉钉群里面添加一个自定义机器人为钉钉机器人添加关键字:FIRING

1.部署Dingtalk

DingTalk(钉钉)是阿里巴巴集团开发的一款企业级通讯和协作平台,旨在提升工作效率和团队协作能力。它集成了即时通讯、视频会议、任务管理、日程安排、文件共享等多种功能,适用于企业内部的沟通与协作。DingTalk 支持多平台使用,包括移动设备(i0s、Android)和桌面端(windows、macos),并且提供了丰富的 API接口,方便与企业现有的系统进行集成。
下载地址:
在这里插入图片描述

2.修改配置文件

在这里插入图片描述

在这里插入图片描述

3.启动服务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.配置Alertmanager

在这里插入图片描述
在这里插入图片描述
将服务发布改成NodePort在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/620105.html

相关文章:

  • 面向Python/C#开发者入门Java与Bukkit API
  • C# 反射和特性(元数据和反射)
  • Mysql——如何做到Redolog崩溃后恢复的
  • NLP学习之Transformer(1)
  • 算法题——哈希表
  • 洛谷 P2607 [ZJOI2008] 骑士-提高+/省选-
  • 从 Web 开发到数据科学:全栈基础技术总结
  • nm命令和nm -D命令参数
  • 互联网大厂Java求职面试实录:Spring Boot到微服务与AI的技术问答
  • 《量子雷达》第2章 从量子信息到量子雷达 预习2025.8.13
  • Canal解析MySQL Binlog原理与应用
  • RC4算法实现
  • 一键自动化:Kickstart无人值守安装指南
  • 如何优雅地实现API接口每 10秒轮询请求?
  • 力扣面试150题--三角形最小路径和 最小路径和 不同路径 最长回文子串
  • RagFlow启动源码说明
  • 前后端分离项目在云服务器的部署
  • 【系统安装】虚拟机中安装win10企业版系统记录
  • CSS保持元素宽高比,固定元素宽高比
  • 用 mock 把 ES 单元测试@elastic/elasticsearch-mock 上手
  • Python 环境隔离实战:venv、virtualenv 与 conda 的差异与最佳实践
  • 变分自编码器VAE的Pytorch实现
  • day39_2025-08-13
  • Go 微服务限流与熔断最佳实践:滑动窗口、令牌桶与自适应阈值
  • Day19 C 语言标准 IO 机制
  • React useMemo 深度指南:原理、误区、实战与 2025 最佳实践
  • React常见的Hooks
  • 万字详解C++11列表初始化与移动语义
  • OpenCV的实际应用
  • 类和对象----中