K8s环境下监控告警平台搭建及配置
Promethues是可以单机搭建的,参考prometheus入门[1]
本文是就Promethues+Grafana在K8s环境下的搭建及配置
Prometheus度量指标监控平台简介
-
启动minikube
minikube start
-
安装helm
使用Helm Chart 安装 Prometheus Operator:
helm install prometheus-operator stable/prometheus-operator -n monitoring
报错:
WARNING: This chart is deprecated
Error: INSTALLATION FAILED: failed to install CRD crds/crd-alertmanager.yaml: resource mapping not found for name: "alertmanagers.monitoring.coreos.com" namespace: "" from "": no matches for kind "CustomResourceDefinition" in version "apiextensions.k8s.io/v1beta1"
ensure CRDs are installed first
根据 Kubernetes和微服务监控体系[2](搜索"降低我们的版本")
降低minikube版本: minikube start --kubernetes-version=v1.20.3
(这步可能会卡着不动等半天,耐心等待即可~)


解决该问题后继续:
kubectl create ns monitoring
helm install prometheus-operator stable/prometheus-operator -n monitoring


要等一会儿,全部pod才能都启动起来~

Promethues-Operator基本功能展示
访问prometheus内置浏览器
kubectl port-forward -n monitoring prometheus-prometheus-operator-prometheus-0 9090
kubectl port-forward 什么意思?
kubectl port-forward
是一个 Kubernetes 命令,用于将本地端口与 Kubernetes Pod 或 Service 的端口之间建立临时的网络转发连接。
当你在本地开发环境中需要直接访问运行在 Kubernetes 集群中的 Pod 或 Service 时,kubectl port-forward
命令可以帮助你在本地主机和 Kubernetes 集群之间建立一个网络通道。
使用 kubectl port-forward
命令时,你需要指定要转发的资源类型和名称,并指定本地端口和远程端口。例如,以下命令将本地的 8080 端口与名为 "my-pod" 的 Pod 的 80 端口进行转发:
kubectl port-forward my-pod 8080:80
这将在本地主机的 8080 端口上启动一个转发服务,将所有发送到该端口的请求转发到运行在 "my-pod" Pod 中的 80 端口。你可以使用本地浏览器或工具访问 localhost:8080
来与 Pod 进行交互。
类似地,你也可以使用 kubectl port-forward
命令转发到 Service 的端口。例如:
kubectl port-forward service/my-service 8080:80
这将将本地的 8080 端口与名为 "my-service" 的 Service 的 80 端口进行转发。
kubectl port-forward
命令对于在本地开发和调试过程中与 Kubernetes 集群中的资源进行交互非常有用。它可以方便地将远程服务映射到本地主机,以便你可以直接访问和测试它们。

访问 http://localhost:9090/

prometheus-operator 已经帮我们把相关的监控项配置好了

up指标

node_load1指标
No datapoints found.
, issue[3]

但好像没干啥就好了..

查询对promethues web总的成功请求数

查询对promethues metrics端点的成功请求率

告警信息
http://localhost:9090/alerts

配置信息Configuration

告警(alert)和聚合(record)规则Rules

监控目标Targets

访问Alertmanger UI
kubectl port-forward -n monitoring alertmanager-prometheus-operator-alertmanager-0 9093

告警信息

状态和配置

访问Grafana UI

http://localhost:3000/

user: admin
pass: prom-operator


Nodes节点监控
在上图搜索框输入"node"

K8s/Compute Resources/Cluster监控


K8s/Compute Resources/Pod监控

定制Alertmanager邮件通知
安装FakeSMTP
git clone https://github.com/Nilhcem/FakeSMTP.git
cd FakeSMTP
mvn package
java -jar target/fakeSMTP-2.0-SNAPSHOT.jar -p 2525

现在需要改为 java -jar target/fakeSMTP-2.1-SNAPSHOT.jar -p 2525

点击 启动服务器

Alertmanager缺省配置(Secret)
kubectl get secret -n monitoring alertmanager-prometheus-operator-alertmanager -o go-template='左括号 左括号 index .data "alertmanager.yaml" 右括号 右括号' | base64 --decode
(把汉字替换为对应符号,不这样hexo会解析出错)

该命令用于从 Kubernetes 集群中的指定命名空间(-n monitoring
)获取名为 alertmanager-prometheus-operator-alertmanager
的 Secret 对象,并提取其中名为 alertmanager.yaml
的数据字段的值。然后使用 base64
命令对该值进行解码,以便将其转换回原始的 YAML 格式。
换句话说,这个命令的目的是获取监控系统中 Alertmanager 的配置文件,并将其解码为可读的 YAML 格式,以便查看其中的配置详细信息。
因为这个配置是secret形式存储的

Opaque类型,所以最后要用 base64 --decode 转为明文
其实可以通过下面的UI直观查看
Alertmanager缺省配置(UI)

Alertmanager config更新
参考 https://github.com/helm/charts/blob/master/stable/prometheus-operator/values.yaml#L133
-
增加 邮件smtp等配置 -
增加静默配置(发送给null) -
增加抑制配置(inhibit)
Prometheus监控系统中,"静默配置"(inhibit configuration)用于在发生警报时控制通知的行为。通过静默配置,可以防止某些特定警报触发通知,以避免不必要的干扰或重复的通知。
静默配置定义了在特定条件下阻止警报通知的规则。这些规则通常基于警报标签和标签值的匹配。当触发一个警报时,系统将根据静默配置中的规则检查是否有匹配的规则存在。如果有匹配的规则,那么该警报将被静默,即不会触发通知。
通过使用静默配置,可以灵活地控制在某些情况下抑制警报通知,例如:
-
阻止在维护窗口期间触发通知。 -
抑制由特定部署环境引起的虚假警报。 -
防止多个相关的警报同时触发大量通知。
在Prometheus中,静默配置可以通过修改Alertmanager的配置文件(alertmanager.yaml
)来实现,具体的配置语法和规则定义可以参考Prometheus的官方文档。
在Prometheus中,将通知发送给null
属于静默配置的一种。当将静默规则配置为将通知发送给null
时,实际上是将该警报完全静默化,意味着不会有任何通知发送。
这种配置适用于那些不希望触发任何通知的警报。通常,这可能是对特定类型的警报或某些特定条件下的警报进行静默化的一种方式。通过将通知发送给null
,可以确保该警报不会引起任何干扰或通知负担。
静默规则配置示例:
inhibit_rules:
- source_match:
severity: critical
target_match:
severity: warning
equal: ['alertname', 'service']
target_receivers:
- 'null'
上述示例中的静默规则指定了在警报的严重性为critical
,并且警报名称和服务名称相同时,将通知发送给null
,即静默该警报。
更新后的配置在 https://github.com/spring2go/k8s-msa-in-action/blob/master/ch08/07/values_alertmanager.yml

修改ip为本机地址
更新prometheus-operator release
helm upgrade prometheus-operator stable/prometheus-operator --values=shuang_alertmanager.yml -n monitoring
helm history prometheus-operator -n monitoring

如果有问题,可以看pod日志进行排查~
kubectl logs -n monitoring alertmanager-prometheus-operator-alertmanager-0
校验配置更新成功
打开 http://localhost:9093/#/status, 通过UI校验看是否修改成功~

启动FakeSMTP接收告警
此时已经收到了邮件

其中 etcd这项告警 message = etcd cluster "kube-etcd": members are down (1).
是因为用minikube,etcd节点本来就不足~

.+Overcommit
本来应该要收到告警,但通过配置抑制掉了
参考自
Kubernetes和微服务监控体系[4]
Kubernetes和微服务监控体系[5]
更多参考:
从零用Helm部署prometheus,并配置钉钉告警[6]
helm 安装配置 prom-operator[7]
参考资料
prometheus入门: https://dashen.tech/2020/09/14/prometheus%E5%85%A5%E9%97%A8/
[2]Kubernetes和微服务监控体系: https://blog.csdn.net/weixin_35821291/article/details/122877311
[3]issue: https://github.com/prometheus/prometheus/issues/1022
[4]Kubernetes和微服务监控体系: https://www.bilibili.com/video/BV1Qi4y1b79r/?p=8
[5]Kubernetes和微服务监控体系: https://blog.csdn.net/weixin_35821291/article/details/122877311
[6]从零用Helm部署prometheus,并配置钉钉告警: https://blog.csdn.net/lingjinghe/article/details/127646375
[7]helm 安装配置 prom-operator: https://blog.csdn.net/zhangxueleishamo/article/details/130339221
本文由 mdnice 多平台发布
相关文章:

K8s环境下监控告警平台搭建及配置
Promethues是可以单机搭建的,参考prometheus入门[1] 本文是就PromethuesGrafana在K8s环境下的搭建及配置 Prometheus度量指标监控平台简介 启动minikube minikube start 安装helm 使用Helm Chart 安装 Prometheus Operator: helm install prometheus-operator stabl…...

微信小程序在使用vant组件库时构建npm报错
在跟着vant官方进行使用步骤一步步操作时,由于要构建NPM,但NPM包在App配置文件的外部 所以在做下图这一步时: 接着再进行npm构建时会报错 message:发生错误 Error: F:\前端学习\前端框架\小程序\project\demo\miniprogram解决方法 …...

Django实现音乐网站 ⑽
使用Python Django框架制作一个音乐网站, 本篇主要是后台对歌曲类型、歌单功能原有功能进行部分功能实现和显示优化。 目录 歌曲类型功能优化 新增编辑 优化输入项标题显示 父类型显示改为下拉菜单 列表显示 父类型显示名称 过滤器增加父类型 歌单表功能优化…...

SpringMVC的架构有什么优势?——异常处理与文件上传(五)
前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄ÿ…...

【java面向对象中static关键字】
提纲 static修饰成员变量static修饰成员变量的应用场景static修饰成员方法static修饰成员方法的应用场景static的注意事项static的应用知识:代码块static的应用知识:单例设计模式 static静态的意思,可以修饰成员变量,成员方法&a…...

系统学习Linux-Redis集群
目录 一、Redis主从复制 概念 作用 缺点 流程 二、Reids哨兵模式(sentinel) 概念 作用 缺点 结构 搭建 三、redis集群 概述 原理 架构细节 选举过程 实验环境模拟 一、Redis主从复制 概念 是指将一台Redis服务器的数据,复制…...
【每日随笔】帝王心术 ② ( 如何培养下一代 | 重点培养孩子某一项特长 | 价值观培养 | 独立思考 | 人性和谋略教育 | 资源传承 | 人生指引 )
文章目录 一、重点培养孩子某一项特长二、价值观培养三、独立思考四、人性和谋略教育五、资源传承六、人生指引 一、重点培养孩子某一项特长 很多人 作为 父母 , 教育孩子 , 没有出息的占大多数 ; 父母 教育 孩子 , 给孩子培训 , 一般都给报个兴趣班 , 如果兴趣班的种类超过两…...

Git简介
Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或大或小的项目。 Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源代码的版本控制软件。 Git与常用的版本控制工具CVS、Subversion等不同,它采用了分布式版本库的方式&#x…...

STM32入门学习之定时器输入捕获
1.定时器的输入捕获可以用来测量脉冲宽度或者测量频率。输入捕获的原理图如下: 假设定时器是向上计数。在图中,t1~t2之间的便是我们要测量的高电平的时间(脉冲宽度)。首先,设置定时器为上升沿捕获,如此一来,在t1时刻可…...
贪心算法:基础入门篇
贪心算法:基础入门篇 文章目录: 贪心算法:基础入门篇一、认识贪心算法二、常见贪心问题2.1 纸牌问题2.2 背包问题(基础版)2.3 简单数学证明问题 三、总结 一、认识贪心算法 在求最优解的问题中,以某种贪心…...

【Windows10下启动RocketMQ报错:找不到或无法加载主类 Files\Java\jdk1.8.0_301\lib\dt.jar】解决方法
Windows10下启动RocketMQ报错:找不到或无法加载主类 一、问题产生二、产生原因三、解决办法 一、问题产生 参考RocketMQ Github官网上的说明,下载rocketmq-all-5.1.3-bin-release.zip,解压配置环境变量后,执行如下命令:…...

深入篇【Linux】学习必备:进程理解(从底层探究进程概念/进程创建/进程状态/进程优先级)
深入篇【Linux】学习必备:进程理解(从底层探究进程概念/进程创建/进程状态/进程优先级) 一.进程概念(PCB/task_struct)二.查看进程(top/ps)三.创建进程(fork)四.进程状态(僵尸进程/孤儿进程)五.进程优先级(PRI/NI) 一.进程概念(PCB/task_struct) 1.什么…...

Python 潮流周刊#15:如何分析 FastAPI 异步请求的性能?
你好,我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容,大部分为英文。标题取自其中一则分享,不代表全部内容都是该主题,特此声明。 本周刊精心筛选国内外的 250 信息源,为你挑选最值得分享的文章、教程、开源…...

基于Java+SpringBoot+Vue的网吧管理系统设计与实现(源码+LW+部署文档等)
博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…...

redis设置database 不生效剖析
设置database 不生效剖析 前言配置加载类问题commons-pool 对象池 主页传送门:📀 传送 前言 事情是这样的 今天在拉取了同事的代码做redis缓存设置的时候,发现即使已经设置了database, 但是存数据的时候还是用的默认0数据库。这引起了我的好…...

汽车及汽车零部件行业云MES解决方案
汽配行业现状: 随着经济全球化进程加快,一直走在智能化改造,数字化转型前沿的汽车行业企业,面临的信息化需求也日益增加,不管德系,美系还是日系供应链的各大厂商,均将企业信息化,数字…...
算法工程师-机器学习面试题总结(4)
深度学习 DNN 描述一下神经网络?推导反向传播公式? 神经网络(Neural Network)是一种模拟人脑神经系统的计算模型。它由许多节点(神经元)和连接它们的权重组成,这些节点和权重可以学习和调整&a…...

Linux学习之awk函数
awk里边的函数分为内置函数和自定义函数。 内置函数有下边的几种: 算术函数(arithmetic) 字符串函数(string) 输入/输出函数和通用函数(input/output, and general) 自定义函数格式如下…...

Redis的数据结构到底是一种什么样的结构?
有了上一篇NoSQL的基础,我们也都知道了Redis就是一种典型的NoSql,那我们就先简简单单的介绍一下Redis: Redis是什么? Redis(Remote Dictionary Server)是一个开源的使用ANSI C语言编写的高性能键值存储系统…...

eclipse 导入项目js报错问题
eclipse 导入项目后会出现项目中的js文件报错(红叉),如下图所示,有时候报错的文件很多,需要集中处理。 解决办法: 右键项目名称》Properties》MyEclipse》JavaScript》Include Path,在右侧选择“…...

接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...

Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...

前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...

【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...

网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...

mac:大模型系列测试
0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何,是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试,是可以跑通文章里面的代码。训练速度也是很快的。 注意…...