创建网络
docker network create skywalking-network
docker compose 安装SkyWalking
docker-compose.yaml
文件
version: "3"
services:# SkyWalking OAP server with Elasticsearch storageskywalking-oap:image: apache/skywalking-oap-server:8.9.0container_name: skywalking-oapports:- "12800:12800"- "11800:11800"networks:- skywalking-networkdepends_on:skywalking-elasticsearch:condition: service_healthy # 等待ES健康检查environment:- SW_STORAGE=elasticsearch- TZ=Asia/Shanghai- SW_STORAGE_ES_CLUSTER_NODES=skywalking-elasticsearch:9200#volumes:# - ./oap-config:/skywalking/config # 挂载本地目录到容器中# Elasticsearchskywalking-elasticsearch:image: elasticsearch:7.16.3container_name: skywalking-elasticsearchports:- "19200:9200"- "19300:9300"networks:- skywalking-networkenvironment:- discovery.type=single-node- TZ=Asia/Shanghai- ingest.geoip.downloader.enabled=false # 禁用GeoIP下载healthcheck: # 添加健康检查test: [ "CMD-SHELL", "curl -s http://localhost:9200/_cluster/health | grep -q '\"status\":\"green\"'" ]interval: 10stimeout: 10sretries: 20ulimits:memlock:soft: -1hard: -1nofile:soft: 65536hard: 65536mem_limit: 2g#volumes:# - ./es-data:/usr/share/elasticsearch/data/nodes # 挂载本地目录到容器中# SkyWalking UIskywalking-ui:image: apache/skywalking-ui:8.9.0container_name: skywalking-uiports:- "18080:8080"networks:- skywalking-networkenvironment:- SW_OAP_ADDRESS=http://skywalking-oap:12800- TZ=Asia/Shanghaivolumes:- ./ui-config:/app/config # 挂载本地目录到容器中
networks:skywalking-network:external:name: skywalking-network
详细说明
-
Elasticsearch 服务
- 使用
elasticsearch:7.14.0
镜像。 - 启用单节点模式,设置 JVM 参数以优化内存使用。
- 启用安全功能,设置
elastic
用户的密码。 - 挂载卷
elasticsearch-data
以持久化数据。 - 映射端口 19200 和 19300。
- 使用
-
SkyWalking OAP Server 服务
- 使用
apache/skywalking-oap-server:8.6.0-es7
镜像。 - 配置 Elasticsearch 作为存储,设置集群节点地址、用户名和密码。
- 映射端口 11800 和 12800。
- 依赖于 Elasticsearch 服务。
- 使用
-
SkyWalking UI 服务
- 使用
apache/skywalking-ui:8.6.0
镜像。 - 配置 OAP Server 的地址。
- 映射端口 18080。
- 依赖于 OAP Server 服务。
- 使用
-
网络和卷
- 定义了一个名为
skywalking-net
的桥接网络,确保所有服务在同一网络中。 - 定义了一个卷
elasticsearch-data
,用于持久化 Elasticsearch 的数据。
- 定义了一个名为
启动服务
在包含 docker-compose.yml
文件的目录中运行以下命令启动服务:
docker compose up -d
验证
-
检查 Elasticsearch 是否正常运行
curl -u elastic:elastic http://127.0.0.1:19200
-
检查 OAP Server 是否正常运行
查看 OAP Server 的日志,确认它是否成功连接到 Elasticsearch:docker logs skywalking-oap
-
访问 SkyWalking UI
打开浏览器,访问http://172.30.112.19:18080
,您应该能够看到 SkyWalking 的界面。
2. 客户端代码集成
2.1 下载 SkyWalking Agent
从 SkyWalking 官方网站下载对应版本的 Agent。
wget https://archive.apache.org/dist/skywalking/8.6.0/apache-skywalking-apm-8.6.0.tar.gz
tar -xvzf apache-skywalking-apm-8.6.0.tar.gz
cd apache-skywalking-apm-bin
2.2 配置 SkyWalking Agent
编辑 agent/config/agent.config
文件,配置以下参数:
# SkyWalking Agent 名称
SW_AGENT_NAME=springboot-skywalking-demo
# Collector 服务地址
SW_AGENT_COLLECTOR_BACKEND_SERVICES=172.30.112.19:11800
# 链路的最大 Span 数量
SW_AGENT_SPAN_LIMIT=2000
2.3 启动应用
在启动 Spring Boot 应用时,通过 -javaagent
参数指定 SkyWalking Agent 的路径。
java -javaagent:/path/to/skywalking-agent.jar \
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=172.30.112.19:11800 \
-DSW_AGENT_NAME=springboot-skywalking-demo \
-jar your-springboot-app.jar
jar包地址(官网):https://skywalking.apache.org/downloads/
阿里云:https://mirrors.aliyun.com/apache/skywalking/
运行起来就是这样
自己可以进行调用,然后记得修改时间(有的版本在下面):
使用文档
SkyWalking UI 使用文档
SkyWalking UI 提供了丰富的功能,用于监控和分析分布式系统的性能和调用链路。以下是 SkyWalking UI 的主要功能和使用方法:
1. 仪表盘 (Dashboard)
仪表盘提供了全局和当前服务的运行状态和监控指标,包括:
- 调用热力图 (Calls HeatMap):显示请求数量和响应时间。
- 应用平均告警 (Avg Application Alarm):显示应用的告警信息。
- 慢服务 (Slow Service):显示响应时间最长的服务。
- 应用吞吐量 (Application Throughput):显示每分钟的调用次数 (CPM)。
2. 拓扑图 (Topology)
拓扑图以图形化方式展示服务之间的依赖关系和调用链路,包括:
- 拓扑结构图 (Topology Map):显示服务之间的调用关系。
- 概览 (Overview):显示服务的总体运行状态。
- SLA (Service Level Agreement):显示服务的可用率。
- 每分钟调用 (Calls Per Minute):显示每分钟的调用次数。
- 平均响应时间 (Avg Response Time):显示服务的平均响应时间。
3. 服务 (Service)
服务页面提供了特定服务的详细信息,包括:
- 平均吞吐量 (Avg Throughput):显示服务的平均吞吐量。
- 平均响应时间 (Avg Response Time):显示服务的平均响应时间。
- 平均可用率 (Avg SLA):显示服务的平均可用率。
- 依赖图 (Dependency Map):显示服务的依赖关系。
4. 端点 (Endpoint)
端点页面提供了特定端点的详细调用数据,包括:
- 调用次数 (Call Count):显示端点的调用次数。
- 平均响应时间 (Avg Response Time):显示端点的平均响应时间。
- 错误率 (Error Rate):显示端点的错误率。
- 调用链路 (Trace):显示端点的调用链路。
5. 追踪 (Trace)
追踪页面提供了具体的调用链路数据,包括:
- Trace ID:唯一标识一次调用的 ID。
- 调用链路:显示每次调用的详细链路,包括每个节点的响应时间、调用顺序等。
6. 性能剖析 (Performance Analysis)
性能剖析页面提供了对特定端点的性能分析,包括:
- 采样分析:对端点进行采样分析,查看详细的堆栈信息。
- 任务列表:显示当前的性能分析任务。
- 任务详情:查看任务的详细信息,包括实例信息、操作类型、操作时间等。
7. 日志 (Log)
日志页面提供了服务的日志信息,包括:
- 服务日志:显示服务的日志信息。
- 浏览器日志:显示浏览器的日志信息。
- 追踪 ID:通过追踪 ID 查看跨服务的整体流程日志。
8. 告警 (Alarm)
告警页面展示了触发告警的列表,包括:
- 实例告警:显示实例相关的告警信息。
- 请求超时:显示请求超时相关的告警信息。
9. 事件 (Event)
事件页面展示了服务实例的启动和端点的调用等事件信息。
10. 时间选择器 (Time Selector)
时间选择器用于设定统计指标的时间范围,所有指标数据展示都依赖于这个时间范围。
官方文档
SkyWalking 的官方文档提供了详细的使用指南和配置说明,建议参考以下链接:
- SkyWalking 官方文档
- SkyWalking 中文文档
通过这些功能和文档,您可以全面监控和分析分布式系统的性能和调用链路,快速定位和解决性能问题。