docker-compose搭建skywalking

SkyWalking 架构图

 架构组成


 SkyWalking Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。而我们目前采用的是,SkyWalking Agent 收集 SkyWalking Tracing 数据,传递给服务器。
SkyWalking OAP :负责接收 Agent 发送的 Tracing 数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。
Storage :Tracing 数据存储。目前支持 ES、MySQL、Sharding Sphere、TiDB、H2 多种存储器。而我们目前采用的是 ES ,主要考虑是 SkyWalking 开发团队自己的生产环境采用 ES 为主。
SkyWalking UI :负责提供控台,查看链路等等。


服务搭建


基于docker-compose搭建单机版skywalking


docker-compose.yml文件内容

version: '3.5'
services:
  elasticsearch:
    image: elasticsearch:6.8.1
    container_name: elasticsearch-6.8.1
    restart: always
    ports:
      - 9200:9200
    environment:
      discovery.type: single-node  #es单机模式
      TZ: Asia/Shanghai  #时区设置
      TAKE_FILE_OWNERSHIP: true  #解决 volumes 挂载权限问题
      ES_JAVA_OPTS: -Xms256m -Xmx256m ##jvm内存分配为256MB
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./elasticsearch/data:/usr/share/elasticsearch/data
  oap:
    image: apache/skywalking-oap-server:8.5.0-es6
    container_name: skywalking-oap-8.5.0
    depends_on:
      - elasticsearch
    links:
      - elasticsearch
    restart: always
    ports:
      - 11800:11800
      - 12800:12800
    environment:
      SW_STORAGE: elasticsearch
      SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
      SW_HEALTH_CHECKER: default
      SW_TELEMETRY: prometheus
    healthcheck:
      test: ["CMD", "./bin/swctl", "ch"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s
  ui:
    image: apache/skywalking-ui:8.5.0
    container_name: skywalking-ui-8.5.0
    depends_on:
      - oap
    links:
      - oap
    restart: always
    ports:
      - 8888:8080
    environment:
      SW_OAP_ADDRESS: oap:12800

启动skywalking 容器

#启动容器
docker-compose up -d 
 
#查看启动的容器
docker ps

skywalking-oap 和 skywalking-ui容器时区问题

启动容器后进入skywalking 容器发现时区不是东八区,时间与现在时间相差八小时

而直接使用下面两种配置设置skywalking容器时区是无法生效的

environment:
- TZ=Asia/Shanghai
- TIME_ZONE=Asia/Shanghai
增加映射:
volumes:
- /etc/localtime:/etc/localtime:ro

原因是skywalking容器使用的是 alpine linux镜像, 当前默认不含时区数据包的

解决方法:

进入容器内部
docker exec -it [container id OR container name ] /bin/bash
查看Linux内核版本
cat /etc/issue
安装时区数据包
apk add tzdata
映射时区文件
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
查看时间和时区
date -R

测试服务是否搭建成功


skywalking UI 主界面地址:http://localhost:8888/     #localhost 可替换为你的宿主机ip

SpringBoot与skywalking服务的集成


skywalking中文文档:https://github.com/SkyAPM/document-cn-translation-of-skywalking

官方地址:http://skywalking.apache.org/

Skywalking Agent 


负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。而我们目前采用的是,SkyWalking Agent 收集 SkyWalking Tracing 数据,传递给服务器。

下载skywalking 安装包:

国内下载地址:https://mirrors.cloud.tencent.com/apache/skywalking/

官方地址:http://skywalking.apache.org/downloads/

将下载好的安装包解压,进入安装包,我们需要将 agent 目录,拷贝到 Java 应用所在的服务器上。这样,Java 应用才可以配置使用该 SkyWalking Agent。我们来看看 Agent 目录下有哪些:

drwxrwxr-x@  10 root  staff       320  4  9 22:47 activations/
drwxrwxr-x@   4 root  staff       128  4  9 22:47 bootstrap-plugins/
drwxrwxr-x@   3 root  staff        96  4  9 22:11 config/
drwxrwxr-x@   3 root  staff        96  4 18 01:03 logs/
drwxrwxr-x@  13 root  staff       416  4  9 22:51 optional-plugins/ #可选插件
drwxrwxr-x@   3 root  staff        96  4  9 22:51 optional-reporter-plugins/
drwxrwxr-x@ 102 root staff      3264  4  9 22:43 plugins/  #插件
-rw-rw-r--@     root  staff  18082886  4  9 22:11 skywalking-agent.jar  # SkyWalking Agent

SpringBoot工程搭建

新建一个SpringBoot工程,命名springboot-skywalking-test

pom.xml文件



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.4.5
         
    
    com.castlzl
    springboot-skywalking-test
    0.0.1-SNAPSHOT
    springboot-skywalking-test
    Demo project for Spring Boot
    
        1.8
    
    
        
            org.springframework.boot
            spring-boot-starter-web
        
 
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    
 
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    
 

 

新建一个SkyWalkingController接口类

@RestController
@RequestMapping("/test")
public class SkyWalkingController {
 
    @GetMapping("/hello")
    public String hello() {
        return "this is springboot skywalking test";
    }
}

IDEA启动项配置

选择Edit Configurations 

 

 

#skywalking-agent.jar 为本机绝对路径
-javaagent:/Users/leiziliang/my_gitee/skywalking-apm/agent/skywalking-agent.jar 
#SW_AGENT_NAME 服务名称
#SW_AGENT_COLLECTOR_BACKEND_SERVICES 连接skywalking oap 后台服务的地址
SW_AGENT_NAME=springboot-skywalking-test;SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800

执行 springboot 启动类启动服务

如果说控制台打印如下日志,说明 SkyWalking Agent 加载成功:

DEBUG 2021-04-18 15:36:53:166 main AgentPackagePath : The beacon class location is jar:file:/Users/leiziliang/my_gitee/skywalking-apm/agent/skywalking-agent.jar!/org/apache/skywalking/apm/agent/core/boot/AgentPackagePath.class. 
INFO 2021-04-18 15:36:53:169 main SnifferConfigInitializer : Config file found in /Users/leiziliang/my_gitee/skywalking-apm/agent/config/agent.config. 

接口请求

打开浏览器请求上面定义好的接口 http://localhost:8880/test/hello ,我们要追踪下该链路。

以上springboot 源码已上传,地址:https://gitee.com/castdlg/springboot-skywalking-test.git

skywalking UI主界面说明


使用浏览器,打开 http://127.0.0.1:8080/ 地址,进入 SkyWalking UI 界面。如下图所示:

 点击「拓扑图」菜单,进入查看拓扑图的界面,可以看到 SpringMVC 小方块。如下图所示:

 点击「追踪」菜单,进入查看链路数据的界面。如下图所示:

 

这里面更详细的记录了springboot 服务集成其他中间件与skywalking的集成链路追踪,有兴趣的可以进去看看,作者写的非常详细

参考链接:https://blog.csdn.net/weixin_42073629/article/details/106775584 
 

你可能感兴趣的:(Java进阶学习,docker,skywalking,容器)