docker-compose 部署Skywalking 与 简单使用

1、版本

名称 版本
skywalking-oap-server 8.9.1
skywalking-ui 8.9.1
elasticsearch 7.14.2
java-agent 8.8.0

注意:

        不建议直接下载latest版本,因为latest版本号不明显,需要进一步查看,后面会导致奇奇怪怪的问题【亲身经历】。

2、skywalking单机部署

docker-compose.yml

version: '3.3'
services:
  elasticsearch:
    image: elasticsearch:7.14.2
    container_name: elasticsearch
    restart: always
    ports:
      - 9200:9200
    environment:
      - "TAKE_FILE_OWNERSHIP=true" #volumes 挂载权限 如果不想要挂载es文件改配置可以删除
      - "discovery.type=single-node" #单机模式启动
      - "TZ=Asia/Shanghai" # 设置时区
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m" # 设置jvm内存大小
    volumes:
      - ./elasticsearch/logs:/usr/share/elasticsearch/logs
      - ./elasticsearch/data:/usr/share/elasticsearch/data
      - ./elasticsearch/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    ulimits:
      memlock:
        soft: -1
        hard: -1
  skywalking-oap-server:
    image: apache/skywalking-oap-server:8.9.1
    container_name: skywalking-oap-server
    depends_on:
      - elasticsearch
    links:
      - elasticsearch
    restart: always
    ports:
      - 11800:11800
      - 12800:12800
    environment:
      SW_STORAGE: elasticsearch  # 指定ES版本
      SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
      TZ: Asia/Shanghai
    volumes:
     - ./oap/conf/alarm-settings.yml:/skywalking/config/alarm-settings.yml
  skywalking-ui:
    image: apache/skywalking-ui:8.9.1
    container_name: skywalking-ui
    depends_on:
      - skywalking-oap-server
    links:
      - skywalking-oap-server
    restart: always
    ports:
      - 8080:8080
    environment:
      SW_OAP_ADDRESS: http://skywalking-oap-server:12800
      TZ: Asia/Shanghai

具体配置可以skywalking官方github

执行命令

docker-compose up -d

等待大约2~3min,在浏览器中输入一下地址进行访问:

http://192.168.28.130:8080/

docker-compose 部署Skywalking 与 简单使用_第1张图片

注意:

        1、端口为 skywalking-ui中配置的端口

        2、skywalking首次启动后,在浏览器中访问,有可能会出现加载页面不完整的情况,此时只需要耐心等待2~3min后在刷新页面即可。

3、skywalking使用

agent代理使用【下载地址】(agent的使用需要将其拷贝至目标服务器,多少项目在一台服务器可以共用一个agent)

agent目录简介

docker-compose 部署Skywalking 与 简单使用_第2张图片

如果想要使用可选插件将其复制到plugins目录即可【需要重启应用程序生效】,不想用只需冲plugins目录中将插件删除【需要重启应用后生效(有的文章说可以不重启生效)】

idea 配置

在VM参数中增加如下配置

-javaagent:/Users/admin/software/skywalking-agent/skywalking-agent.jar=agent.service_name=${APPLICATION_NAME},collector.backend_service=192.168.28.130:11800

${APPLICATION_NAME}    应用程序名称

192.168.28.130:11800        skywalking服务器采集地址,端口是docker-compose.yml 中  skywalking-oap-server 配置的端口(默认为11800)

docker-compose 部署Skywalking 与 简单使用_第3张图片

 java -jar配置

java -javaagent:/Users/admin/software/skywalking-agent/skywalking-agent.jar=agent.service_name=${APPLICATION_NAME},collector.backend_service=192.168.28.130:11800 -jar SpringBoot-0.0.1-SNAPSHOT.jar

注意:javaagent 需配置在 -jar前面

详细使用请看官网介绍:java-agent使用教程

一切准备就绪后,启动项目

1)仪表盘

docker-compose 部署Skywalking 与 简单使用_第4张图片

可以APM 处看见当前服务

注意:

  1. 如果此处没有出现服务,可以尝试访问项目中的任意接口或者多刷新几次页面) 
  2. 如果还是没有可以查看agent目录下的日志看是否存在报错

docker-compose 部署Skywalking 与 简单使用_第5张图片

访问项目中任意接口

2)拓扑图

docker-compose 部署Skywalking 与 简单使用_第6张图片

点击服务本身可以展示各种指标

docker-compose 部署Skywalking 与 简单使用_第7张图片

 

 3)追踪

docker-compose 部署Skywalking 与 简单使用_第8张图片

docker-compose 部署Skywalking 与 简单使用_第9张图片 

可以在此处看见刚刚访问的接口以及耗时情况(如果此时搜索不出来,需注意时间范围是否正确

4、性能剖析 

如果在追踪中发现了访问异常慢的接口可以通过性能剖析对其进行分析

操作步骤

  1. 新建任务
  2. 选择服务(如果此处未出现服务名称选择,需要刷新时间)
  3. 配置端点名称(注意此处最好是从追踪里面获取端点名称,需要加上请求方式,之前由于没有添加请求方式,搞了好几天都不行,刚开始以为是部署的问题,反反复复搞了很久都没有解决,最后加上了请求方式,才搞定主要网上的资料都没有添加请求方式,此处还有一点需要注意的是,接口的请求路径是全路径,需要加上项目的contex-path才行
  4. 设置监控时间
  5. 采样数
  6. 点击新建任务请求配置的接口

 docker-compose 部署Skywalking 与 简单使用_第10张图片

 出现如下页面(如果Sampled Traces未出现注意刷新时间【这是skywalking唯一一个不友好的地方,不管访问任务页面都要注意时间的影响】

 docker-compose 部署Skywalking 与 简单使用_第11张图片

 点击分析按钮出现堆栈信息

docker-compose 部署Skywalking 与 简单使用_第12张图片

 可以看见耗时最下最长的信息。

5、日志采集

日志采集需要配合TraceId一起做,有一定的侵入性

在项目中引入jar包

注意此处由于我使用的日志框架是logback,如果使用其他日志框架需引入对应的jar包

目前支持的日志框架有:log4j、log4j2和 logback。


    org.apache.skywalking
    apm-toolkit-logback-1.x
    ${apm-toolkit.version}


    org.apache.skywalking
    apm-toolkit-trace
    ${apm-toolkit.version}

日志数据格式化



    
        
            %d{yyyy-MM-dd HH:mm:ss.SSS} [%ip] [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - [%tid] - %msg%n
        
    
    UTF-8 

日志采集


    
        
            
                %d{yyyy-MM-dd HH:mm:ss.SSS}  [%ip] %thread %logger %level - [%tid] %msg %n
            
        
    

完整配置文件

logback-spring.xml



    
    
    
    
    
    
    
    
    
    
    
    

    
    
        
            
                ${CONSOLE_LOG_PATTERN}
            
            
            UTF-8
        
    

    
    
        
        
            
                
                    %d{yyyy-MM-dd HH:mm:ss.SSS} [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - [%tid] - %msg%n
                
            
            UTF-8 
        

        
            
            ${LOG_HOME}/${APP_NAME}-%d{yyyy-MM-dd}-%i.log
            
            31
            
                30MB
            
        
    

    
    
        
            
                %d{yyyy-MM-dd HH:mm:ss.SSS}  %thread %logger %level - [%tid] %msg %n
            
        
    
    
    
        
            
            
            
        
    
    
        
            
        
    

待一切配置好后(重启项目)需要等待3~5min就可以看见日志信息了

docker-compose 部署Skywalking 与 简单使用_第13张图片


注意时间范围 

TraceId获取

配置了一个全局异常处理器,如果发生异常则返回TraceId,然后用该TraceId去查找相应的日志与链路信息

@ExceptionHandler(value = Exception.class)
@Trace
public ResponseModel handleException(Exception e) {
    log.error("异常堆栈=>", e);
    return ResponseModel.errorMsg(RepCodeEnum.BLANK_ERROR, TraceContext.traceId());
}

 定位链路

docker-compose 部署Skywalking 与 简单使用_第14张图片

点击相关日志进入日志详情

docker-compose 部署Skywalking 与 简单使用_第15张图片

 注意:日志的上传需要时间,不能立马获取到实时日志

参考

Skywalking官方文档

Skywalking UI介绍

Skywalking GitHub

你可能感兴趣的:(skywalking)