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

kube-prometheus-stack 自定义 alertmanager 配置推送webhook

创建AlertmanagerConfig资源

在没有使用 prometheus-operator 的情况下,需要手动配置 alertmanager.yaml 来路由&发送从 prometheus 接收的警报。

使用 prometheus-operator 之后,事情变得简单一些。只需要创建 AlertmanagerConfig 资源,prometheus-operator 会自动 merge 所有的 AlertmanagerConfig 资源生成/更新 alertmanager.yaml,并通知 alertmanager 重载配置。

默认情况下,prometheus-operator会关注所有namespace下的所有AlertmanagerConfig:

kubectl get -n kube-prom alertmanagerskubectl get -n kube-prom alertmanagers/kube-promethues-stack-kube-alertmanager -o yaml# spec.alertmanagerConfigNamespaceSelector: {},表示不作筛选
# spec.alertmanagerConfigSelector: {},表示不作筛选

创建一个简单警报路由规则

apiVersion: monitoring.coreos.com/v1alpha1
kind: AlertmanagerConfig
metadata:name: testwebhooknamespace: kube-prom
spec:route:receiver: webhookgroupBy: ["instance", "job"]groupWait: "10s"groupInterval: "20s"repeatInterval: "30s"receivers:- name: webhookwebhookConfigs:- url: "http://10.0.2.11:8080/webhook/send"sendResolved: trueinhibitRules:- sourceMatch:- name: severityvalue: 'critical'targetMatch:- name: severityvalue: 'warning'equal: ['instance']

参考:

https://github.com/prometheus-community/helm-charts/issues/2224
https://kkgithub.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#alertmanagerconfig
kubectl apply -f alertmanager-config.yaml
kubectl edit svc kube-promethues-stack-kube-alertmanager -n kube-prom
kubectl get svc kube-promethues-stack-kube-alertmanager -n kube-prom

创建资源后,打开alertmanager管理后台 http://10.0.2.12:32466/#/status 页面,确认 Config 已经包含相关的配置信息(可能需要稍等一会)。

AlertmanagerConfig 资源详情参考:https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#alertmanagerconfig

创建 PrometheusRule 资源

类似 AlertmanagerConfig,可以通过创建 PrometheusRule 资源来创建警报规则(rule),prometheus-operator 会自动把所有 rule 配置 merge 到 prometheus.yml。

默认情况下,prometheus-operator 会关注所有 namespace 下匹配 label release=kube-prometheus-stack 的 PrometheusRule :

kubectl get -n kube-prom prometheuses
kubectl get -n kube-prom prometheuses/kube-promethues-stack-kube-prometheus -o yaml
# spec.ruleNamespaceSelector: {},表示不作筛选
# spec.ruleSelector:
#   matchLabels:
#     release: kube-prometheus-stack

创建一个能立即触发报警的规则:

apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:labels:prometheus: k8sole: alert-rulesname: kube-prom-kube-prom-stack-kube-prome-prometheus.rulesnamespace: kube-prom
spec:groups:- name: diskrules:- alert: diskFreeannotations:value: "{{$value}}"summary: "{{ $labels.job }}  项目实例 {{ $labels.instance }} 磁盘使用率大于 80%"description: "{{ $labels.instance }}  {{ $labels.mountpoint }}  磁盘使用率大于80%  (当前的值: {{ $value }}%),请及时处理"expr: |(1-(node_filesystem_free_bytes{fstype=~"ext4|xfs",mountpoint!="/boot"} / node_filesystem_size_bytes{fstype=~"ext4|xfs",mountpoint!="/boot"}) )*100 > 80for: 1mlabels:severity: warning
kubectl apply -f prometheus-rule.yaml

注意:labels 的severity: warning和前面创建 AlertmanagerConfig 的 inhibitRules 配置匹配,为什么需要namespace: kube-prom?prometheus-operator 会在 AlertmanagerConfig 的 matchers 强制加上这个标签,issue 讨论:https://github.com/prometheus-operator/prometheus-operator/issues/3737

kubectl edit svc kube-promethues-stack-kube-prometheus -n kube-prom 
kubectl get svc kube-promethues-stack-kube-prometheus -n kube-prom

创建资源后,打开prometheus管理后台 http://10.0.2.12:30133/rules页面,搜索diskFree确认能找到新添加的规则(可能需要稍等一会)。

PrometheusRule 资源详情参考:https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#prometheusrule

编写 /webhook/send 接口

创建springboot项目,添加如下依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.olive</groupId><artifactId>test-promethues</artifactId><version>0.0.1-SNAPSHOT</version><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>3.2.0</version></dependency><dependency><groupId>com.alibaba.fastjson2</groupId><artifactId>fastjson2</artifactId><version>2.0.49</version></dependency></dependencies>
</project>

创建 controller

package com.olive;import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;import com.alibaba.fastjson2.JSON;@RestController
public class RevcController {@PostMapping("/webhook/send")public Map<String, String> create(@RequestBody Map<String, Object> entity) {System.out.println(LocalDateTime.now());System.out.println(JSON.toJSONString(entity));Map<String, String> result = new HashMap<String, String>();result.put("code", "success");return result;}}

创建springboot引导类

package com.olive;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class App {public static void main(String[] args) {SpringApplication.run(App.class, args);}
}

参考:

https://www.cnblogs.com/roy2220/p/14867024.html

相关文章:

kube-prometheus-stack 自定义 alertmanager 配置推送webhook

创建AlertmanagerConfig资源 在没有使用 prometheus-operator 的情况下&#xff0c;需要手动配置 alertmanager.yaml 来路由&发送从 prometheus 接收的警报。 使用 prometheus-operator 之后&#xff0c;事情变得简单一些。只需要创建 AlertmanagerConfig 资源&#xff0…...

openssl签名报错

在调用RSA_private_encrypt函数时遇到如下报错。 0:error:0D07803A:asn1 encoding routines:asn1_item_embed_d2i:nested asn1 error:crypto/asn1/tasn_dec.c:309:TypeX509 0:error:2406C06E:random number generator:RAND_DRBG_instantiate:error retrieving entropy:crypto/…...

如何在不使用 VPN 的情况下通过 SOCKS 隧道安全地路由 Web 流量

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 介绍 在某些情况下&#xff0c;您可能会发现自己处于一个不安全的网络或者有一个过于严格的防火墙&#xff0c;您会希望确保没有人在监…...

android openGL ES详解——缓冲区VBO/VAO/EBO/FBO

目录 一、缓冲区对象概念 二、分类 三、顶点缓冲区对象VBO 1、概念 2、为什么使用VBO 3、如何使用VBO 生成缓冲区对象 绑定缓冲区对象 输入缓冲区数据 更新缓冲区中的数据 删除缓冲区 4、VBO应用 四、顶点数组对象VAO 1、概念 2、为什么使用VAO 3、如何使用VAO…...

计算机网络——传输层服务

传输层会给段加上目标ip和目标端口号 应用层去识别报文的开始和结束...

gin入门教程(8):渲染与静态文件

目录结构 /hello-gin │ ├── cmd/ │ └── main.go ├── pkg/ │ └── shared_lib.go ├── internal/ │ └── internal_lib.go ├── api/ │ └── routes.go ├── config/ │ └── config.go ├── migrations/ │ └── migration.sql └…...

Fast Simulation of Mass-Spring Systems in Rust 论文阅读

参考资料&#xff1a; 文章目录 概述流程概述&#xff1a;1.前置知识1.1 运动方程&#xff08;牛顿第二定律&#xff09;1.2 二阶导数的离散化1.3 代入运动方程1.4 物理意义 2. 将隐式积分问题转化为一个优化问题2.1 要解的是隐式积分问题是&#xff1a;2.2 引入辅助变量d1. 左…...

javaWeb项目-ssm+vue志愿者招募网站功能说明介绍

本项目源码&#xff08;点击下方链接下载&#xff09;&#xff1a;java-ssmvue志愿者招募网站实现源码(项目源码-说明文档)资源-CSDN文库 项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a…...

Selenium + Titanium代理获取请求的接口数据

有一个采集数据的需求&#xff0c;分析了页面数据后发现列表有一个id&#xff0c;但是没有其他数据&#xff0c;打开详情并不是通过id&#xff0c;而是其他一个字段&#xff0c;这就说明通过selenium抓取页面数据还不行&#xff0c;还要接口返回的数据。这个时候就需要用到代理…...

ELK Stack与Graylog:强大的日志分析和可视化工具

ELK Stack的使用方法 ELK Stack由Elasticsearch、Logstash和Kibana三个核心组件组成&#xff0c;它们协同工作&#xff0c;提供了从日志收集、解析、存储到可视化的完整解决方案。 安装与配置Elasticsearch Elasticsearch是ELK Stack的存储和查询引擎&#xff0c;负责存储日…...

安全见闻(6)——开阔眼界,不做井底之蛙

内容预览 ≧∀≦ゞ 安全见闻六&#xff1a;通讯协议安全问题剖析声明引言一、通讯协议的保密性问题二、通讯协议的完整性问题三、身份验证问题四、可用性问题五、通讯协议的实现问题六、协议设计缺陷七、移动通讯协议的安全问题八、物联网通讯协议的安全问题九、工业控制系统通…...

GRU神经网络理解

全文参考以下B站视频及《神经网络与深度学习》邱锡鹏&#xff0c;侧重对GPU模型的理解&#xff0c;初学者入门自用记录&#xff0c;有问题请指正【重温经典】GRU循环神经网络 —— LSTM的轻量级版本&#xff0c;大白话讲解_哔哩哔哩_bilibili 更新门、重置门、学习与输出 注&a…...

Windows 10、Office 2016/2019 和 PPTP 和 L2TP协议即将退役,企业应尽早做好准备

关心微软技术和产品的朋友一定对这个网站很熟悉&#xff1a;https://microsoftgraveyard.com/&#xff0c;这里静静的躺着很多微软技术和产品。近日&#xff0c;微软又在准备一场新的“告别仪式”了&#xff0c;这次是 Windows 10、Office 2016/2019 和一些老旧的协议与技术。让…...

论文阅读:Guided Linear Upsampling

今天介绍一篇有趣的文章&#xff0c;Guided Linear Upsampling&#xff0c;基于引导的线性上采样&#xff0c;这是发表在 ACM transaction on Graphic 的一篇工作。 Abstract 引导上采样是加速高分辨率图像处理的一种有效方法。在本文中&#xff0c;文章作者提出了一种简单而…...

深度图和RGB图对齐

坐标系间的转换_坐标系转换-CSDN博客 深度图与彩色图的配准与对齐_彩色 深度 配准-CSDN博客 kinect 2.0 SDK学习笔记&#xff08;四&#xff09;--深度图与彩色图对齐_mapdepthframetocolorspace-CSDN博客 相机标定&#xff08;三&#xff09;-相机成像模型_相机小孔成像模型…...

滑动窗口与TCP的缓冲区(buff)的关系

‌滑动窗口与TCP的缓冲区&#xff08;buff&#xff09;有直接关联。‌ 滑动窗口机制是TCP协议中用于流量控制和拥塞控制的重要机制。滑动窗口实际上是一个操作系统开辟的缓存空间&#xff0c;用于指定无需等待确认应答即可继续发送数据的最大值。这个窗口大小&#xff08;win&…...

一款好用的搜索软件——everthing(搜索比文件资源管理器快)

everthing官网链接 在官网选择下载 1.下载后双击打开 2.点击OK&#xff08;需要其他语言自己选择&#xff09; 3.选择安装位置&#xff08;路径最好别带中文和空格&#xff09; 继续点击下一步 4. 点击下一步 5.继续点击安装 6.然后就完成了 7.点击打开然后就可以搜索了...

C#WPF的App.xaml启动第一个窗体的3种方式

WPF的App.xaml启动第一个窗体的3种方式 1.使用App.xaml的StartupUri属性启动&#xff08;推荐使用&#xff09; 在App.xaml文件中&#xff0c;你可以设置StartupUri属性来指定启动时显示的第一个窗口&#xff1a; <Application x:Class"浅看一眼WPF.App"xmlns&…...

【JAVA毕设】基于JAVA的酒店管理系统

一、项目介绍 本系统前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router实现动态路由&#xff0c;Ajax实现前后端通信&#xff0c;Element-plus组件库使页面快速成型。后端部分&#xff1a;采用SpringBoot作为开发框架&#xff0c;同时集成MyBatis、Redis、…...

聚类--机器学习西瓜书阅读笔记(六)

无监督学习&#xff1a;通过对无标记训练样本的学习&#xff0c;揭示数据内在规律和性质。 聚类试图将数据集中的样本划分为若干不相交的子集&#xff0c;聚类过程自动形成簇结构&#xff0c;簇对应的语义需要子集命名把握。 聚类过程可以作为单独的过程&#xff0c;寻找数据…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...

Docker拉取MySQL后数据库连接失败的解决方案

在使用Docker部署MySQL时&#xff0c;拉取并启动容器后&#xff0c;有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致&#xff0c;包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因&#xff0c;并提供解决方案。 一、确认MySQL容器的运行状态 …...

【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统

Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...