13.SpringCloud - Spring Cloud Alibaba 之 SkyWalking 分布式链路跟踪;服务,端点,实例;IDEA配置;告警(十三)
13.SpringCloud - Spring Cloud Alibaba 之 SkyWalking 分布式链路跟踪;服务,端点,实例;IDEA配置;告警(十三)
阅读本文前参考
https://blog.csdn.net/MinggeQingchun/article/details/125977930
一、SkyWalking 服务,端点,实例
1、服务(Service) ****:****表示对请求提供相同行为的一系列或一组工作负载,在使用Agent时,可以定义服务的名字,我们可以看到 Spring Boot 应用服务为 "springboot-2-hello",就是我们在环境变量 SW_AGENT_NAME 中所定义的;
****2、服务实例(Service Instance) :****上述的一组工作负载中的每一个工作负载称为一个实例, 一个服务实例实际就是操作系统上的一个真实进程;
这里我们可以看到 Spring Boot 应用的服务为 {agent_name}-pid:{pid}@{hostname},由 Agent 自动生成;
****3、端点(Endpoint) :****对于特定服务所接收的请求路径, 如HTTP的URI路径和gRPC服务的类名 + 方法签名;
我们可以看到 Spring Boot 应用的一个端点,为API接口 /index
二、IDEA中使用SkyWalking
1、application.properties配置文件
server.port=8081
server.servlet.context-path=/springboot-2-hello
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp
2、controller测试类
@Controller
public class MyController {
@RequestMapping("/hellospringboot")
@ResponseBody
public String helloSpringBoot(){
return "欢迎使用SpringBoot框架";
}
}
3、在运行的程序配置jvm参数和环境变量参数
VM options:-javaagent:D:\SoftDevelopMentTools\SkyWalking\apache-skywalking-java-agent-8.8.0\skywalking-agent\skywalking-agent.jar
注:Windows下安装 agent 的路径
Environment Variables:SW_AGENT_COLLECTOR_BACKEND_SERVICES=192.168.133.129:11800;SW_AGENT_NAME=springboot-2-hello-idea
注:Linux远程服务器的IP地址
4、可看到本地运行 springboot 项目 控制台输出
DEBUG 2022-07-26 15:10:57:088 main AgentPackagePath : The beacon class location is jar:file:/D:/SoftDevelopMentTools/SkyWalking/apache-skywalking-java-agent-8.8.0/skywalking-agent/skywalking-agent.jar!/org/apache/skywalking/apm/agent/core/boot/AgentPackagePath.class.
INFO 2022-07-26 15:10:57:090 main SnifferConfigInitializer : Config file found in D:\SoftDevelopMentTools\SkyWalking\apache-skywalking-java-agent-8.8.0\skywalking-agent\config\agent.config.
5、输入访问
三、SkyWalking告警通知
skywalking告警的核心由一组规则驱动,这些规则定义在
/xx/apache-skywalking-apm-bin/config/alarm-settings.yml 文件
告警规则的定义分为三部分:
1、告警规则:它们定义了应该如何触发度量警报,应该考虑什么条件
2、网络钩子(Webhook}:当警告触发时,哪些服务终端需要被通知
3、gRPC钩子:远程gRPC方法的主机和端口,告警触发后调用
为了方便,skywalking发行版中提供了默认的alarm-setting.yml文件,包括一些规则,每个规则有英文注释,可以根据注释得知每个规则的作用;
如 service_resp_time_rule 规则:
service_resp_time_rule:
metrics-name: service_resp_time
op: ">"
threshold: 1000
period: 10
count: 3
silence-period: 5
message: Response time of service {name} is more than 1000ms in 3 minutes of last 10 minutes.
该规则表示服务{name}的响应时间在最近10分钟的3分钟内超过1000ms;
只有我们的服务请求符合alarm-setting.yml文件中的某一条规则就会触发告警;
Webhook回调通知
SkyWalking告警Webhook回调要求接收方是一个Web容器(如Tomcat服务),告警的消息会通过HTTP请求进行发送, 请求方法为POST, Content-Type为application/json, JSON格式基于
List<org.apache.skywalking.oap.server.core.alarm.AlarmMessage>的集合
package org.apache.skywalking.oap.server.core.alarm;
import lombok.Getter;
import lombok.Setter;
import org.apache.skywalking.oap.server.core.analysis.manual.searchtag.Tag;
import java.util.List;
/**
* Alarm message represents the details of each alarm.
*/
@Setter
@Getter
public class AlarmMessage {
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;
}
1、scopeId:所有可用的Scope请查阅
org.apache.skywalking.oap.server.core.source.DefaultScopeDefine
2、name:目标 Scope 的实体名称
3、id0:Scope 实体的 ID
4、id1:未使用
5、ruleName:在 alarm-settings.yml 中配置的规则名
6、alarmMessage:报警消息内容;
7、startTime:告警时间, 位于当前时间与 UTC 1970/1/1 之间
告警应用
1、/xx/apache-skywalking-apm-bin/config/alarm-settings.yml 文件 配置告警规则
该规则表示服务{name}的响应时间在最近10分钟的3分钟内超过1000ms
2、配置Webhook回调通知!!!
webhooks:
- http:10.10.67.27:8081/notify
# - http://127.0.0.1/notify/
# - http://127.0.0.1/go-wechat/
输出到本地 IP 下的 notify接口
3、编写controller测试类,notify 接口 对应上述 Webhook回调通知 webhooks:
- http:10.10.67.27:8081/notify
@Controller
public class MyController {
@RequestMapping("/hellospringboot")
@ResponseBody
public String helloSpringBoot(){
return "欢迎使用SpringBoot框架";
}
@RequestMapping("/timeout")
public @ResponseBody String timeout(){
try{
Thread.sleep(2000L);
}catch (InterruptedException e){
e.printStackTrace();
}
return "timeout";
}
@RequestMapping("/notify")
public void notify(@RequestBody Object object){
//给技术负责人发送警告短信、邮件等通知
System.out.println(object.toString());
}
}
4、IDEA中配置使用SkyWalking
-javaagent:D:\SoftDevelopMentTools\SkyWalking\apache-skywalking-java-agent-8.8.0\skywalking-agent\skywalking-agent.jar
SW_AGENT_COLLECTOR_BACKEND_SERVICES=192.168.133.129:11800;SW_AGENT_NAME=springboot-1-hello-idea
5、启动运行,浏览器输入访问
6、SkyWalking-UI 查看告警
IDEA控制台输出告警信息
来源:https://blog.csdn.net/MinggeQingchun/article/details/125994559