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控制台输出告警信息

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值