【SkyWalking】单节点安装
【SkyWalking】单节点安装
- 1. 介绍SkyWalking
- 2. 安装SkyWalking
- 附录
1. 介绍SkyWalking
Apache SkyWalking 是一个 开源的 APM(应用性能监控)与可观测性平台,主要用于 分布式系统的链路追踪、性能分析和服务监控。
🔑 主要功能
-
分布式链路追踪
追踪跨服务的调用链路(类似 Zipkin/Jaeger,但功能更丰富)。
支持调用链可视化,查看请求在不同服务之间的传播路径。 -
性能监控 (APM)
监控服务的响应时间、吞吐量、错误率。
提供拓扑图,展示服务依赖关系。 -
指标与告警
内置指标:CPU、内存、GC、线程池、数据库调用、MQ 等。
可以自定义告警规则,比如接口响应时间过长、错误率过高。 -
多语言支持
提供 Java Agent,通过字节码增强自动埋点,无需修改代码。
也支持 Go、Python、PHP、Node.js、C++ 等 SDK。 -
云原生支持
深度集成 Kubernetes、Istio、Envoy。
通过 Sidecar 或 Service Mesh 获取指标。
🏗️ 架构组成
-
Agent 层
部署在应用服务上,负责收集调用数据、性能指标并上报给后端。
常见的就是 skywalking-agent.jar(Java 项目直接加 JVM 参数即可)。 -
OAP Server(后端存储与分析)
核心组件,负责接收 Agent 数据,进行聚合、分析、存储。
存储层可以选择 ElasticSearch、H2、MySQL、TiDB、BanyanDB 等。 -
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.0docker 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.0container_name: oaprestart: alwaysports:- "11800:11800" # gRPC- "12800:12800" # RESTenvironment:SW_STORAGE: elasticsearchSW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200 # 连接到现有的 Elasticsearch 容器ui:image: apache/skywalking-ui:9.4.0container_name: skywalking-uirestart: alwaysports:- "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