skywalking-9.5.0学习

一只会飞的鱼儿 4天前 ⋅ 10 阅读
ad

第一种:docker部署方式

1、mysql存储

docker-compose.yml文件:

version: '3.9'
services:
  mysql:
    image: mysql:8.0.32
    container_name: mysql8
    restart: always
    volumes:
      - /data/docker/mysql/log=/var/log/mysql
      - /data/docker/mysql/data=/var/lib/mysql
      - /data/docker/mysql/conf=/etc/mysql/conf 
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: skywalking
      MYSQL_USER: skywalking
      MYSQL_PASSWORD: skywalking
    ports:
      - "3306:3306"
    command: 
      --character-set-server=utf8mb4 
      --collation-server=utf8mb4_unicode_ci
      --default-authentication-plugin=mysql_native_password
      --bind-address=0.0.0.0  # 关键:允许所有网络接口连接
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "skywalking", "-pskywalking"]  # 使用 skywalking 用户测试
      interval: 10s
      timeout: 5s
      retries: 10
      start_period: 30s
    networks:
      - skywalking-net
  # SkyWalking OAP 服务器
  oap:
    image: apache/skywalking-oap-server:9.5.0
    container_name: skywalking-oap-server
    restart: always
    volumes:
      - /Users/yulei/Documents/package/mysql-connector-java/mysql-connector-java-8.0.13.jar:/skywalking/oap-libs/mysql-connector-java-8.0.13.jar
    ports:
      - "11800:11800"   # 接收 Agent 数据的 gRPC 端口
      - "12800:12800"   # 接收 Agent 数据的 HTTP 端口
    environment:
      - SW_STORAGE=mysql                    # 使用 MySQL 存储
      - SW_STORAGE_MYSQL_JDBC_URL=jdbc:mysql://localhost:3306/skywalking?rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&useSSL=false
      - SW_STORAGE_MYSQL_USER=skywalking
      - SW_STORAGE_MYSQL_PASSWORD=skywalking
      - SW_STORAGE_MYSQL_MAX_SIZE_OF_ARRAY_COLUMN=20
      - SW_STORAGE_MYSQL_NUM_OF_REPLICAS=2
      - TZ=Asia/Shanghai
    depends_on:
      mysql:
        condition: service_healthy
    networks:
      - skywalking-net

  # SkyWalking UI
  ui:
    image: apache/skywalking-ui:9.5.0
    container_name: skywalking-ui
    restart: always
    ports:
      - "8089:8089"  # 容器内端口是8080,映射到主机8081
    environment:
      - SW_OAP_ADDRESS=http://oap:12800
    depends_on:
      - oap
    networks:
      - skywalking-net

volumes:
  mysql-data:
    driver: local

networks:
  skywalking-net:
    driver: bridge

2、elasticsearch方式

先本地docker部署elasticsearch

下载镜像elasticsearch:8.13.0

本地建es文件夹

做好挂载目录映射

命令:

docker pull elasticsearch:8.13.0

docker run --name elasticsearch \
  -p 9200:9200 \
  -p 9300:9300 \
  -e "discovery.type=single-node" \
  -e ES_JAVA_OPTS="-Xms256m -Xmx512m" \
  -e "xpack.security.enabled=false" \
  -e "xpack.security.enrollment.enabled=false" \
  -e "xpack.ml.enabled=false" \
  -v /Users/yulei/Documents/package/es/data:/usr/share/elasticsearch/data \
  -v /Users/yulei/Documents/package/es/plugins:/usr/share/elasticsearch/plugins \
  -d elasticsearch:8.13.0

下载skywalking相关镜像:

docker pull apache/skywalking-oap-server:9.5.0
docker pull apache/skywalking-ui:9.5.0

docker-compose启动方式

yml文件如下:

version: '3.8'
services:
  elasticsearch:
    image: elasticsearch:8.13.0
    container_name: elasticsearch
    environment:
      - discovery.type=single-node
      - ES_JAVA_OPTS=-Xms512m -Xmx512m
      - xpack.security.enabled=false
      - xpack.security.enrollment.enabled=false
      - xpack.ml.enabled=false
    ports:
      - "9200:9200"
      - "9300:9300"
    volumes:
      - es-data:/usr/share/elasticsearch/data
      - es-plugins:/usr/share/elasticsearch/plugins
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9200/_cluster/health"]
      interval: 10s
      timeout: 5s
      retries: 20
      start_period: 60s
    networks:
      - skywalking-net

  oap:
    image: apache/skywalking-oap-server:9.5.0
    container_name: oap
    restart: always
    ports:
      - "11800:11800"
      - "12800:12800"
    environment:
      - SW_STORAGE=elasticsearch
      - SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200
      - SW_STORAGE_ES_PROTOCOL=http
    depends_on:
      elasticsearch:
        condition: service_healthy  # 等待 Elasticsearch 健康
    networks:
      - skywalking-net

  ui:
    image: apache/skywalking-ui:9.5.0
    container_name: skywalking-ui
    restart: always
    ports:
      - "8081:8080"  # 容器内端口是8080,映射到主机8081
    environment:
      - SW_OAP_ADDRESS=http://oap:12800
    depends_on:
      - oap
    networks:
      - skywalking-net

volumes:
  es-data:
    driver: local
  es-plugins:
    driver: local

networks:
  skywalking-net:
    driver: bridge

启动方式:

docker-compose -f ./docker-compose-skywalking-es.yml  up -d

启动完成后:

检查是否启动成功:

es检查:
# 查看容器日志
docker logs -f elasticsearch

# 检查健康状态
curl -X GET "http://localhost:9200/_cluster/health?pretty"

# 查看节点信息
curl -X GET "http://localhost:9200/?pretty"

skywalking检查:
# 检查 OAP 状态
curl -X GET "http://localhost:12800/version"

# 查看 SkyWalking 是否创建了索引
curl -X GET "http://localhost:9200/_cat/indices?v" | grep skywalking

# 访问 SkyWalking UI
open http://localhost:8081

 

第二种:IntelliJ IDEA

在 IntelliJ IDEA 中启动 Apache SkyWalking APM 9.5.0 的 Spring Boot 项目,需要进行一些配置。以下是详细步骤:

1. 项目准备

首先确保你已经下载并解压了 SkyWalking APM 9.5.0:
 
# 下载 SkyWalking wget https://archive.apache.org/dist/skywalking/9.5.0/apache-skywalking-apm-9.5.0.tar.gz tar -xzf apache-skywalking-apm-9.5.0.tar.gz cd apache-skywalking-apm-9.5.0

2. 导入项目到 IDEA

  1. 打开 IntelliJ IDEA
  2. 选择 File-> Open
  3. 选择 SkyWalking 解压后的目录
  4. 等待 Maven 依赖下载完成

3. 配置启动类

SkyWalking 有多个模块,主要启动类在:
  • ​OAP Server​​: oap-server/server-starter/src/main/java/org/apache/skywalking/oap/server/starter/OAPServerStartUp.java
  • ​Web UI​​: oap-server/server-webapp/src/main/java/org/apache/skywalking/oap/server/webapp/ApplicationStartUp.java

4. 配置启动参数

方案一:直接运行 OAP Server

  1. 找到 OAPServerStartUp.java
  2. 右键选择 Run 'OAPServerStartUp.main()'
  3. 或者配置运行配置:
​运行配置参数:​
 
VM Options: -Dsw.logging.dir=logs -Dsw.logging.file=oap.log -Dlog4j.configurationFile=config/log4j2.xml Program arguments: Working directory: $MODULE_WORKING_DIR$ Use classpath of module: oap-server-starter
 
 
 
ApplicationStartUp里面有时候会遇到8080端口不行,改成-Dserver.port=80801

方案二:使用 Maven 启动

 
# 在终端中执行 cd oap-server mvn clean compile exec:java -Dexec.mainClass="org.apache.skywalking.oap.server.starter.OAPServerStartUp"
 

方案三:配置完整的启动配置

在 IDEA 中创建运行配置:
  1. Run-> Edit Configurations
  2. 点击 +-> Application
  3. 配置如下:
​Main class:​
 
org.apache.skywalking.oap.server.starter.OAPServerStartUp
 
 
​VM options:​
 
-Dsw.logging.dir=logs -Dsw.logging.file=oap.log -Dlog4j.configurationFile=config/log4j2.xml -Drocketmq.config.namesrvAddr=localhost:9876 -Dcluster.standalone=true
 
 
​Working directory:​
 
/path/to/apache-skywalking-apm-9.5.0
 
 
​Use classpath of module:​
 
oap-server-starter
 
 

5. 配置文件准备

确保配置文件存在并正确配置:
  1. ​复制配置文件:​
     
    cp config/application.yml config/application.yml.backup cp config/log4j2.xml config/log4j2.xml.backup
     
     
  2. ​修改 config/application.yml​(如果需要):
     
    cluster: selector: standalone storage: selector: h2 receiver: sharing-server: selector: default
     
     

6. 完整的 IDEA 启动步骤

步骤 1:配置模块

  1. 确保所有 Maven 模块都已导入
  2. 等待依赖下载完成

步骤 2:创建运行配置

 
// 对于 OAP Server Main class: org.apache.skywalking.oap.server.starter.OAPServerStartUp VM options: -Dsw.logging.dir=logs -Dsw.logging.file=oap.log -Dlog4j.configurationFile=config/log4j2.xml -Dcluster.standalone=true Working directory: /path/to/apache-skywalking-apm-9.5.0
 
 

步骤 3:解决常见问题

​问题 1:端口冲突​
 
VM options 添加:-Dserver.port=12801 -Dgrpc.port=11801
 
 
​问题 2:配置文件找不到​
 
确保 working directory 正确指向 SkyWalking 根目录
 
 
​问题 3:依赖缺失​
 
在终端执行:mvn clean compile -DskipTests
 

7. 快速启动脚本

创建 startup.sh文件:
 
#!/bin/bash cd /path/to/apache-skywalking-apm-9.5.0 # 设置环境变量 export SW_LOGGING_DIR=logs export SW_LOGGING_FILE=oap.log # 启动 OAP Server java -Dcluster.standalone=true \ -Dlog4j.configurationFile=config/log4j2.xml \ -cp "oap-server/server-starter/target/classes:oap-server/server-starter/target/dependency/*" \ org.apache.skywalking.oap.server.starter.OAPServerStartUp
 
 

8. 验证启动

启动成功后,你应该看到类似日志:
 
INFO 2023-xx-xx xx:xx:xx:xxx OAP starts up in stand alone mode. INFO 2023-xx-xx xx:xx:xx:xxx Version of OAP: 9.5.0
 
 

9. 启动 Web UI(可选)

如果需要同时启动 Web UI:
 
// 另一个运行配置 Main class: org.apache.skywalking.oap.server.webapp.ApplicationStartUp VM options: -Dserver.port=8080 Working directory: /path/to/apache-skywalking-apm-9.5.0
 
 
这样你就可以在 IDEA 中成功启动 SkyWalking APM 了。记得先确保所有 Maven 依赖都已正确下载。

10. JAVA-AGENT上报

下载apache-skywalking-java-agent-9.5.0

idea中package打包,生成skywalking-agent目录,

把skywalking-agent放到你的项目jar下面

业务启动脚本manage_skywalking.sh如下:
  #! /bin/sh
  start(){
    now=`date "+%Y%m%d%H%M%S"`
    exec java -javaagent:/Users/yulei/Documents/package/skywalking/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=webfunnyManagePlatform -Dskywalking.collector.backend_service=127.0.0.1:11800 -jar -Xms256M -Xmx256M webfunny_manage-2.0.jar >/dev/null 2>&1 &
    printf 'start %s success' "$prog"
    echo $! >server.pid
  }
  stop(){
    kill `cat server.pid`
    rm -rf server.pid
    printf 'stop %s finished' "$prog"
  }
  case "$1" in
  start)
  start
  ;;
  stop)
  stop
  ;;
  restart)
  stop
  start
  ;;
  *)
  printf 'Usage: %s {start|stop|restart}\n' "$prog"
  exit 1
  ;;
  esac

 

关于Webfunny

Webfunny专注于前端监控系统,前端埋点系统的研发。 致力于帮助开发者快速定位问题,帮助企业用数据驱动业务,实现业务数据的快速增长。支持H5/Web/PC前端、微信小程序、支付宝小程序、UniApp和Taro等跨平台框架。实时监控前端网页、前端数据分析、错误统计分析监控和BUG预警,第一时间报警,快速修复BUG!支持私有化部署,Docker容器化部署,可支持千万级PV的日活量!

  点赞 0   收藏 0
  • 一只会飞的鱼儿
    共发布58篇文章 获得8个收藏
全部评论: 0