【SkyWalking】单节点安装

发布于:2025-08-19 ⋅ 阅读:(20) ⋅ 点赞:(0)

【SkyWalking】单节点安装

1. 介绍SkyWalking

Apache SkyWalking 是一个 开源的 APM(应用性能监控)与可观测性平台,主要用于 分布式系统的链路追踪、性能分析和服务监控。

🔑 主要功能

  1. 分布式链路追踪
    追踪跨服务的调用链路(类似 Zipkin/Jaeger,但功能更丰富)。
    支持调用链可视化,查看请求在不同服务之间的传播路径。

  2. 性能监控 (APM)
    监控服务的响应时间、吞吐量、错误率。
    提供拓扑图,展示服务依赖关系。

  3. 指标与告警
    内置指标:CPU、内存、GC、线程池、数据库调用、MQ 等。
    可以自定义告警规则,比如接口响应时间过长、错误率过高。

  4. 多语言支持
    提供 Java Agent,通过字节码增强自动埋点,无需修改代码。
    也支持 Go、Python、PHP、Node.js、C++ 等 SDK。

  5. 云原生支持
    深度集成 Kubernetes、Istio、Envoy。
    通过 Sidecar 或 Service Mesh 获取指标。


🏗️ 架构组成

  1. Agent 层
    部署在应用服务上,负责收集调用数据、性能指标并上报给后端。
    常见的就是 skywalking-agent.jar(Java 项目直接加 JVM 参数即可)。

  2. OAP Server(后端存储与分析)
    核心组件,负责接收 Agent 数据,进行聚合、分析、存储。
    存储层可以选择 ElasticSearch、H2、MySQL、TiDB、BanyanDB 等。

  3. UI 控制台
    Web 界面(Vue + Spring Boot),提供链路追踪、拓扑图、性能指标展示。


🚀 常见使用场景

  • 微服务系统链路追踪:快速定位请求在哪个微服务卡住。
  • 接口性能分析:查看慢接口、慢 SQL、异常堆栈。
  • 服务依赖拓扑:直观展示服务之间的调用关系。
  • 容器与 Service Mesh 监控:云原生场景下监控 Pod、Service 的健康状态。
  • 告警与报表:配合告警规则,提前发现问题。

2. 安装SkyWalking

github地址: https://github.com/apache/skywalking
SkyWalking官网: https://skywalking.apache.org/
B站: https://space.bilibili.com/390683219
downLoad https://skywalking.apache.org/downloads/

我将数据存储到ES中,通过docker 安装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" 
        -v /root/package/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
        -v /home/package/es/data:/usr/share/elasticsearch/data 
        -v /home/package/es/plugins:/usr/share/elasticsearch/plugins 
        -d elasticsearch:8.13.0

安装skywalking-oap、skywalking-ui的docker-compose

version: '3'
services:
  oap:
    image: apache/skywalking-oap-server:9.4.0
    container_name: oap
    restart: always
    ports:
      - "11800:11800"   # gRPC
      - "12800:12800"   # REST
    environment:
      SW_STORAGE: elasticsearch
      SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200  # 连接到现有的 Elasticsearch 容器

  ui:
    image: apache/skywalking-ui:9.4.0
    container_name: skywalking-ui
    restart: always
    ports:
      - "8089:8080"   # 更改为8081端口,避免和现有服务冲突
    environment:
      SW_OAP_ADDRESS: http://oap:12800  # 指向OAP服务
    depends_on:
      - oap

在这里插入图片描述

执行docker compose
docker-compose -f ./docker-compose.yml  up -d
**服务器中已安装的容器**

[root@iv-ye20h65dz45i3z346rvs opt]# docker ps
CONTAINER ID   IMAGE                                      COMMAND                  CREATED        STATUS                 PORTS                                                                                                                            NAMES
02b27d5bd16d   apache/skywalking-ui:9.4.0                 "bash docker-entrypo…"   11 hours ago   Up 11 hours            0.0.0.0:8089->8080/tcp, :::8089->8080/tcp                                                                                        skywalking-ui
37cc9dbd3ad1   apache/skywalking-oap-server:9.4.0         "bash docker-entrypo…"   11 hours ago   Up 2 hours             0.0.0.0:11800->11800/tcp, :::11800->11800/tcp, 1234/tcp, 0.0.0.0:12800->12800/tcp, :::12800->12800/tcp                           oap
6823738ddfae   kibana:8.13.0                              "/bin/tini -- /usr/l…"   22 hours ago   Up 22 hours            0.0.0.0:5601->5601/tcp, :::5601->5601/tcp                                                                                        kibana
f547ea4e7c76   elasticsearch:8.13.0                       "/bin/tini -- /usr/l…"   22 hours ago   Up 22 hours            0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp                                             elasticsearch
5601964e9cf4   apacherocketmq/rocketmq-dashboard:latest   "sh -c 'java $JAVA_O…"   10 days ago    Up 10 days             0.0.0.0:8080->8080/tcp, :::8080->8080/tcp                                                                                        rocketmq-dashboard
c2a92e11947b   apache/rocketmq:5.2.0                      "./docker-entrypoint…"   10 days ago    Up 10 days             0.0.0.0:10909->10909/tcp, :::10909->10909/tcp, 9876/tcp, 0.0.0.0:10911-10912->10911-10912/tcp, :::10911-10912->10911-10912/tcp   rmqbroker
aeb3770cc3c6   apache/rocketmq:5.2.0                      "./docker-entrypoint…"   10 days ago    Up 10 days             10909/tcp, 0.0.0.0:9876->9876/tcp, :::9876->9876/tcp, 10911-10912/tcp                                                            rmqnamesrv
799332d61cf4   xuxueli/xxl-job-admin:2.4.1                "sh -c 'java -jar $J…"   10 days ago    Up 10 days             0.0.0.0:8082->8080/tcp, 0.0.0.0:23333->8080/tcp, :::8082->8080/tcp, :::23333->8080/tcp                                           xxl-job
eb21af4b3950   seataio/seata-server:2.0.0                 "/bin/bash /seata-se…"   10 days ago    Up 10 days             0.0.0.0:7091->7091/tcp, :::7091->7091/tcp, 0.0.0.0:8091->8091/tcp, :::8091->8091/tcp                                             seata-server
b967618b3e82   nacos/nacos-server:v2.5.1                  "sh bin/docker-start…"   10 days ago    Up 10 days             0.0.0.0:8848->8848/tcp, :::8848->8848/tcp, 0.0.0.0:9848->9848/tcp, :::9848->9848/tcp                                             nacos
ddd1c89bf6f9   redis:latest                               "docker-entrypoint.s…"   10 days ago    Up 10 days             0.0.0.0:6379->6379/tcp, :::6379->6379/tcp                                                                                        redis
fa31290e7d98   mysql:8.4.1                                "docker-entrypoint.s…"   10 days ago    Up 10 days (healthy)   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp                                                                             mysql-8

这里发现一个问题,8089端口的页面打开后一致不显示,发现是在docker中的网络不在一起,执行下面命令解决。


docker network create skywalking-net
docker network connect skywalking-net elasticsearch
docker network connect skywalking-net oap
docker network connect skywalking-net skywalking-ui

在本地下载 apache-skywalking-java-agent-9.4.0.tgz 也就是agent解压后,如图所示。
在这里插入图片描述

然后在项目的启动参数增加VM配置
在这里插入图片描述

-javaagent:/Users/fanzhen/Downloads/skywalking-agent/skywalking-agent.jar
-Dskywalking.agent.service_name=nft-turbo-gateway
-Dskywalking.collector.backend_service=115.190.126.xxx:11800

在这里插入图片描述

附录

1.感觉白活了!自从用了SkyWalking分布式链路追踪,睡得越来越香了 https://zhuanlan.zhihu.com/p/458923743


网站公告

今日签到

点亮在社区的每一天
去签到