docker配置skywalking 监控springcloud应用
在使用 Docker 配置 SkyWalking 监控 Spring Cloud 应用时,主要分为以下几个步骤:
1. 准备工作
- 确保你的开发环境已经安装了 Docker 和 Docker Compose。
- 准备好 Spring Cloud 应用代码,并确保它支持 SkyWalking 的探针(Agent)。
2. 拉取 SkyWalking OAP Server 和 UI 镜像
SkyWalking 提供了官方的 Docker 镜像,可以通过以下命令拉取:
docker pull apache/skywalking-oap-server
docker pull apache/skywalking-ui
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.17.0
3. 创建 docker-compose.yml
文件
为了简化部署,可以使用 Docker Compose 来启动 SkyWalking 的 OAP Server 和 UI。
创建一个 docker-compose.yml
文件,内容如下:
version: '3.7'services:oap:image: apache/skywalking-oap-servercontainer_name: skywalking-oapports:- "11800:11800" # gRPC port- "12800:12800" # REST portenvironment:SW_STORAGE: elasticsearchSW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200networks:- skywalking-netui:image: apache/skywalking-uicontainer_name: skywalking-uiports:- "8080:8080"environment:SW_OAP_ADDRESS: http://oap:12800depends_on:- oapnetworks:- skywalking-netelasticsearch:image: docker.elastic.co/elasticsearch/elasticsearch:7.17.0container_name: elasticsearchenvironment:discovery.type: single-nodeports:- "9200:9200"networks:- skywalking-netnetworks:skywalking-net:driver: bridge
4. 启动 SkyWalking 服务
运行以下命令启动 SkyWalking 的 OAP Server、UI 和 Elasticsearch:
docker compose up -d
这将启动以下服务:
- OAP Server:负责收集和处理监控数据。
- UI:提供可视化界面,默认访问地址为
http://localhost:8080
。 - Elasticsearch:存储监控数据。
5. 配置 Spring Cloud 应用
为了让 Spring Cloud 应用与 SkyWalking 集成,需要在应用中引入 SkyWalking 的 Java Agent。
5.1 下载 SkyWalking Agent
从 Apache SkyWalking 官方网站 下载对应版本的 SkyWalking Agent。
解压后,你会得到一个文件夹,例如 apache-skywalking-java-agent-8.9.0
。
5.2 修改 Spring Cloud 应用的启动命令
在 Spring Cloud 应用的启动命令中添加 -javaagent
参数。例如:
java -javaagent:/path/to/apache-skywalking-java-agent-8.9.0/skywalking-agent.jar \-Dskywalking.agent.service_name=your-service-name \-Dskywalking.collector.backend_service=oap:11800 \-jar your-spring-cloud-app.jar
5.3 关键参数说明
-javaagent
:指定 SkyWalking Agent 的路径。skywalking.agent.service_name
:设置你的服务名称,用于区分不同的服务。skywalking.collector.backend_service
:指定 SkyWalking OAP Server 的地址(默认为oap:11800
)。
6. 使用 Docker 启动 Spring Cloud 应用
如果你使用 Docker 来运行 Spring Cloud 应用,可以在 Dockerfile 或 docker-compose.yml
中添加 -javaagent
参数。
例如,在 docker-compose.yml
中添加:
app:image: your-spring-cloud-imagecontainer_name: spring-cloud-appenvironment:- JAVA_OPTS=-javaagent:/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=your-service-name -Dskywalking.collector.backend_service=oap:11800volumes:- ./apache-skywalking-java-agent-8.9.0:/skywalking-agentdepends_on:- oapnetworks:- skywalking-net
7. 验证监控
- 访问 SkyWalking UI:
http://localhost:8080
。 - 在页面上查看服务拓扑图、性能指标等信息。
- 如果一切正常,你应该能看到你的 Spring Cloud 应用的监控数据。
8. 注意事项
- 确保 Spring Cloud 应用和 SkyWalking OAP Server 在同一个网络中(例如通过 Docker Compose 创建的
skywalking-net
网络)。 - 如果使用的是自定义的 Elasticsearch 地址或端口,请修改
SW_STORAGE_ES_CLUSTER_NODES
环境变量。 - 根据实际需求调整 SkyWalking Agent 的配置文件(
agent/config/agent.config
)。
通过以上步骤,你可以成功使用 Docker 配置 SkyWalking 来监控 Spring Cloud 应用!