Skywalking是一款优秀的分布式系统性能监控工具,下面我将详细介绍如何使用Docker快速搭建Skywalking环境。
Skywalking主要包含以下组件: - OAP Server:负责数据接收、分析和存储 - Storage:数据存储(支持ES/H2/MySQL等) - UI:可视化界面 - Agent:应用探针,收集数据
# 创建专用网络
docker network create skywalking-net
# 部署Elasticsearch作为存储
docker run -d --name elasticsearch \
--network skywalking-net \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
elasticsearch:7.9.0
# 部署Skywalking OAP Server
docker run -d --name oap \
--network skywalking-net \
-p 11800:11800 -p 12800:12800 \
-e SW_STORAGE=elasticsearch7 \
-e SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200 \
apache/skywalking-oap-server:8.7.0
# 部署Skywalking UI
docker run -d --name skywalking-ui \
--network skywalking-net \
-p 8080:8080 \
-e SW_OAP_ADDRESS=oap:12800 \
apache/skywalking-ui:8.7.0
创建docker-compose.yml
文件:
version: '3'
services:
elasticsearch:
image: elasticsearch:7.9.0
container_name: elasticsearch
ports:
- 9200:9200
- 9300:9300
environment:
discovery.type: single-node
ES_JAVA_OPTS: -Xms512m -Xmx512m
networks:
- skywalking-net
oap:
image: apache/skywalking-oap-server:8.7.0
container_name: oap
depends_on:
- elasticsearch
ports:
- 11800:11800
- 12800:12800
environment:
SW_STORAGE: elasticsearch7
SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
networks:
- skywalking-net
ui:
image: apache/skywalking-ui:8.7.0
container_name: skywalking-ui
depends_on:
- oap
ports:
- 8080:8080
environment:
SW_OAP_ADDRESS: oap:12800
networks:
- skywalking-net
networks:
skywalking-net:
driver: bridge
启动服务:
docker-compose up -d
wget https://archive.apache.org/dist/skywalking/java-agent/8.7.0/apache-skywalking-java-agent-8.7.0.tgz
tar -zxvf apache-skywalking-java-agent-8.7.0.tgz
java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar \
-Dskywalking.agent.service_name=your-service-name \
-Dskywalking.collector.backend_service=oap-server-ip:11800 \
-jar your-application.jar
http://localhost:8080
docker logs -f oap
curl http://localhost:9200/_cat/indices?v
如果ES或OAP因内存不足崩溃,可以调整JVM参数:
# 对于ES
environment:
ES_JAVA_OPTS: -Xms1g -Xmx1g
# 对于OAP
environment:
SW_JAVA_OPTS: -Xms1g -Xmx1g
除了ES,Skywalking还支持其他存储: - H2(默认,仅测试用) - MySQL - TiDB - InfluxDB
例如使用MySQL:
environment:
SW_STORAGE: mysql
SW_JDBC_URL: "jdbc:mysql://mysql:3306/swtest"
SW_DATA_SOURCE_USER: root
SW_DATA_SOURCE_PASSWORD: root
对于生产环境,建议: - 增加OAP实例数量 - 使用集群版ES - 调整OAP处理线程数:
environment:
SW_CORE_GRPC_THREAD_POOL_SIZE: 4
SW_CORE_REST_THREAD_POOL_SIZE: 4
挂载自定义alarm-settings.yml
:
volumes:
- ./config/alarm-settings.yml:/skywalking/config/alarm-settings.yml
对于生产环境,建议挂载数据卷:
volumes:
- es_data:/usr/share/elasticsearch/data
volumes:
es_data:
通过以上步骤,您已经成功使用Docker搭建了Skywalking监控系统。根据实际需求,您可以进一步调整配置和扩展组件。