Docker之Skywalking部署
核心组件部署命令
1. OAP Server(观测分析平台)
docker run --name skywalking-oap \
--restart always \
-p 11800:11800 \
-p 12800:12800 \
-d \
--privileged=true \
-e TZ=Asia/Shanghai \
-e SW_STORAGE=elasticsearch7 \
-e SW_STORAGE_ES_CLUSTER_NODES=192.168.254.130:9200 \
-v /etc/localtime:/etc/localtime:ro \
apache/skywalking-oap-server:8.6.0-es7
2. Web UI(可视化界面)
docker run --name skywalking-ui \
--restart always \
-p 8091:8080 \
-d \
--privileged=true \
--link skywalking-oap:skywalking-oap \
-e TZ=Asia/Shanghai \
-e SW_OAP_ADDRESS=192.168.254.130:12800 \
-v /etc/localtime:/etc/localtime:ro \
apache/skywalking-ui:8.6.0
参数详解
OAP Server关键配置
参数 | 说明 | 必要性 |
---|---|---|
-p 11800:11800 | gRPC服务端口(Agent上报) | 必选 |
-p 12800:12800 | HTTP服务端口(UI连接) | 必选 |
SW_STORAGE | 存储类型(elasticsearch7) | 必选 |
SW_STORAGE_ES_CLUSTER_NODES | ES集群地址 | 必选 |
Web UI关键配置
参数 | 说明 | 必要性 |
---|---|---|
-p 8091:8080 | 前端访问端口 | 必选 |
SW_OAP_ADDRESS | 连接的OAP服务地址 | 必选 |
存储配置指南(Elasticsearch)
1. 基础ES配置要求
# elasticsearch.yml 关键配置
cluster.name: skywalking
network.host: 0.0.0.0
discovery.type: single-node
2. 索引管理策略
# OAP容器中添加环境变量
-e SW_STORAGE_ES_INDEX_SHARDS_NUMBER=2 \
-e SW_STORAGE_ES_INDEX_REPLICAS_NUMBER=1 \
-e SW_STORAGE_ES_DAY_STEP=1 # 索引按天分割
访问验证
控制台访问:
- 地址:
http://<服务器IP>:8091
- 默认无需认证
- 地址:
服务健康检查:
# 检查OAP状态 curl http://localhost:12800/version # 检查ES连接 docker logs skywalking-oap | grep "Storage ElasticSearch7 client"
生产环境建议
1. 安全加固配置
# OAP服务认证
-e SW_AUTH=yourAuthToken
# UI界面认证
-e SW_UI_ADMIN_PASSWORD=yourPassword
2. 性能优化
# 调整JVM参数
-e JAVA_OPTS="-Xms4g -Xmx4g"
# 限制容器资源
--memory=6g --cpus=2
3. 高可用方案
# 多节点ES集群
-e SW_STORAGE_ES_CLUSTER_NODES=es1:9200,es2:9200,es3:9200
客户端接入示例
Java Agent接入
-javaagent:/path/to/skywalking-agent.jar \
-Dskywalking.agent.service_name=your-service \
-Dskywalking.collector.backend_service=192.168.254.130:11800
Kubernetes Sidecar注入
annotations:
sidecar.skywalking.apache.org/initcontainer.Image: "apache/skywalking-java-agent:8.6.0-java8"
sidecar.skywalking.apache.org/args: "-Dskywalking.agent.service_name=myapp"
维护命令
1. 数据清理
# 通过ES API删除旧索引
curl -X DELETE "http://es:9200/skywalking_*202301*"
2. 日志查看
docker logs -f skywalking-oap
3. 版本升级
# 注意保持存储兼容性
docker pull apache/skywalking-oap-server:8.7.0-es7
常见问题解决
Q:UI显示无数据?
# 检查Agent连接状态
netstat -tulnp | grep 11800
# 验证ES数据写入
curl -X GET "http://es:9200/skywalking_*/_count"
Q:OAP内存溢出?
# 调整JVM参数
-e JAVA_OPTS="-Xms8g -Xmx8g -XX:+UseG1GC"
# 减少采样率
-e SW_TRACE_SAMPLE_RATE=5000
Q:ES连接失败?
# 检查网络连通性
docker exec skywalking-oap ping 192.168.254.130
# 验证ES集群状态
curl -X GET "http://192.168.254.130:9200/_cluster/health"
此方案部署:
- 完整的分布式追踪系统
- 服务拓扑自动发现
- JVM/CLR运行时监控
- 服务网格观测能力