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

第28关 k8s监控实战之Prometheus(九)

------> 课程视频同步分享在今日头条和B站

大家好,我是博哥爱运维。早期我们经常用邮箱接收报警邮件,但是报警不及时,而且目前各云平台对邮件发送限制还比较严格,所以目前在生产中用得更为多的是基于webhook来转发报警内容到企业中用的聊天工具中,比如钉钉、企业微信、飞书等。

prometheus的报警组件是Alertmanager,它支持自定义webhook的方式来接受它发出的报警,它发出的日志json字段比较多,我们需要根据需要接收的app来做相应的日志清洗转发

这里博哥将用golang结合Gin网络框架来编写一个日志清洗转发工具,分别对这几种常用的报警方式作详细的说明及实战,源码的分享计划放入golang语言开发讲解课程里面,这样大家更容易接受。

https://github.com/bogeit/LearnK8s/tree/main/2023/boge-webhook

我们先制作好镜像,并上传到我们自己的私有仓库Harbor里面

# 将上面代码仓库文件内容下载到目录
# 确认文件是否在当前目录
ls -l Dockerfile mycli
# 构建镜像
docker build -t harbor.boge.com/product/alertmanaer-webhook:1.0 .
# 上传镜像
docker push  harbor.boge.com/product/alertmanaer-webhook:1.0
# 创建harbor私有仓库密钥
kubectl -n monitoring create secret docker-registry boge-secret --docker-server=harbor.boge.com --docker-username=boge --docker-password=Boge@666 --docker-email=admin@boge.com

将构建好的后端转发服务部署到K8S上面

kubectl -n monitoring apply -f alertmanaer-webhook.yaml# 如果出现镜像拉取失败问题,注意看当前pod运行的节点,上面需要添加私有仓库的本地hosts
# vim /etc/hosts
10.0.1.201    easzlab.io.local harbor.boge.com# 指定后端转发服务的svc地址,发个post请求看看服务是否正常
curl -X POST -H 'Content-type: application/json' -d '{"name": "boge","titlea": "'"$(id)"'", "texta": "'"$(whoami)-$(hostname)"'"}' 10.68.138.60/b01bdc063/boge/getjson

查看后端 转发服务日志

# kubectl -n monitoring logs alertmanaer-dingtalk-dp-64c966fb9b-8pxgr
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.- using env:   export GIN_MODE=release- using code:  gin.SetMode(gin.ReleaseMode)[GIN-debug] GET    /status                   --> mycli/libs.MyWebServer.func1 (3 handlers)
[GIN-debug] POST   /b01bdc063/boge/getjson   --> mycli/libs.MyWebServer.func2 (3 handlers)
[GIN-debug] POST   /7332f19/prometheus/dingtalk --> mycli/libs.MyWebServer.func3 (3 handlers)
[GIN-debug] POST   /1bdc0637/prometheus/feishu --> mycli/libs.MyWebServer.func4 (3 handlers)
[GIN-debug] POST   /5e00fc1a/prometheus/weixin --> mycli/libs.MyWebServer.func5 (3 handlers)
[GIN-debug] Listening and serving HTTP on :9999
{"name": "boge","titlea": "uid=0(root) gid=0(root) groups=0(root)", "texta": "root-node-1"}
[GIN] 2024/01/15 - 21:45:15 | 200 |      36.143µs |   172.20.84.128 | POST     "/b01bdc063/boge/getjson"

首先看下报警规则及报警发送配置是什么样的

prometheus-operator的规则非常齐全,基本属于开箱即用类型,大家可以根据日常收到的报警,对里面的rules报警规则作针对性的调整,比如把报警观察时长缩短一点等

# 监控报警规划修改
kubectl -n monitoring edit PrometheusRule kubernetes-monitoring-rules
# 通过这里可以获取需要创建的报警配置secret名称
# kubectl -n monitoring edit statefulsets.apps alertmanager-main
...volumes:- name: config-volumesecret:defaultMode: 420secretName: alertmanager-main-generated
...# 注意事先在配置文件 alertmanager.yaml 里面编辑好收件人等信息 ,再执行下面的命令
kubectl -n monitoring delete secret alertmanager-main
kubectl -n monitoring create secret generic  alertmanager-main --from-file=alertmanager.yaml 

报警配置文件 alertmanager.yaml

# global块配置下的配置选项在本配置文件内的所有配置项下可见
global:# 在Alertmanager内管理的每一条告警均有两种状态: "resolved"或者"firing". 在altermanager首次发送告警通知后, 该告警会一直处于firing状态,设置resolve_timeout可以指定处于firing状态的告警间隔多长时间会被设置为resolved状态, 在设置为resolved状态的告警后,altermanager不会再发送firing的告警通知.
#  resolve_timeout: 1hresolve_timeout: 10m# 告警通知模板
templates:
- '/etc/altermanager/config/*.tmpl'# route: 根路由,该模块用于该根路由下的节点及子路由routes的定义. 子树节点如果不对相关配置进行配置,则默认会从父路由树继承该配置选项。每一条告警都要进入route,即要求配置选项group_by的值能够匹配到每一条告警的至少一个labelkey(即通过POST请求向altermanager服务接口所发送告警的labels项所携带的<labelname>),告警进入到route后,将会根据子路由routes节点中的配置项match_re或者match来确定能进入该子路由节点的告警(由在match_re或者match下配置的labelkey: labelvalue是否为告警labels的子集决定,是的话则会进入该子路由节点,否则不能接收进入该子路由节点).
route:# 例如所有labelkey:labelvalue含cluster=A及altertname=LatencyHigh labelkey的告警都会被归入单一组中group_by: ['job', 'altername', 'cluster', 'service','severity']# 若一组新的告警产生,则会等group_wait后再发送通知,该功能主要用于当告警在很短时间内接连产生时,在group_wait内合并为单一的告警后再发送
#  group_wait: 30sgroup_wait: 10s# 再次告警时间间隔
#  group_interval: 5mgroup_interval: 20s# 如果一条告警通知已成功发送,且在间隔repeat_interval后,该告警仍然未被设置为resolved,则会再次发送该告警通知
#  repeat_interval: 12hrepeat_interval: 1m# 默认告警通知接收者,凡未被匹配进入各子路由节点的告警均被发送到此接收者receiver: 'webhook'# 上述route的配置会被传递给子路由节点,子路由节点进行重新配置才会被覆盖# 子路由树routes:# 该配置选项使用正则表达式来匹配告警的labels,以确定能否进入该子路由树# match_re和match均用于匹配labelkey为service,labelvalue分别为指定值的告警,被匹配到的告警会将通知发送到对应的receiver- match_re:service: ^(foo1|foo2|baz)$receiver: 'webhook'# 在带有service标签的告警同时有severity标签时,他可以有自己的子路由,同时具有severity != critical的告警则被发送给接收者team-ops-wechat,对severity == critical的告警则被发送到对应的接收者即team-ops-pagerroutes:- match:severity: criticalreceiver: 'webhook'# 比如关于数据库服务的告警,如果子路由没有匹配到相应的owner标签,则都默认由team-DB-pager接收- match:service: databasereceiver: 'webhook'# 我们也可以先根据标签service:database将数据库服务告警过滤出来,然后进一步将所有同时带labelkey为database- match:severity: criticalreceiver: 'webhook'
# 抑制规则,当出现critical告警时 忽略warning
inhibit_rules:
- source_match:severity: 'critical'target_match:severity: 'warning'# Apply inhibition if the alertname is the same.#   equal: ['alertname', 'cluster', 'service']#
# 收件人配置
receivers:
- name: 'webhook'webhook_configs:- url: 'http://alertmanaer-dingtalk-svc.kube-system/b01bdc063/boge/getjson'send_resolved: true
附: 监控其他服务的prometheus规则配置

https://github.com/samber/awesome-prometheus-alerts

相关文章:

第28关 k8s监控实战之Prometheus(九)

------> 课程视频同步分享在今日头条和B站 大家好&#xff0c;我是博哥爱运维。早期我们经常用邮箱接收报警邮件&#xff0c;但是报警不及时&#xff0c;而且目前各云平台对邮件发送限制还比较严格&#xff0c;所以目前在生产中用得更为多的是基于webhook来转发报警内容到企…...

安全防御之可信计算技术

可信计算技术是一种计算机安全体系结构&#xff0c;旨在提高计算机系统在面临各种攻击和威胁时的安全性和保密性。它通过包括硬件加密、受限访问以及计算机系统本身的完整性验证等技术手段&#xff0c;确保计算机系统在各种攻击和威胁下保持高度安全和保密性。 一、可信计算基…...

FPGA引脚物理电平(内部资源,Select IO)-认知2

引脚电平 The SelectIO pins can be configured to various I/O standards, both single-ended and differential. • Single-ended I/O standards (e.g., LVCMOS, LVTTL, HSTL, PCI, and SSTL) • Differential I/O standards (e.g., LVDS, Mini_LVDS, RSDS, PPDS, BLVDS, and…...

PBR材质纹理下载

03:10 按照视频里的顺序 我们从第6个网站开始倒数 点击本行文字或下方链接 进入查看 6大网站地址 网址查看链接&#xff1a; http://www.uzing.net/community_show-1962-48-48-35.html 06 Tectures Wood Fence 001 | 3D TEXTURES 简介&#xff1a;最大的纹理网站之一&#x…...

mac PyCharm 使用conda环境

1 使用conda创建虚拟环境 conda create -n test6 python3.9 -y conda activate test62 选择conda环境 本地 选择已经存在的conda环境 右下角会显示现在的环境。...

10个常用的正则表达式

1 电话号码 let r1 /^1[3-9]\d{9}$/g console.log(r1.exec(18596932371)) 2 qq号 let r2 /^[1-9][0-9]{4,9}$/g console.log(r2.exec(123456)) 3 十六进制的方式表示颜色 let r3 /^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$/g // # 可能可有可无&#xff0c;如果不需要#&a…...

对一手游的自定义 luajit 字节码的研究

对一手游的自定义 luajit 字节码的研究 前言 最近闲下来之后无聊研究起了一个unity手游 大量使用了 lua &#xff08;或者说就是 lua 写的 &#xff09; 看到网上已有的一些针对方案 都觉得太不方便 于是深入研究了一下 他自定义的 luajit 情况研究 首先 这是一个 unity的 传…...

1125. 牛的旅行 (Floyd算法,最短路)

1125. 牛的旅行 - AcWing题库 农民John的农场里有很多牧区&#xff0c;有的路径连接一些特定的牧区。 一片所有连通的牧区称为一个牧场。 但是就目前而言&#xff0c;你能看到至少有两个牧区不连通。 现在&#xff0c;John想在农场里添加一条路径&#xff08;注意&#xff…...

oracle “Interested Transaction List”(ITL)的概念

“Interested Transaction List”&#xff08;ITL&#xff09;的概念。让我们逐点理解&#xff1a; 块头和ITL&#xff1a; 每个数据库段块的块头都包含一个Interested Transaction List&#xff08;ITL&#xff09;。ITL用于确定数据库开始修改块时某个事务是否未提交。 ITL的…...

kali下-MSF-ftp_login模块破解FTP账号及密码

一、环境准备 两台设备在同一个网络内 一台kali系统&#xff1a;192.168.10.128 一台winserver2016&#xff1a;192.168.10.132 二、MSF介绍 metasploit 全称是The Metasploit Framework&#xff0c;又称MSF&#xff0c;是Kali 内置的一款渗透测试框架&#xff0c;也是全球…...

ELK之Filebeat输出日志格式设置及输出字段过滤和修改

一、Filebeat输出日志格式设置 1.1 编辑vim filebeat.yml文件,修改输出格式设置 # output to console output.console:codec.format: string: %{[@timestamp]} %{[message]}pretty: true### 1.2 测试 执行 ./filebeat -e 可以看到/tmp/access.log(目前文件里只有140.77.188…...

【开源】基于JAVA的河南软件客服系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统管理人员2.2 业务操作人员 三、系统展示四、核心代码4.1 查询客户4.2 新增客户跟进情况4.3 查询客户历史4.4 新增服务派单4.5 新增客户服务费 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的河…...

基于SpringBoot的社区帮扶对象管理系统

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…...

uniapp踩坑之项目:canvas第一次保存是空白图片

在ctx.draw()回调生成图片&#xff0c;参考canvasToTempFilePath接口文档 // data imgFilePath: null,// 缓存二维码图片canvas路径//js // 首先在draw&#xff08;&#xff09;里进行本地存储 ...... ctx.draw(false, () >{uni.canvasToTempFilePath({ // 把画布转化成临时…...

es-删除字段-实测

es字段一旦创建是无法删除的&#xff0c;本案的方案是复制新老索引的方法 一、背景 现有索引 index1,待删除字段field1和extendMap.field2&#xff0c;es版本6.3.2 二、步骤 1、删除index1中的filed1和extendMap.field2两个字段的数据 POST index1/_update_by_query {&qu…...

24秋招,百度测试开发工程师三面

前言 大家好&#xff0c;我是chowley&#xff0c;今天来回顾一下&#xff0c;我当时参加百度秋招补录&#xff0c;测试开发工程师的第三面-leader面 到面试开始的时间&#xff0c;面试官打电话表示让我等十分钟&#xff0c;随后跳过自我介绍&#xff0c;直接开面 时间&#…...

YOLOv8改进 | 主干篇 | 低照度增强网络PE-YOLO改进主干(改进暗光条件下的物体检测模型)

一、本文介绍 本文给大家带来的改进机制是低照度图像增强网络PE-YOLO中的PENet,PENet通过拉普拉斯金字塔将图像分解成多个分辨率的组件,增强图像细节和低频信息。它包括一个细节处理模块(DPM),用于通过上下文分支和边缘分支增强图像细节,以及一个低频增强滤波器(LEF),…...

【VUE】记录一次 VUE中配置生产环境和开发环境方法

前言 我这里 使用Vue CLI&#xff08;Vue Command Line Interface&#xff09;创建Vue.js项目是一种简单的方式&#xff0c;它提供了一个交互式的命令行工具来帮助你初始化和管理Vue.js项目。 并且我这个项目需要区分生产环境和开发环境。这里具体完整记录下&#xff0c;整个…...

tessreact训练字库

tessreact主要用于字符识别&#xff0c;除了使用软件自带的中英文识别库&#xff0c;还可以使用Tesseract OCR训练属于自己的字库。 一、软件环境搭建 使用Tesseract OCR训练自己的字库&#xff0c;需要安装Tesseract OCR和jTessBoxEditor(配套训练工具)。jTessBoxEditor需要…...

超时配置(OpenFeign)

默认值 连接超时&#xff0c;默认2s读取超时&#xff0c;默认5s单位&#xff1a; 毫秒 全局配置 package com.learning.springcloud.order.feign.config;import feign.Contract; import feign.Logger; import feign.Request; import org.springframework.context.annotation…...

2025届最火的十大降重复率助手实测分析

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 维普AIGC检测系统&#xff0c;是面向学术机构以及科研人员所推出的专业工具&#xff0c;其作…...

高校AIGC检测越来越严格背后的原因:政策趋势和学生应对建议

高校AIGC检测越来越严格背后的原因&#xff1a;政策趋势和学生应对建议 超过六成高校已经把AIGC检测纳入论文审查流程。但真正了解检测原理的人不到一成。 我判断&#xff1a;高校AIGC检测趋严这件事&#xff0c;大多数人的恐慌来自不了解。搞清楚原理&#xff0c;应对起来没…...

闲鱼数据采集实战:从技术原理到商业洞察的完整指南

闲鱼数据采集实战&#xff1a;从技术原理到商业洞察的完整指南 【免费下载链接】xianyu_spider 闲鱼APP数据爬虫 项目地址: https://gitcode.com/gh_mirrors/xia/xianyu_spider 作为一名数据采集工程师&#xff0c;我曾面临这样的困境&#xff1a;电商平台数据分散、反爬…...

“男子靠AI开一人公司年营收达150万”冲上热搜;Claude Code开发团队回应源码泄露:纯属人为失误;树莓派因LPDDR4内存涨价7倍 | 极客头条

「极客头条」—— 技术人员的新闻圈&#xff01;CSDN 的读者朋友们好&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。&#xff08;投稿或寻求报道&#xff1a;zhanghycsdn.net&#xff09;整理 | 郑丽媛出品 | CSDN&#xff08;I…...

Phantom Camera最佳实践:避免常见陷阱的20个专业建议

Phantom Camera最佳实践&#xff1a;避免常见陷阱的20个专业建议 【免费下载链接】phantom-camera A Camera addon for Godot 4. Inspired by Cinemachine. 项目地址: https://gitcode.com/gh_mirrors/ph/phantom-camera Phantom Camera是Godot 4引擎中一款强大的相机插…...

LibreCAD:开源2D CAD解决方案的价值与实践指南

LibreCAD&#xff1a;开源2D CAD解决方案的价值与实践指南 【免费下载链接】LibreCAD LibreCAD is a cross-platform 2D CAD program written in C17. It can read DXF/DWG files and can write DXF/PDF/SVG files. It supports point/line/circle/ellipse/parabola/spline pri…...

安卓音频问题解决记录(一)

本文记录在安卓framework开发过程中遇到的一些音频问题的解决办法。 1.支持多应用同时录音(安卓10以上) 通过日志分析,发现当另一个应用打开录音的时候会被静音,日志如下: APM_AudioPolicyManager: setAppState(portId:43, state:2) APM_AudioPolicyManager: set…...

2024IEEE 《基于二次规划的安全关键型多智能体系统的控制》四旋翼 无人机 MATLAB

2024IEEE 《基于二次规划的安全关键型多智能体系统的控制》四旋翼 无人机 MATLAB 代码复现&#xff08;文献代码&#xff09;协同控制 规划 无人机 研究了基于二次规划的安全关键型多智能体系统的控制问题。 每个被控智能体被建模为一个积分器和一个不确定非线性驱动系统的级联…...

凌晨裁员3万人,史上最大裁员潮来了!

作者 | 文韬报道 | 环球电商“我们决定取消您的岗位&#xff0c;今天是您的最后一个工作日。”不少员工醒来才发现&#xff0c;岗位没了&#xff0c;系统权限也快没了&#xff0c;今天就是最后一个工作日。过去大家总觉得&#xff0c;只有快撑不住的公司&#xff0c;才会用这种…...

万象视界灵坛实战教程:构建语义搜索API供前端React/Vue应用调用

万象视界灵坛实战教程&#xff1a;构建语义搜索API供前端React/Vue应用调用 1. 项目概述与核心价值 万象视界灵坛是一款基于OpenAI CLIP模型的高级多模态智能感知平台&#xff0c;它将复杂的语义对齐技术转化为直观的视觉体验。本教程将指导开发者如何将其强大的语义搜索能力…...