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,在右侧选择“…...
《英雄无敌:上古纪元》评测:经典回合制策略游戏的回归之作
开发任何一款新的《魔法门之英雄无敌》都是一场巨大的冒险。这个系列对许多玩家来说早已不只是回合制策略的经典,更是近乎无法超越的这种游戏的标杆。正因如此,每一部新作都会受到粉丝们的严苛审视:它不仅要是一款好游戏,还必须证…...
vuegg常见问题解决方案:从安装配置到使用技巧的完整FAQ
vuegg常见问题解决方案:从安装配置到使用技巧的完整FAQ 【免费下载链接】vuegg :hatching_chick: vue GUI generator 项目地址: https://gitcode.com/gh_mirrors/vu/vuegg vuegg是一款高效的Vue GUI生成器,能够帮助开发者通过可视化界面快速构建V…...
题解:洛谷 AT_arc061_a [ABC045C] たくさんの数式
本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大家订阅我的专栏:算法…...
告别轮询!用ESP32的UART事件驱动开发,实现一个简易的AT指令解析器
ESP32事件驱动UART开发实战:构建高效AT指令解析框架 在物联网设备开发中,串口通信是最基础也最关键的交互方式之一。传统轮询方式虽然简单直接,但在处理多任务、高实时性要求的场景下显得力不从心。本文将带你用ESP32的UART事件驱动机制&…...
从词向量到大模型:NLP 技术是怎么一步步变强的
自然语言处理(Natural Language Processing,简称 NLP)是人工智能里一个特别重要的方向,它的发展过程其实就是人们想办法让机器从只会按规则做事,慢慢变成能真正理解人类说话意思的过程。这篇文章会带你简单看看&#x…...
VibeVoice-0.5B效果展示:多语种混合文本语音生成实录
VibeVoice-0.5B效果展示:多语种混合文本语音生成实录 1. 引言:当文字“开口说话”时,我们听到了什么? 想象一下,你正在为一个国际项目准备演示文稿,需要将一段包含英文、中文、日文和法文的混合文本&…...
网络性能利器 | iperf3.1.3源码获取与ARM平台交叉编译实战
1. 为什么需要iperf3网络性能测试工具 如果你曾经遇到过WiFi信号满格但网速奇慢的情况,或者怀疑路由器性能有问题但找不到量化依据,那么iperf3就是你的救星。作为一款专业的网络性能测试工具,它能够精确测量TCP/UDP带宽质量,找出…...
拆解IDT7205异步FIFO:从引脚时序到状态机,一个嵌入式老兵的调试笔记
一位嵌入式工程师的IDT7205异步FIFO实战手记 第一次拿到IDT7205这颗异步FIFO芯片时,我本以为按照常规思路就能轻松搞定。然而在实际调试过程中,那些看似简单的时序图背后隐藏着不少"坑"。本文将分享我从零开始理解并成功应用IDT7205的全过程&a…...
Windows Cleaner:高效解决C盘爆红的最佳实践指南
Windows Cleaner:高效解决C盘爆红的最佳实践指南 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 还在为C盘空间不足而烦恼吗?每次看到红色…...
万象视界灵坛环境部署:OpenShift平台容器化部署与RBAC权限控制
万象视界灵坛环境部署:OpenShift平台容器化部署与RBAC权限控制 1. 项目概述与技术背景 万象视界灵坛(Omni-Vision Sanctuary)是一款基于OpenAI CLIP模型构建的多模态智能感知平台。该平台通过创新的像素风格界面设计,将复杂的语…...
