Skywalking 官网 (SW快速上手)
Skywalking 本地安装(windows为例)
skywalking
本次使用的是 apache-skywalking-apm-bin-es7(https://archive.apache.org/dist/skywalking),打开文件夹,打开目录 bin/ .bat 是windows 启动。点击之后会出钱两个command,这个时候就启动成功了。 打开localhost:8080,出现如下页面,启动成功 如果想改变8080端口,在 ==apache-skywalking-apm-bin-es7\webapp== 当中有webapp.yml文件,打开文件修改端口即可。
idea接入
在vm option当中加入以下命令
-javaagent:D:/###/skywalking/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar
-Dskywalking.agent.service_name=rare_disease
-Dskywalking.collector.backend_service=127.0.0.1:11800
其中第一行选择自己文件目录下apache-skywalking-apm-bin-es7/agentskywalking-agent.jar地址。
第二行则是自定义服务名,之后再skywalking上展示的就是这个服务名称。 第三行则是skywalking上报的路径端口。本地默认用11800端口 启动项目 表明skywalking成功的接进去了,之后则需要对当中随便一个接口进行一次访问,刷新skywalking,仪表盘当中就会有数据了
MySql 数据持久化
如何让skywalking监控数据持久化呢?在目录 ==apache-skywalking-apm-bin-es7\config== 文件夹中打开 application.yml文件 在storage:此处将 selector: ${SW_STORAGE:h2}改成你想要改成的存储方式,此处我们使用mysql 则:
selector: ${SW_STORAGE:mysql}
在下面的mysql配置当中,指定数据库为 swtest ,需要提前给swtest数据库建好。 之后修改下面的账户密码。 保存之后重新启动 startup.bat == 注意,此处有个小坑== 在 apache-skywalking-apm-bin-es7\oap-libs 当中缺少数据库连接的jar包,导致直接启动会出现闪退的问题。需要自己从本地maven仓库等地方将mysql的连接jar包拷贝一份过来 之后再次启动startup.bat,打开数据库,就会发现它会开始创建表 此时数据持久化就成功了
自定义链路追踪
首先加入pom依赖
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-trace</artifactId>
<version>8.5.0</version>
</dependency>
之后在需要追踪的方法上加上@Trace方法
这边写了个小demo
//controller
@GetMapping("/get")
@ResponseBody
@Trace
private ResponseDto<String> test(@RequestParam("uuid") final String uuid) {
return new ResponseDto(grapService.query(uuid));
}
// iservice
/**
* test skywalking trace
* @param uuid
* @return
*/
String query(String uuid);
//service
@Override
public String query(String uuid) {
return MD5.create().digestHex(uuid);
}
此时调用接口 可以在仪表盘 追踪下面看到详细信息。点击之后,还能看到跨度信息。 于此同时,我们可以将监控输入输出,在类上加上注解:
@Tags({@Tag(key = "parm",value = "arg[0]"),
@Tag(key = "return",value = "returnedObj")})
之后,我们就可以看到,这边可以打印入参出参了。入参出参当中的class一定要复写tostring方法,才能输出想要的值
性能剖析
此处我们可以在仪表盘当中新建任务,选择好想要监控的端口。 监控结束后出现结果,选择分析,会有详细的堆栈以及消耗时间 可以用来排查哪一步影响性能。(感觉与 Arthas 的 trace 命令有异曲同工之妙)
日志
//加入pom依赖
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-logback-1.x</artifactId>
<version>8.5.0</version>
</dependency>
创建logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 引入 Spring Boot 默认的 logback XML 配置文件 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!-- 日志的格式化 -->
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<Pattern>-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} [%tid] %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}</Pattern>
</layout>
</encoder>
</appender>
<appender name="grpc-log" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout">
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] %-5level %logger{36} -%msg%n</Pattern>
</layout>
</encoder>
</appender>
<!-- 设置 Appender -->
<root level="INFO">
<appender-ref ref="console"/>
<appender-ref ref="grpc-log"/>
</root>
</configuration>
启动成功后,调用即可将日志上传,在页面看到。
告警
官方文档 配置文件在 \apache-skywalking-apm-bin-es7\config 当中的alarm-setting.yml文件当中,可以配置回调函数,告警的时候调用微信/飞书等发送告警信息等。