Kubernetes 使用 Kube-Prometheus 构建指标监控 +飞书告警

1 介绍

Prometheus Operator 为 Kubernetes 提供了对 Prometheus 机器相关监控组件的本地部署和管理方案,该项目的目的是为了简化和自动化基于 Prometheus 的监控栈配置,主要包括以下几个功能:

  • Kubernetes 自定义资源:使用 Kubernetes CRD 来部署和管理 Prometheus、Alertmanager 和相关组件。
  • 简化的部署配置:直接通过 Kubernetes 资源清单配置 Prometheus,比如版本、持久化、副本、保留策略等等配置。
  • Prometheus 监控目标配置:基于熟知的 Kubernetes 标签查询自动生成监控目标配置,无需学习 Prometheus 特地的配置。
    在这里插入图片描述

2 安装配置

2.1 兼容性

通过 Prometheus Operator 可以利用 Operator 编写一整套的监控资源清单。以下是各个版本 Kubernetes 和 kube-prometheus 的兼容:

kube-prometheus stackKubernetes 1.22Kubernetes 1.23Kubernetes 1.24Kubernetes 1.25Kubernetes 1.26Kubernetes 1.27Kubernetes 1.28
release-0.10xxx
release-0.11xxx
release-0.12xxx
release-0.13x
mainxx

最新兼容性可参考: https://github.com/prometheus-operator/kube-prometheus/tree/main?tab=readme-ov-file#compatibility

2.2 Kube-Prometheus 的下载

git clone https://github.com/prometheus-operator/kube-prometheus.git
cd kube-prometheus

2.3 初始化 Kube-Prometheus ( CRDs 资源对象)

manifests/setup 中包含内容为 operator 所需的 命名空间 和 CRDs 初始化组件

kubectl apply -f manifests/setup
customresourcedefinition.apiextensions.k8s.io/alertmanagerconfigs.monitoring.coreos.com created
customresourcedefinition.apiextensions.k8s.io/alertmanagers.monitoring.coreos.com created
customresourcedefinition.apiextensions.k8s.io/podmonitors.monitoring.coreos.com created
customresourcedefinition.apiextensions.k8s.io/probes.monitoring.coreos.com created
customresourcedefinition.apiextensions.k8s.io/prometheusrules.monitoring.coreos.com created
customresourcedefinition.apiextensions.k8s.io/servicemonitors.monitoring.coreos.com created
customresourcedefinition.apiextensions.k8s.io/thanosrulers.monitoring.coreos.com created
namespace/monitoring created
The CustomResourceDefinition "prometheuses.monitoring.coreos.com" is invalid: metadata.annotations: Too long: must have at most 262144 bytes

安装过程中可能看到提示 Too long: must have at most 262144 bytes,变更为 kubectl create 即可:

kubectl create -f manifests/setup

创建成功后资源会存放在名为 monitoring 的命名空间。
在这里插入图片描述

2.4 通过 Kube-Prometheus 创建资源

manifests 目录下存放着一套 Prometheus的部署规则、模板与配置,包括:Prometheus-operator、Node-exporter、Kube-state-metrics、Grafana、Prometheus-adapter 以及 Prometheus 和 Alertmanager 等大量组件.

kubectl apply -f manifests/

*注意:默认manifests的svc不提供外部访问,如果希望暴露服务,需要调整 -service.yaml 配置 或 通过 Ingress 完成控制.

# 示例为 manifests/grafana-service.yaml
apiVersion: v1
kind: Service
metadata:labels:app.kubernetes.io/component: grafanaapp.kubernetes.io/name: grafanaapp.kubernetes.io/part-of: kube-prometheusapp.kubernetes.io/version: 10.2.2name: grafananamespace: monitoring
spec:ports:- name: httpport: 3000targetPort: http type: LoadBalancer   **# SVC -> LoadBalancer 类型**selector:app.kubernetes.io/component: grafanaapp.kubernetes.io/name: grafanaapp.kubernetes.io/part-of: kube-prometheus

*注意:默认manifests的Prometheus和其他组件默认为临时存储, 可以调整 -deployment.yaml 或 prometheus-prometheus.yaml 修改挂载模式.

# manifests/prometheus-prometheus.yaml 挂载 OCI BlockVolume 示例
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:labels:app.kubernetes.io/component: prometheusapp.kubernetes.io/instance: k8sapp.kubernetes.io/name: prometheusapp.kubernetes.io/part-of: kube-prometheusapp.kubernetes.io/version: 2.48.1name: k8snamespace: monitoring
spec:alerting:alertmanagers:- apiVersion: v2name: alertmanager-mainnamespace: monitoringport: webenableFeatures: []externalLabels: {}image: quay.io/prometheus/prometheus:v2.48.1nodeSelector:kubernetes.io/os: linux# ... 其他配置storage:    **# Storage -> OCI StorageClass 类型, oci-bv**volumeClaimTemplate:spec:storageClassName: oci-bvresources:requests:storage: 50Gi# ... 其他配置

部署成功后可在 monitoring 命名空间下查看对应的资源
Pods 资源在这里插入图片描述

Services 资源
在这里插入图片描述

3 请求飞书告警

3.1 初始化飞书机器人

3.1.1 创建飞书聊天群组

点击左上 “+” 按钮, 创建新的组, 此处可以添加相关的业务同事

在这里插入图片描述

在这里插入图片描述

3.1.2 添加机器人

进入聊天群组, 右上部分,点击 “…” —> “Settings”, 添加机器人;

在这里插入图片描述
在 Settings 中点击 Bots 选项卡, “Add Bot”
在这里插入图片描述
添加自定义机器人
在这里插入图片描述
设置机器人基础信息, 设置完成后点击 “Add”
在这里插入图片描述
设置安全机器人相关信息,确认后机器人配置完成

在这里插入图片描述

3.2 prometheusalert 部署

PrometheusAlert是开源的运维告警中心消息转发系统,支持主流的监控系统Prometheus、Zabbix,日志系统Graylog2,Graylog3、数据可视化系统Grafana、SonarQube。阿里云-云监控,以及所有支持WebHook接口的系统发出的预警消息,支持将收到的这些消息发送到钉钉,微信,email,飞书,腾讯短信,腾讯电话,阿里云短信,阿里云电话,华为短信,百度云短信,容联云电话,七陌短信,七陌语音,TeleGram,百度Hi(如流)等。

3.2.1 下载 prometheusalert yaml

wget https://raw.githubusercontent.com/feiyu563/PrometheusAlert/master/example/kubernetes/PrometheusAlert-Deployment.yaml

3.2.2 开启飞书告警通道

修改YAML文件中的 configmap app.conf 部分配置

# vim PrometheusAlert-Deployment.yaml
# 83行, 打开 feishu 配置#是否开启飞书告警通道,可同时开始多个通道0为关闭,1为开启
open-feishu=1
#默认飞书机器人地址, 可以不修改,通过 alertmanager 进行配置
fsurl=https://open.feishu.cn/open-apis/bot/hook/xxxxxxxxx

3.2.3 部署

kubectl apply -n monitoring -f https://raw.githubusercontent.com/feiyu563/PrometheusAlert/master/example/kubernetes/PrometheusAlert-Deployment.yaml

3.3 prometheusalert 配置模板与告警

使用自定义模板中的默认模板或创建新的模板,配置飞书告警模板
在这里插入图片描述
自定义模板信息
在这里插入图片描述

3.4 配置 Alertmanager 对接 PrometheusAlert

注意:默认manifests的alertManager不会加载客户自定义 AlertmanagerConfig,需要配置加载项

3.4.1 加载自定义告警规则

# manifests/alertmanager-alertmanager.yaml
apiVersion: monitoring.coreos.com/v1
kind: Alertmanager
metadata:labels:app.kubernetes.io/component: alert-routerapp.kubernetes.io/instance: mainapp.kubernetes.io/name: alertmanagerapp.kubernetes.io/part-of: kube-prometheusapp.kubernetes.io/version: 0.26.0name: mainnamespace: monitoring
spec:image: quay.io/prometheus/alertmanager:v0.26.0# 其他配置 .....alertmanagerConfigSelector:  # 通过Label匹配告警规则matchLabels:alertmanagerConfig: feishuhook   # 其他配置 .....

3.4.2 创建自定义告警规则

# vim manifests/alertmanager-config.yaml
# alertmanager-config.yaml
# 'http://prometheus-alert-center:8080/prometheusalert?type=fs&tpl=prometheus-fs&fsurl=<飞书机器人地址>'  
# prometheus-alert-center:8080 -> PrometheusAlert 请求地址
# type=fs -> 飞书告警
# tpl=prometheus-fs -> 您在PrometheusAlert中配置的飞书告警模板,我的示例为 prometheus-fs ,您可以自行修改
# fsurl=<飞书机器人地址>apiVersion: monitoring.coreos.com/v1alpha1
kind: AlertmanagerConfig
metadata:name: feishuhooknamespace: monitoringlabels:alertmanagerConfig: feishuhook
spec:receivers:- name: CriticalwebhookConfigs:- url: 'http://prometheus-alert-center:8080/prometheusalert?type=fs&tpl=prometheus-fs&fsurl=<飞书机器人地址>'  sendResolved: trueroute:groupBy: ['namespace']groupWait: 30sgroupInterval: 6mrepeatInterval: 12hreceiver: Criticalroutes:- receiver: Criticalmatch:severity: critical

3.5 查看飞书告警

当出现指标达到告警阈值时,飞书聊天组即可收到报警
在这里插入图片描述

4 参考资料

kube-Prometheus 安装:https://github.com/prometheus-operator/kube-prometheus/tree/main?tab=readme-ov-file#quickstart

kube-Prometheus k8s平台兼容性: https://github.com/prometheus-operator/kube-prometheus/tree/main?tab=readme-ov-file#compatibility

PrometheusAlert安装: https://github.com/feiyu563/PrometheusAlert/blob/master/doc/readme/base-install.md#安装部署prometheusalert

飞书机器人添加: https://www.feishu.cn/hc/zh-CN/articles/360024984973-如何在群组中使用机器人

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/22166.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hadoop初体验

一、HDFS初体验 1. shell命令操作 hadoop fs -mkdir /itcast hadoop fs -put zookeeper.out /itcast hadoop fs -ls / 2. Web UI页面操作 结论&#xff1a; HDFS本质就是一个文件系统有目录树结构 和Linux类似&#xff0c;分文件、文件夹为什么上传一个小文件也这…

python: SQLAlchemy (ORM) Simple example using mysql in Ubuntu 24.04

mysql sql script: create table School 表 (SchoolId char(5) NOT NULL comment主鍵primary key&#xff0c;學校編號,SchoolName nvarchar(500) NOT NULL DEFAULT comment 學校名稱,SchoolTelNo varchar(8) NULL DEFAULT comment電話號碼,PRIMARY KEY (SchoolId) #主…

解放大脑!用DeepSeek自动生成PPT!

DeepSeek应用&#xff08;PPT篇&#xff09; DeepSeek作为当前最好的AI大模型之一&#xff0c;其强大的文本生成能力被广泛的应用于各个领域&#xff0c;本文我们来聊聊用DeepSeek来自动生成PPT。 一、DeepSeek & PPT DeepSeek本身没有直接生成PPT的能力&#xff0c;换个…

从0到1:固件分析

固件分析 0x01 固件提取 1、从厂商官网下载 例如D-link的固件&#xff1a; https://support.dlink.com/resource/products/ 2、代理或镜像设备更新时的流量 发起中间人攻击MITM #启用IP转发功能 echo 1 > /proc/sys/net/ipv4/ip_forward#配置iptables&#xff0c;将目…

docker独立部署milvus向量数据库

milvus镜像&#xff1a;国外封锁&#xff0c;国内源也不好用。基本上所有源都不能用 首先想到阿里云服务&#xff0c;但是阿里云国外服务器便宜的300~400呢。 基于成本考虑终于装上心心念念的milvus(*^▽^*) 安装 Milvus 安装 Milvus 独立版 wget https://raw.githubuserco…

宇树科技13家核心零部件供应商梳理!

2025年2月6日&#xff0c;摩根士丹利&#xff08;Morgan Stanley&#xff09;发布最新人形机器人研报&#xff1a;Humanoid 100: Mapping the Humanoid Robot Value Chain&#xff08;人形机器人100&#xff1a;全球人形机器人产业链梳理&#xff09;。 Humanoid 100清单清单中…

win10系统上的虚拟机安装麒麟V10系统提示找不到操作系统

目录预览 一、问题描述二、原因分析三、解决方案四、参考链接 一、问题描述 win10系统上的虚拟机安装麒麟V10系统提示找不到操作系统&#xff0c;报错&#xff1a;Operating System not found 二、原因分析 国产系统&#xff0c;需要注意的点&#xff1a; 需要看你的系统类…

C#初级教程(1)——C# 与.NET 框架:探索微软平台编程的强大组合

图片来源&#xff1a; https://www.lvhang.site/docs/dotnettimeline 即梦AI - 一站式AI创作平台 一、历史发展脉络 在早期的微软平台编程中&#xff0c;常用的编程语言有 Visual Basic、C、C。到了 20 世纪 90 年代末&#xff0c;Win32 API、MFC&#xff08;Microsoft Found…

SpringBoot项目集成MinIO

最近在学习MinIO&#xff0c;所以想让自己的SpringBoot项目集成MinIO,在网上查阅资料&#xff0c;并进行操作的过程中遇到一些问题&#xff0c;所以想把自己遇到的坑和完成步骤记录下来供自己和各位查阅。 一. MinIO的下载安装以及基本使用 1. 下载地址&#xff1a;https://d…

ROS2下编写package利用orbbec相机进行yolov8实时目标检测

视频讲解 ROS2下编写package利用orbbec相机进行yolov8实时目标检测 在《ROS2下编写orbbec相机C package并Rviz显示》的基础上&#xff0c;继续添加对获取的图像使用YOLO进行目标检测 首先安装YOLO以及相关库 pip3 install ultralytics 使用如下指令测试下yolo安装情况 yol…

uniapp引入uview组件库(可以引用多个组件)

第一步安装 npm install uview-ui2.0.31 第二步更新uview npm update uview-ui 第三步在main.js中引入uview组件库 第四步在uni.scss中引入import "uview-ui/theme.scss"样式 第五步在文件中使用组件

UE5.3 C++ TArray系列(一)

一.TArray概述 它们就相当于C动态数组Vector&#xff0c;但是被UE封装了&#xff0c;懂得都懂反射嘛&#xff0c;要不一不小心就被回收了。 它真的非常常见&#xff0c;我所用的容器中&#xff0c;它绝对排名第一&#xff0c;第二是TMap。 同类好理解&#xff0c;我平时也常用…

R语言NIMBLE、Stan和INLA贝叶斯平滑及条件空间模型死亡率数据分析:提升疾病风险估计准确性...

全文链接&#xff1a;https://tecdat.cn/?p40365 在环境流行病学研究中&#xff0c;理解空间数据的特性以及如何通过合适的模型分析疾病的空间分布是至关重要的。本文主要介绍了不同类型的空间数据、空间格点过程的理论&#xff0c;并引入了疾病映射以及对空间风险进行平滑处理…

一款社交媒体中查用户名的工具

简介 追踪 400 多个社交网络中的用户名社交媒体账户以查找账户 安装 # python环境 pip安装 pip install sherlock-project # Mac环境 brew安装 brew install sherlock # docker安装 docker pull sherlock/sherlock 使用方式 ->$ sherlock -h usage: sherlock [-h] [-…

unity学习50:NavMeshAgent 区域Areas和cost

目录 1 NavMeshAgent 区域和成本的问题 2 区域Areas 2.1 区域和颜色 2.2 区域和成本 2.3 区域成本的作用 2.4 地图测试准备 2.5 如何实现 2.5.1 unity的2022之前的老版本 2.5.2 unity的2022之后的新版本 2.6 如果测试失败&#xff0c;是因为没有bake 2.7 测试前&…

JAVA版本游戏进程读写操作

1.导入游戏进程读写Maven依赖 <dependency><groupId>io.github.2lius</groupId><artifactId>MemoryProcess</artifactId><version>0.1</version></dependency> GitHub地址 2.代码操作游戏读写内存 package com.lius.test;impo…

英文字体:极简现代浓缩未来派科技海报标题排版无衬线字体 PODIUM Sharp Font

PODIUM Sharp 是 2012 年设计的 DUDU 字体的扩展版本。多年后&#xff0c;我决定通过添加新的母版和粗细来重建和开发这种字体。最后&#xff0c;PODIUM Sharp 由 234 种款式组成&#xff1a;从超压缩发际线到超扩展重度。 这个项目的主要目的是在我在旧波兰标本中发现的不同模…

JEEWMS cgFormBuildController.do 方法mobileForm存在SQL注入

一:登录扫描 JeeWMS是一款免费开源的仓库管理系统,支持3PL和厂内物流,涵盖订单管理,仓储管理,计费管理,现场作业,RFID,AGV等功能。本文介绍了系统的简介,功能,安装,截图和链接,适合仓储企业和开发者参考。厦门市灵鹿谷科技有限公司JEEWMS jeecgFormDemoController…

谷粒商城—分布式高级②.md

认证服务 1. 环境搭建 创建gulimall-auth-server模块,导依赖,引入login.html和reg.html,并把静态资源放到nginx的static目录下 2. 注册功能 (1) 验证码倒计时 //点击发送验证码按钮触发下面函数 $("#sendCode").click(function () {//如果有disabled,说明最近…

华为昇腾910b服务器部署DeepSeek翻车现场

最近到祸一台HUAWEI Kunpeng 920 5250&#xff0c;先看看配置。之前是部署的讯飞大模型&#xff0c;发现资源利用率太低了。把5台减少到3台&#xff0c;就出了他 硬件配置信息 基本硬件信息 按照惯例先来看看配置。一共3块盘&#xff0c;500G的系统盘&#xff0c; 2块3T固态…