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

Spring Cloud【SkyWalking网络钩子Webhooks、SkyWalking钉钉告警、SkyWalking邮件告警】(十六)

 

目录

分布式请求链路追踪_SkyWalking网络钩子Webhooks

分布式请求链路追踪_SkyWalking钉钉告警

分布式请求链路追踪_SkyWalking邮件告警


 

分布式请求链路追踪_SkyWalking网络钩子Webhooks

Wbhooks网络钩子 

Webhok可以简单理解为是一种Web层面的回调机制。告警就是一个事件,当事件发生时Skywalking会主动调用一个配置好的接口, 这个接口就是所谓的Webhook;

注意:

Skywalking的告警消息会通过借HTTP请求进行发送,请求方法为 POST (Content-Type 为application/json。其JSON数据实基于List进行序列化的。  

JSON数据示例 

[{"scopeId": 1,"scope": "SERVICE","name": "serviceA","id0": "12",  "id1": "",  "ruleName": "service_resp_time_rule","alarmMessage": "alarmMessage xxxx","startTime": 1560524171000
}]

创建项目cloud-alarm9090

引入依赖 

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.22</version></dependency>

创建接收实体类AlarmMessageDto

 https://github.com/apache/skywalking/blob/v8.5.0/docs/en/set up/backend/backend-alarm.md

import lombok.Data;
@Data
public class AlarmMessageDto {private int scopeId;private String scope;private String name;private String id0;private String id1;private String ruleName;private String alarmMessage;private List<Tag> tags;private long startTime;private transient int period;private transient boolean onlyAsCondition;@Datapublic static class Tag{private String key;private String value;}
}

 编写钩子接口

    /*** 订单机器人通知的*/@PostMapping("dingding")public void sendDinding(@RequestBody List<AlarmMessageDto> alarmMessageDtoList) {StringBuilder builder = new StringBuilder();alarmMessageDtoList.forEach(info ->{builder.append("\nscopeId:").append(info.getScopeId()).append("\nScope实体:").append(info.getScope()).append("\n告警消息:").append(info.getAlarmMessage()).append("\n告警规则:").append(info.getRuleName()).append("\n\n------------------------\n\n");});}

配置网络钩子

alarm-settings.yml 增加alarm接口

回调失败

关闭windows防火墙 

搜索防火墙 

关闭防火墙 

实时效果反馈

1.Webhok可以简单理解为是一种Web层面的_____机制。

A 回调 

B 请求

C 告警

D 以上都是错误

分布式请求链路追踪_SkyWalking钉钉告警

前言 

缺点: 实际项目中,我们不会一直看着告警菜单。希望有告警信息产生时,将告警信息通过邮件或者短信发送给相关负责人。 

 

钉钉告警 

创建群聊

添加智能助手 

添加机器人 

选择机器人 

 配置加签

POM引入钉钉工具包依赖 

<!--钉钉工具包-->
<dependency><groupId>com.aliyun</groupId><artifactId>alibaba-dingtalk-service-sdk</artifactId><version>2.0.0</version>
</dependency>

创建application.yml

server:port: 9090
dingding:#地址webhook: https://oapi.dingtalk.com/robot/send?access_token=7915a428336dd933247d019420032bb72e920f459920cc581c42c61d46da7e46#密钥secret: SECa38500986415fc1404ad36415d8846f432db49936f9fb7f4d0ab5260e69ca82e

编写发送接口

@Slf4j
@RestController
@RequestMapping("alarm")
public class AlarmController {@Value("${dingding.webhook}")private String webhook;@Value("${dingding.secret}")private String secret;/*** 钉钉机器人通知* @param alarmMessageList*/@PostMapping("pushData")public void alarm(@RequestBody
List<AlarmMessageDto> alarmMessageList) {log.info("alarmMessage:{}", alarmMessageList.toString());alarmMessageList.forEach(info -> {try {// 当前时间戳Long timestamp = System.currentTimeMillis();String stringToSign = timestamp + "\n" + secret;/*** Mac算法是带有密钥的消息摘要算法* 初始化HmacMD5摘要算法的密钥产生器*/Mac mac = Mac.getInstance("HmacSHA256");// 初始化macmac.init(new SecretKeySpec(secret.getBytes("UTF-8"),"HmacSHA256"));// 执行消息摘要byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));// 拼接签名String sign = "&timestamp=" + timestamp + "&sign=" + URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8");// 构建钉钉发送客户端工具DingTalkClient client = new DefaultDingTalkClient(webhook + sign);// 设置消息类型OapiRobotSendRequest request = new OapiRobotSendRequest();request.setMsgtype("text");// 设置告警信息OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();text.setContent("业务告警:\n" + info.getAlarmMessage());request.setText(text);// 接受人OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();at.setAtMobiles(Arrays.asList("所有人"));request.setAt(at);OapiRobotSendResponse response = client.execute(request);} catch (Exception e) {e.printStackTrace();}});}
}

分布式请求链路追踪_SkyWalking邮件告警

邮件发送原理 

SMTP 协议全称为 Simple Mail Transfer Protocol,译作简单邮件传输协议,它定义了邮件客户端软件与 SMTP 服务器之间,以及 SMTP 服务器与 SMTP 服务器之间的通信规则。

 

授权过程 

所以在使用springboot发送邮件之前,要开启POP3和SMTP协议, 需要获得邮件服务器的授权码,这里以qq邮箱为例,展示获取授权码的过程:

成功后会出现 

POM引入依赖 

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId>
</dependency>

配置邮箱基本信息

spring:mail:# 配置 SMTP 服务器地址host: smtp.qq.com# 发送者邮箱username: 877910962@qq.com# 配置密码,注意不是真正的密码,而是刚刚申请到的授权码password: izkmheghgpvmbfeg# 默认的邮件编码为UTF-8default-encoding: UTF-8properties:mail:smtp:#需要验证用户名密码auth: truestarttls:# 设置为配置SMTP连接的属性。要使用STARTTLS,必须设置以下属性enable: truerequired: true

注意:

1、126邮箱SMTP服务器地址:smtp.126.com,端口号:465或者994

2、163邮箱SMTP服务器地址:smtp.163.com,端口号:465或者994

3、yeah邮箱SMTP服务器地址:smtp.yeah.net,端口号:465或者994

4、qq邮箱SMTP服务器地址:smtp.qq.com,端口号465或587

编写接口 

@GetMapping("sendMail")public void sendEmail(@RequestBody List<AlarmMessage> alarmMessages) {alarmMessages.forEach(info->{SimpleMailMessage simpleMailMessage = new SimpleMailMessage();// 发件人simpleMailMessage.setFrom("877910962@qq.com");// 收件人simpleMailMessage.setTo("877910962@qq.com");// 邮件主题simpleMailMessage.setSubject(info.getScope());// 邮件内容simpleMailMessage.setText(info.getAlarmMessage());javaMailSender.send(simpleMailMessage);});}

实时效果反馈 1.简单的邮件协议_____。

A RPC

B HTTP

C TCP

D SMTP

相关文章:

Spring Cloud【SkyWalking网络钩子Webhooks、SkyWalking钉钉告警、SkyWalking邮件告警】(十六)

目录 分布式请求链路追踪_SkyWalking网络钩子Webhooks 分布式请求链路追踪_SkyWalking钉钉告警 分布式请求链路追踪_SkyWalking邮件告警 分布式请求链路追踪_SkyWalking网络钩子Webhooks Wbhooks网络钩子 Webhok可以简单理解为是一种Web层面的回调机制。告警就是一个事件&a…...

【力扣每日一题】2023.7.25 将数组和减半的最少操作次数

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码运行结果&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 题目给我们一个数组&#xff0c;我们每次可以将任意一个元素减半&#xff0c;问我们操作几次之后才可以将整个数组的和减半&…...

Docker-Compose 轻松搭建 Grafana+InfluxDb 实用 Jmeter 监控面板

目录 前言&#xff1a; 1、背景 2、GranfanaInfluxDB 配置 2.1 服务搭建 2.2 配置 Grafana 数据源 2.3 配置 Grafana 面板 3、Jmeter 配置 3.1 配置 InfluxDB 监听器 3.2 实际效果 前言&#xff1a; Grafana 和 InfluxDB 是两个非常流行的监控工具&#xff0c;它们可…...

异构线程池的c++实现方案

概要 通常线程池是同质的&#xff0c;每个线程都可以执行任意的task&#xff08;每个线程中的task顺序执行&#xff09;&#xff0c;如下图所示&#xff1a; 但本文所介绍的线程和task之间有绑定关系&#xff0c;如A task只能跑在A thread上&#xff08;因此称为异构线程池&am…...

Python实现抽象工厂模式

抽象工厂模式是一种创建型设计模式&#xff0c;用于创建一系列相关或依赖对象的家族&#xff0c;而无需指定具体类。在Python中&#xff0c;可以通过类和接口的组合来实现抽象工厂模式。 下面是一个简单的Python实现抽象工厂模式的示例&#xff1a; # 抽象产品接口 class Abs…...

@vue/cli安装

vue/cli安装 1、全局安装vue/cli包2、查看是否成功 1、全局安装vue/cli包 yarn global add vue/cli2、查看是否成功 vue -V...

用友全版本任意文件上传漏洞复现

声明 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 文章作者拥有对此文章的修改和解释权。如欲转载或传播此文章&#xff0c…...

程序员面试系列,MySQL常见面试题?

原文链接 一、索引相关的面试题 &#xff08;1&#xff09;索引失效的情况有哪些 在MySQL查询时&#xff0c;以下情况可能会导致索引失效&#xff0c;无法使用索引进行高效的查询&#xff1a; 数据类型不匹配&#xff1a;如果查询条件中的数据类型与索引列的数据类型不匹配&…...

前端Web实战:从零打造一个类Visio的流程图拓扑图绘图工具

前言 大家好&#xff0c;本系列从Web前端实战的角度&#xff0c;给大家分享介绍如何从零打造一个自己专属的绘图工具&#xff0c;实现流程图、拓扑图、脑图等类Visio的绘图工具。 你将收获 免费好用、专属自己的绘图工具前端项目实战学习如何从0搭建一个前端项目等基础框架项…...

2023牛客暑期多校第二场部分题解

索引 ABCDEFGHIK A 队友开的题&#xff0c;说是其实就是问能不能用若干个数异或出来某个数。 应该就是线性基板子&#xff0c;然后他写了一下就过了。 B 一开始看没什么人过不是很敢开&#xff0c;结果到后面一看题——这不是最大权闭合子图板子吗&#xff1f;&#xff1f;…...

20230724将真我Realme手机GT NEO3连接到WIN10的电脑的步骤

20230724将真我Realme手机GT NEO3连接到WIN10的电脑的步骤 2023/7/24 23:23 缘起&#xff1a;因为找使用IMX766的手机&#xff0c;找到Realme手机GT NEO3了。 同样使用IMX766的还有&#xff1a;Redmi Note12Pro 5G IMX766 旗舰影像 OIS光学防抖 OLED柔性直屏 8GB256GB时光蓝 现…...

黑马 pink h5+css3+移动端前端

网页概念 网页是网站的一页,网页有很多元素组成,包括视频图片文字视频链接等等,以.htm和.html后缀结尾,俗称html文件 HTML 超文本标记语言,描述网页语言,不是编程语言,是标记语言,有标签组成 超文本指的是不光文本,还有图片视频等等标签 常用浏览器 firefox google safari…...

Docker的七项优秀实践

众所周知&#xff0c;作为一个文本文档&#xff0c;Dockerfile包含了用户创建镜像的所有命令和说明。Docker可以通过读取Dockerfile中指令的方式&#xff0c;去自动构建镜像。因此&#xff0c;大家往往认为编写Dockerfile理应非常简单&#xff0c;只需从互联网上选择一个示例&a…...

【数据结构】24王道考研笔记——图

六、图 目录 六、图定义及基本术语图的定义有向图以及无向图简单图以及多重图度顶点-顶点间关系连通图、强连通图子图连通分量强连通分量生成树生成森林边的权、带权网/图特殊形态的图 图的存储及基本操作邻接矩阵邻接表法十字链表邻接多重表分析对比图的基本操作 图的遍历广度…...

zabbix钉钉报警

登录钉钉客户端,创建一个群,把需要收到报警信息的人员都拉到这个群内. 然后点击群右上角 的"群机器人"->"添加机器人"->"自定义", 记录该机器人的webhook值。 添加机器人 在钉钉群中&#xff0c;找到只能群助手 添加机器人 选择自定义机…...

Spring 源码解读

1、Spring 的结构组成 1.1、核心类介绍 Spring 中有两个最核心的类 1 DefaultListableBeanFactory XmlBeanFactory 继承自 DefaultListableBeanFactory&#xff0c;而DefaultListableBeanFactory 是整个 bean加载的核心部分&#xff0c;是 Spring 注册及加载 bean 的默认实现…...

练习时长两年半的网络安全防御“first”

1.网络安全常识及术语 下边基于这次攻击演示我们介绍一下网络安全的一些常识和术语。 资产 任何对组织业务具有价值的信息资产&#xff0c;包括计算机硬件、通信设施、 IT 环境、数据库、软件、文档资料、信息服务和人员等。 网络安全 网络安全是指网络系统的硬件、软件及…...

HttpRunner自动化测试之响应中文乱码处理

响应中文乱码&#xff1a; 当调用接口&#xff0c;响应正文返回的中文是乱码时&#xff0c;一般是响应正文的编码格式不为 utf-8 导致&#xff0c;此时需要根据实际的编码格式处理 示例&#xff1a; 图1中 extract 提取title标题&#xff0c;output 输出 title 变量值&#x…...

idea使用命令将jar包导入到maven仓库中

因为今天突然忘了命令&#xff0c;记下来方便以后查看 pom文件的依赖 jar包路径 进入idea中命令窗 输入命令 mvn install:install-file -DfileD:\Project\spring-cloud\dubbo-api\target\dubbo-api-1.0-SNAPSHOT.jar -DgroupIdcom.wmx -DartifactIddubbo-api -Dversion1.0…...

zookeeper学习(一) Standalone模式(单机模式)安装

安装准备 centos7环境jdk1.8环境zookeeper安装包 安装jdk 上传jdk安装包解压安装包到目录中 tar -zxvf jdk-8u361-linux-x64.tar.gz如果需要指定目录可以在后面加上 -C&#xff0c;如 tar -zxvf jdk-8u361-linux-x64.tar.gz -C 目录配置jdk环境变量 vim /etc/profile打开…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

关于 WASM:1. WASM 基础原理

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

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...