skywalking分布式服务调用链路追踪APM应用监控

SkyWalking是一款开源的分布式系统APM工具,它具有对分布式系统进行调用链分析和故障诊断的能力。本攻略将解释如何安装和使用SkyWalking进行分布式服务调用链路追踪。

安装SkyWalking

  1. 下载SkyWalking安装包,官网文档下载链接为 https://skywalking.apache.org/downloads/

  2. 解压下载后的SkyWalking安装包,例如解压到“C:\skywalking”。

  3. 修改SkyWalking配置文件,打开文件“C:\skywalking\config\application.yml”进行修改。将以下两行配置的#号去掉,取消注释。

# name: default
# namespace: default

  1. 启动SkyWalking,进入解压目录执行命令:

C:\skywalking\bin\startup.bat

  1. 访问SkyWalking控制台,URL为http://localhost:12800

使用SkyWalking进行分布式服务调用链路追踪

  1. 配置服务端

  2. 在服务端的pom.xml文件中添加SkyWalking相关依赖

    xml
    <dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-trace</artifactId>
    <version>8.3.0</version>
    </dependency>

  3. 在服务端的启动类中添加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);
    

    }
    ```

  4. 配置客户端

  5. 在客户端的pom.xml文件中添加SkyWalking相关依赖

    xml
    <dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-trace</artifactId>
    <version>8.3.0</version>
    </dependency>

  6. 在客户端的请求方法中添加SkyWalking追踪配置

    java
    private void sendRequest() {
    try (Scope scope = ContextManager.createEntrySpan("SendRequest")) {
    // TODO 发送请求
    } catch (Throwable e) {
    ContextManager.activeSpan().errorOccurred().log(e);
    }
    }

  7. 查看调用链路追踪

访问SkyWalking控制台,可以看到已启动的服务应用,点击服务应用名称可以查看应用内的调用链路。点击调用链路可以查看每个服务节点的性能指标,包括请求响应时间、调用次数等指标。

示例说明

这里以一个简单的微服务调用为例,说明如何使用SkyWalking进行分布式服务调用链路追踪。

  1. 配置服务端

假设现有一个订单服务和一个库存服务,订单服务向库存服务发送请求查询库存信息。在订单服务的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);
   }

}
```

  1. 配置客户端

在订单服务中,向库存服务发送请求的方法中添加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 "";
}
}

  1. 浏览调用链路追踪

访问SkyWalking控制台,在服务管理页面可以看到已启动的服务应用。点击订单服务应用的名称,然后选择调用链路,即可看到从订单服务发起的微服务调用链路。可以查看每个服务节点的性能指标,检查每个节点的响应时间和错误率等指标,从而定位服务故障点。

SkyWalking适用于各种分布式系统,如微服务、云原生等。以上简单示例介绍了SkyWalking的部分功能,使用SkyWalking可以大大提高分布式系统的故障诊断效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:skywalking分布式服务调用链路追踪APM应用监控 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • 微信小程序使用百度AI识别接口的通用封装Promise详解

    微信小程序使用百度AI识别接口的通用封装Promise详解 1. 简介 本教程是针对微信小程序开发者,讲解如何使用百度AI识别接口,并提供了通用封装Promise,方便使用。 2. 百度AI识别接口介绍 2.1 接口列表 以下是百度AI提供的识别接口: 通用文字识别 通用文字识别(高精度版) 身份证识别 银行卡识别 驾驶证识别 行驶证识别 车牌识别 人脸检测…

    人工智能概论 2023年5月25日
    00
  • python sys模块使用方法介绍

    让我来为您详细讲解“python sys模块使用方法介绍”的完整攻略。 简介 sys是Python内置的标准库之一,提供了对Python解释器内部操作的访问,并提供了一些与解释器和系统相关的函数和变量。 主要功能有: 命令行参数(argv) 异常处理信息(exc_info、exit、settrace和setprofile) 标准输入/输出/错误流(stdin…

    人工智能概览 2023年5月25日
    00
  • python连接mongodb密码认证实例

    下面是完整的“Python连接MongoDB密码认证实例”攻略: 一、前提准备 安装MongoDB数据库 安装Python编程语言 安装pymongo库(需要用到pip命令) 二、创建MongoDB用户 在进行MongoDB的密码认证之前,需要先创建一个MongoDB用户,用户的信息包括用户名和密码。具体步骤如下: 打开MongoDB客户端,并连接到数据库。…

    人工智能概览 2023年5月25日
    00
  • MongoDB设计方法以及技巧示例详解

    MongoDB设计方法以及技巧示例详解 在使用 MongoDB 设计数据库时,需要考虑如何设置数据结构和索引,以及如何查询和优化查询。下面将介绍一些 MongoDB 的设计方法和技巧,并且提供两个示例帮助理解。 MongoDB 数据结构设计 MongoDB 是一种文档型数据库,数据以 BSON 格式存储。设计数据结构时,需要考虑如何组织数据和关联数据。 设计…

    人工智能概览 2023年5月25日
    00
  • django channels使用和配置及实现群聊

    下面我将为您详细讲解 Django Channels 的使用和配置以及如何实现群聊功能。 什么是 Django Channels Django Channels 是一个使用 WebSockets 和其他协议实现实时通信和异步处理的 Django 框架扩展。通过 Django Channels,我们可以很方便地构建具有实时通信能力的 Web 应用程序。 配置和…

    人工智能概论 2023年5月25日
    00
  • Python爬虫中urllib库的进阶学习

    接下来我将详细讲解一下“Python爬虫中urllib库的进阶学习”的完整攻略。 1. 前言 在Python爬虫的过程中,我们经常会用到urllib库来处理网络请求。虽然urllib库已经可以满足大多数基本的网络请求操作,但是对于一些高级的操作和处理需求,我们还需要进一步深入学习urllib库,掌握更多高级技巧。 2. urllib库简介 urllib是Py…

    人工智能概论 2023年5月25日
    00
  • android ocr——身份证识别的功能实现

    Android OCR——身份证识别的功能实现攻略 身份证识别是 OCR(Optical Character Recognition,光学字符识别)技术的一种应用。本篇攻略将介绍如何在 Android 应用中使用 OCR 技术识别身份证信息。 准备工作 OCR 引擎。国内常用的 OCR 引擎包括百度 OCR、腾讯 OCR、阿里 OCR。本文将以百度 OCR …

    人工智能概论 2023年5月25日
    00
  • Python绘制时钟的示例代码

    Python绘制时钟是一个基本的绘图程序,通过它我们可以熟悉Python 的绘图编程环境及其使用方法。下面我将为大家详细讲解如何使用Python编写时钟绘制程序。 1. 绘图库选择 一般Python绘图使用的库比较多,例如matplotlib、pycairo 等,本教程选取的是Python Tkinter 图形库,原因是它的使用简单,学习难度比较小。 2. …

    人工智能概论 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部