杭州网站开发建设,广告公司名字后缀,自动引流推广app,网站建设多少价格目录
分布式请求链路追踪_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 引入依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.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 ListTag 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 ListAlarmMessageDto 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引入钉钉工具包依赖
!--钉钉工具包--
dependencygroupIdcom.aliyun/groupIdartifactIdalibaba-dingtalk-service-sdk/artifactIdversion2.0.0/version
/dependency创建application.yml
server:port: 9090
dingding:#地址webhook: https://oapi.dingtalk.com/robot/send?access_token7915a428336dd933247d019420032bb72e920f459920cc581c42c61d46da7e46#密钥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
ListAlarmMessageDto 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引入依赖
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-mail/artifactId
/dependency配置邮箱基本信息
spring:mail:# 配置 SMTP 服务器地址host: smtp.qq.com# 发送者邮箱username: 877910962qq.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 ListAlarmMessage alarmMessages) {alarmMessages.forEach(info-{SimpleMailMessage simpleMailMessage new SimpleMailMessage();// 发件人simpleMailMessage.setFrom(877910962qq.com);// 收件人simpleMailMessage.setTo(877910962qq.com);// 邮件主题simpleMailMessage.setSubject(info.getScope());// 邮件内容simpleMailMessage.setText(info.getAlarmMessage());javaMailSender.send(simpleMailMessage);});}
实时效果反馈 1.简单的邮件协议_____。
A RPC
B HTTP
C TCP
D SMTP