SkyWalking是一款开源的分布式系统APM工具,它具有对分布式系统进行调用链分析和故障诊断的能力。本攻略将解释如何安装和使用SkyWalking进行分布式服务调用链路追踪。
安装SkyWalking
-
下载SkyWalking安装包,官网文档下载链接为 https://skywalking.apache.org/downloads/。
-
解压下载后的SkyWalking安装包,例如解压到“C:\skywalking”。
-
修改SkyWalking配置文件,打开文件“C:\skywalking\config\application.yml”进行修改。将以下两行配置的#号去掉,取消注释。
# name: default
# namespace: default
- 启动SkyWalking,进入解压目录执行命令:
C:\skywalking\bin\startup.bat
- 访问SkyWalking控制台,URL为http://localhost:12800。
使用SkyWalking进行分布式服务调用链路追踪
-
配置服务端
-
在服务端的pom.xml文件中添加SkyWalking相关依赖
xml
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-trace</artifactId>
<version>8.3.0</version>
</dependency> -
在服务端的启动类中添加SkyWalking启动配置
```java
public static void main(String[] args) {
SkyWalking.setConfigService(new ConfigService() {
@Override
public String getAgentConfig() {
return null;
}@Override public String getDefaultConfig() { return null; } }); SpringApplication.run(MyApplication.class, args);
}
``` -
配置客户端
-
在客户端的pom.xml文件中添加SkyWalking相关依赖
xml
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-trace</artifactId>
<version>8.3.0</version>
</dependency> -
在客户端的请求方法中添加SkyWalking追踪配置
java
private void sendRequest() {
try (Scope scope = ContextManager.createEntrySpan("SendRequest")) {
// TODO 发送请求
} catch (Throwable e) {
ContextManager.activeSpan().errorOccurred().log(e);
}
} -
查看调用链路追踪
访问SkyWalking控制台,可以看到已启动的服务应用,点击服务应用名称可以查看应用内的调用链路。点击调用链路可以查看每个服务节点的性能指标,包括请求响应时间、调用次数等指标。
示例说明
这里以一个简单的微服务调用为例,说明如何使用SkyWalking进行分布式服务调用链路追踪。
- 配置服务端
假设现有一个订单服务和一个库存服务,订单服务向库存服务发送请求查询库存信息。在订单服务的pom.xml文件种添加SkyWalking相关依赖,然后在启动类中添加SkyWalking启动配置。其中SkyWalking.setConfigService()方法需要传入一个ConfigService实例,在本例中返回null即可。
```java
@SpringBootApplication
public class OrderServiceApplication {
public static void main(String[] args) {
SkyWalking.setConfigService(new ConfigService() {
@Override
public String getAgentConfig() {
return null;
}
@Override
public String getDefaultConfig() {
return null;
}
});
SpringApplication.run(OrderServiceApplication.class, args);
}
}
```
- 配置客户端
在订单服务中,向库存服务发送请求的方法中添加SkyWalking的追踪配置。需要将发送请求的代码块放入try语句块中,确保在请求正常处理和异常情况下都可以正确记录追踪信息。
java
private String queryInventory(String pid) {
try (Scope scope = ContextManager.createLocalSpan("queryInventory")) {
RestTemplate template = new RestTemplate();
String url = "http://localhost:9090/queryInventory?pid=" + pid;
ResponseEntity<String> responseEntity = template.getForEntity(url, String.class);
return responseEntity.getBody();
} catch (Throwable e) {
ContextManager.activeSpan().errorOccurred().log(e);
return "";
}
}
- 浏览调用链路追踪
访问SkyWalking控制台,在服务管理页面可以看到已启动的服务应用。点击订单服务应用的名称,然后选择调用链路,即可看到从订单服务发起的微服务调用链路。可以查看每个服务节点的性能指标,检查每个节点的响应时间和错误率等指标,从而定位服务故障点。
SkyWalking适用于各种分布式系统,如微服务、云原生等。以上简单示例介绍了SkyWalking的部分功能,使用SkyWalking可以大大提高分布式系统的故障诊断效率。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:skywalking分布式服务调用链路追踪APM应用监控 - Python技术站