栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

微服务集成skywalking实现全链路日志追踪方案

微服务集成skywalking实现全链路日志追踪方案

目录

1、安装部署skywalking

1.1 环境准备

1.2 部署步骤

2、微服务整合skywalking实现链路监控

2.1 下载skywalking官方版本

2.2 将微服务引入skywalking监控

2.3 以上配置完成后启动服务即可实现链路监控

3、通过logback+ELFK实现全链路日志追踪

3.1 安装ELFK

3.2 添加依赖

3.3 logback文件配置

3.4 重启项目,调用测试接口

3.5 filebeat采集日志文件通过logstash输出到es

3.6 按上述配置启动filebeat,重新调用测试接口

4、tranceId在异步线程和feign调用过程中的传递

4.1 异步链路监控

4.2 feign调用的链路监控


1、安装部署skywalking

本节介绍通过docker-compose安装skywalking+es

1.1 环境准备
  • 安装docker和compose

1.2 部署步骤
  • 创建目录

mkdir -p /usr/local/skywalking/
cd /usr/local/skywalking/

  • 编写compose文件

vim docker-compose.yml

version: '3.8'
services:
  elasticsearch:
    image: elasticsearch:7.14.1
    container_name: elasticsearch
    restart: always
    ports:
      - 9200:9200
    healthcheck:
      test: ["CMD-SHELL", "curl --silent --fail localhost:9200/_cluster/health || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s
    environment:
      - discovery.type=single-node
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - TZ=Asia/Shanghai
    ulimits:
      memlock:
        soft: -1
        hard: -1
  oap:
    image: apache/skywalking-oap-server:8.1.0-es7
    container_name: oap
    depends_on:
      - elasticsearch
    links:
      - elasticsearch
    restart: always
    ports:
      - 11800:11800
      - 12800:12800
    healthcheck:
      test: ["CMD-SHELL", "/skywalking/bin/swctl"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s
    environment:
      TZ: Asia/Shanghai
      SW_STORAGE: elasticsearch7
      SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
  ui:
    image: apache/skywalking-ui:8.1.0
    container_name: ui
    depends_on:
      - oap
    links:
      - oap
    restart: always
    ports:
      - 8080:8080
    environment:
      TZ: Asia/Shanghai
      SW_OAP_ADDRESS: oap:12800
  • 启动

docker-compose up -d 

  • 访问首页(localhost:8080)

2、微服务整合skywalking实现链路监控

2.1 下载skywalking

https://archive.apache.org/dist/skywalking/8.1.0/apache-skywalking-apm-es7-8.1.0.tar.gz

2.2 微服务引入skywalking监控
  • 将下载的安装包解压到/usr/local/skywalking目录,找到skywalking-agent.jar

apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar

  • 将上述agent路径配置到微服务启动参数中,并配置环境变量如下:

-javaagent:/usr/local/skywalking/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar -Dskywalking.agent.service_name=art-mall-1 -Dskywalking.collector.backend_service=localhost:11800 

参数解释:

/usr/local/skywalking/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar本地agent的jar包位置
-Dskywalking.agent.service_name=art-mall-1注册到skywalking上的服务名称
-Dskywalking.collector.backend_service=localhost:11800skywalking接收agent发送采集数据的服务及端口

2.3 以上配置完成后启动服务即可实现链路监控
  • 仪表盘

  • 拓扑图

  • 追踪

3、通过logback+ELFK实现全链路日志追踪

3.1 安装ELFK

es在第一节中已安装,其他请自行百度安装!               

3.2 添加依赖

版本号与前面的skywalking对应 


    org.apache.skywalking
    apm-toolkit-logback-1.x
    8.1.0




    org.apache.skywalking
    apm-toolkit-trace
    8.1.0

3.3 logback文件配置



    
    art-logback

    
    
    
    

    
    
    
    
    
    
    
    

    
    
        
        
            
                ${CONSOLE_LOG_MDC_PATTERN}
            
        
    

    
    
        
        
            INFO
        
        
            ${LOG_HOME_LINUX}/info/info.%d{yyyy-MM-dd}.log
            
            30
            20GB
        
        
            UTF-8
            ${FILE_LOG_PATTERN}
        
    

    
    
        
        
            error
        
        
            ${LOG_HOME_LINUX}/error/error.%d{yyyy-MM-dd}.log
            
            30
            20GB
        
        
            UTF-8
            ${FILE_LOG_PATTERN}
        
    

    
    
    
        
            
            
            
            
        
    
    
    
        
            
            
        
    

配置项解释:

  • org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout

       logback通过配置该layout可获取skywalking生成的tranceId

  • [%X{tid}]

        可在日志的对应位置打印出tranceId,如:

        [TID:5f6c5312b8e7445187565b1cb7368cd7.94.16340474835950001]

3.4 重启项目,调用测试接口
  •  测试接口
@PostMapping(value = "/test")
public ArtMallResult testTranceId(@RequestParam String id){
    log.info("测试日志打印tranceId");
    return ArtMallResultBuild.buildSuccess("success");
}
  • 日志打印如下:
2021-10-12 22:17:18.297 [TID:5ccddc5f4d364a38bcad8e9ebbd3e18e.93.16340482375740001]  INFO 3417 --- [nio-8085-exec-1] c.y.y.a.m.c.c.PCCommodityController      : 测试日志打印tranceId

3.5 filebeat采集日志文件通过logstash输出到es

中间通过logstash中转是因为其有更好的过滤功能,可视情况决定是否使用logstash。

  • filebeat.yml配置文件
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/logs/info
@PostMapping(value = "/test1")
public ArtMallResult testTranceId(@RequestParam String id){
    ActiveSpan.tag("type", "异步任务多线程任务");
    testThreadPool.submit(RunnableWrapper.of(() -> {
        ActiveSpan.tag("type", "测试异步1");
        log.info("1-testThreadPool 测试一下tranceId的异步传递...");
    }));
    testThreadPool.submit(CallableWrapper.of(() -> {
        ActiveSpan.tag("type", "测试异步2");
        log.info("2-testThreadPool 测试一下tranceId的异步传递...");
        return null;
    }));
    return ArtMallResultBuild.buildSuccess("success");
}

        4、打印日志如下:

2021-10-13 10:31:53.605 [TID:2096e377f09744ac8004aaa0877bc707.91.16340923134680001]  INFO 4404 --- [nio-8085-exec-1] com.yun.ying.art.mall.filter.CorsFilter  : request path : /pc/commodity/test1
2021-10-13 10:31:54.348 [TID:2096e377f09744ac8004aaa0877bc707.91.16340923134680001]  INFO 4404 --- [testThreadPool1] c.y.y.a.m.c.c.PCCommodityController      : 1-testThreadPool 测试一下tranceId的异步传递...
2021-10-13 10:31:54.365 [TID:2096e377f09744ac8004aaa0877bc707.91.16340923134680001]  INFO 4404 --- [testThreadPool2] c.y.y.a.m.c.c.PCCommodityController      : 2-testThreadPool 测试一下tranceId的异步传递...

        5、链路追踪展示

4.2 feign调用的链路监控

参考第2节内容,为每个微服务都整合skywalking的链路监控即可

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/327263.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号