跳到主要内容

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]

解决方案

  1. 确认Elasticsearch服务已启动:
    bash
    curl http://localhost:9200
  2. 检查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页面打开正常,但无监控数据。
排查步骤

  1. 检查OAP日志是否有错误。
  2. 确认Agent是否正确上报数据:
    bash
    curl http://OAP_IP:12800/v3/services
  3. 验证网络连通性(Agent → OAP → UI)。

解决方案:修正Agent配置中的OAP地址:

yaml
# agent.config
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}

总结与练习

总结

  • 确保环境符合要求(Java版本、端口、内存)。
  • 按正确顺序启动服务。
  • 通过日志定位问题(日志路径:logs/*.log)。

练习

  1. 故意将Elasticsearch端口改为错误值,观察OAP启动时的错误日志。
  2. 使用 jps 命令验证SkyWalking相关进程是否运行。