SkyWalking 常见部署问题
引言
SkyWalking作为一款分布式系统的应用性能监控工具,在安装和部署时可能会遇到各种环境依赖或配置问题。本指南将帮助你识别并解决这些常见问题,确保顺利完成部署。
1. 环境依赖问题
Java版本不兼容
SkyWalking要求Java 8/11/17环境。若启动时报错 UnsupportedClassVersionError
,说明版本不匹配。
检查当前版本:
bash
java -version
解决方案:
- 升级JDK至推荐版本(如OpenJDK 11):
bash
sudo apt install openjdk-11-jdk # Ubuntu/Debian
2. 端口冲突
默认端口占用
SkyWalking使用多个端口(如11800, 12800)。若启动失败并提示 BindException
,可能是端口被占用。
检查端口占用:
bash
netstat -tuln | grep 11800
解决方案:
- 终止占用进程,或修改SkyWalking配置文件:
yaml
# config/application.yml
core:
restPort: 11800 # 改为其他端口
3. 存储配置错误
Elasticsearch连接失败
若使用Elasticsearch作为存储后端,可能出现连接超时。
典型错误日志:
Failed to connect to Elasticsearch cluster: [http://localhost:9200]
解决方案:
- 确认Elasticsearch服务已启动:
bash
curl http://localhost:9200
- 检查SkyWalking配置中的ES地址和凭据:
yaml
storage:
elasticsearch:
nameSpace: ${SW_NAMESPACE:""}
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
user: ${SW_ES_USER:""}
password: ${SW_ES_PASSWORD:""}
4. 内存不足
OOM(Out of Memory)错误
默认JVM内存配置可能不足,导致OOM崩溃。
调整JVM参数:
修改 bin/oapService.sh
(Linux)或 bin/oapService.bat
(Windows):
bash
# 修改JVM参数示例
JAVA_OPTS="-Xms2g -Xmx2g -XX:MaxMetaspaceSize=512m"
5. 服务启动顺序错误
依赖服务未就绪
SkyWalking OAP(分析平台)需在UI之前启动,且依赖存储服务(如Elasticsearch)。
正确启动顺序:
6. 实际案例
案例:UI无法显示数据
现象:UI页面打开正常,但无监控数据。
排查步骤:
- 检查OAP日志是否有错误。
- 确认Agent是否正确上报数据:
bash
curl http://OAP_IP:12800/v3/services
- 验证网络连通性(Agent → OAP → UI)。
解决方案:修正Agent配置中的OAP地址:
yaml
# agent.config
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}
总结与练习
总结
- 确保环境符合要求(Java版本、端口、内存)。
- 按正确顺序启动服务。
- 通过日志定位问题(日志路径:
logs/*.log
)。
练习
- 故意将Elasticsearch端口改为错误值,观察OAP启动时的错误日志。
- 使用
jps
命令验证SkyWalking相关进程是否运行。