SkyWalking搭建及使用指南

发布时间 2023-09-19 17:55:10作者: yifanSJ

一、docker-compose

version: '3.3'
services:
  es8:
    image: elasticsearch:8.4.2
    container_name: es8
    ports:
      - 9200:9200
      - 9300:9300
    environment:
      xpack.security.enabled: "false"
      discovery.type: "single-node" #单例模式
      ingest.geoip.downloader.enabled: "false"
      #锁定物理内存地址,防止es内存被交换出去,也就是避免es使用swap交换分区,频繁的交换,会导致IOPS变高
      bootstrap.memory_lock: "true"
      ES_JAVA_OPTS: "-Xms6g -Xmx6g" #堆内存大小
      TZ: Asia/Shanghai
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - /home/skywalking/elasticsearch/data:/usr/share/elasticsearch/data
 
  skywalking-oap:
    image: apache/skywalking-oap-server:9.3.0
    container_name: skywalking-oap
    restart: always
    depends_on:
      - es8
    links:
      - es8
    ports:
      - 11800:11800
      - 12800:12800
    environment:
      SW_CORE_RECORD_DATA_TTL: 7 #记录数据的有效期,单位天
      SW_CORE_METRICS_DATA_TTL: 7 #分析指标数据的有效期,单位天
      SW_ENABLE_UPDATE_UI_TEMPLATE: "true" # 开启dashboard编辑修改功能
      SW_HEALTH_CHECKER: default
      TZ: Asia/Shanghai
      SW_STORAGE: elasticsearch
      JAVA_OPTS: "-Xms2048m -Xmx2048m"
      #SW_STORAGE: elasticsearch7
      SW_STORAGE_ES_CLUSTER_NODES: es8:9200
    #volumes:
      #- ./config:/skywalking/config
 
  skywalking-ui:
    image: apache/skywalking-ui:9.3.0
    #image: apache/skywalking-ui:9.0.0
    container_name: skywalking-ui
    restart: always
    depends_on:
      - skywalking-oap
    links:
      - skywalking-oap
    ports:
      - 8080:8080
    environment:
      TZ: Asia/Shanghai
      SW_HEALTH_CHECKER: default
      SW_OAP_ADDRESS: http://skywalking-oap:12800
 
docker-compose up -d

等待大约2~3min,在浏览器中输入一下地址进行访问:http://192.168.28.130:8081/,但此时我们是没有服务的,需要搭配Agent插件

二、Agent插件

1. 下载Agent安装包

2. 启动项目

1)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

2)docker-compose启动(暂未验证

如果你使用 Docker Compose 启动的项目,并希望在容器中集成 SkyWalking 代理,可以按照以下步骤操作:

a. 创建一个 Dockerfile:

首先,你需要为你的应用程序创建一个 Dockerfile,该文件用于构建容器镜像。在 Dockerfile 中,你需要包含以下内容:

FROM openjdk:8-jre-alpine

# 将你的应用程序 JAR 文件复制到容器中
COPY your-app.jar /app.jar

# 下载并添加 SkyWalking 代理 JAR 文件
ADD http://skywalking-agent-url/skywalking-agent.jar /skywalking-agent.jar

# 设置 JVM 参数以启用 SkyWalking 代理
ENV SW_AGENT_COLLECTOR_BACKEND_SERVICE=skywalking_collector_host:port
ENV SW_AGENT_SERVICE_NAME=your_service_name

# 启动你的应用程序
CMD ["java", "-javaagent:/skywalking-agent.jar", "-jar", "/app.jar"]
  • your-app.jar 替换为你的应用程序 JAR 文件的名称。
  • http://skywalking-agent-url/skywalking-agent.jar 替换为 SkyWalking 代理 JAR 文件的下载地址。
  • skywalking_collector_host:port 替换为你的 SkyWalking 服务的主机和端口。
  • your_service_name 替换为你的服务名称。

b. 构建容器镜像:

在包含 Dockerfile 的目录中运行以下命令来构建容器镜像:

docker build -t your-image-name .

替换 your-image-name 为你希望为容器镜像设置的名称。

c. 使用 Docker Compose 启动容器:

现在,你可以使用 Docker Compose 启动容器,将你的应用程序和 SkyWalking 代理一起运行。确保在 Docker Compose 文件中包含你的应用程序容器,并将其与 SkyWalking 代理容器连接在一起。

以下是一个示例 Docker Compose 文件的部分内容:

version: '3'
services:
  your-app:
    image: your-image-name
    ports:
      - "8080:8080"  # 映射应用程序端口

  skywalking-agent:
    image: openjdk:8-jre-alpine
    command: ["java", "-jar", "/skywalking-agent.jar"]
    environment:
      - SW_AGENT_COLLECTOR_BACKEND_SERVICE=skywalking_collector_host:port
      - SW_AGENT_SERVICE_NAME=your_service_name
    depends_on:
      - your-app  # 确保 SkyWalking 代理容器在你的应用程序容器之后启动

在上述示例中,your-app 是你的应用程序容器,skywalking-agent 是 SkyWalking 代理容器。请替换相应的参数和配置,以匹配你的项目要求。

d. 启动容器:

在包含 Docker Compose 文件的目录中运行以下命令以启动容器:

docker-compose up -d

这将启动你的应用程序容器和 SkyWalking 代理容器。

现在,你的应用程序容器将与 SkyWalking 代理一起运行,并将性能数据发送到 SkyWalking 服务。你可以在 SkyWalking UI 中查看和分析这些数据。请确保在 Dockerfile 中正确配置 SkyWalking 代理,并在 Docker Compose 文件中正确设置容器之间的依赖关系。

3、请求接口

接口请求,打开浏览器请求上面定义好的接口 http://localhost:8880/test/hello ,即可展示追踪信息

三、UI界面

1、服务

2. top图

3、链路追踪

4、数据库

5、JVM