SkyWalking探针技术监控Spring Boot微服务——部署与应用详解
- SkyWalking服务端部署
- 获取 SkyWalking Agent下载与aop对应的版本(这里为9.1.0)
- 启用动态配置(无需重启应用)
- 在springboot应用配置logback-spring.xml(需要放在resources目录下)
- 修改一下Dockerfile将skywalking打到docker中
- 验证是否安装成功
- Skywalking记录请求响应监控
在当今微服务架构大行其道的数字化时代,Spring Boot 以其简洁高效的特质成为构建独立、可部署服务的首选框架。然而,随着服务数量的激增和相互依赖关系的日益复杂,应用的可见性和可观测性面临着前所未有的挑战。一个服务链路的延迟如何快速定位?一次突发的性能瓶颈究竟源于哪个微服务?分布式环境下的错误如何有效追踪?
SkyWalking,作为一款强大的开源应用性能监控(APM)和分布式追踪系统,正是应对这些挑战的利器。它专为云原生、微服务和容器化(如Kubernetes)环境设计,提供端到端的调用链路追踪、详尽的性能指标分析(如JVM、GC、HTTP请求、SQL、缓存)、服务拓扑映射以及高效的告警机制。
本文将深入探讨如何将 SkyWalking 无缝集成到您的 Spring Boot 微服务生态中。我们将从核心概念入手,逐步指导您完成 Agent 探针的部署、OAP Server 与存储后端的配置(如Elasticsearch),并最终实现通过 SkyWalking UI 对您的 Spring Boot 服务进行全方位的监控、诊断与性能优化。掌握 SkyWalking,您将获得洞察微服务运行状况的“火眼金睛”,显著提升系统稳定性、排障效率与用户体验,为您的分布式系统保驾护航。让我们开始这段提升微服务可观测性的关键旅程!
SkyWalking服务端部署
创建 docker-compose.yml 文件
version: '3.8'
services:
elasticsearch:
image: www.ecnfo.com:1443/proxy/docker.elastic.co/elasticsearch/elasticsearch:7.17.10
container_name: elasticsearch
environment:
- discovery.type=single-node
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
- TZ=Asia/Shanghai
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- es_data:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- skywalking-net
# 添加健康检查
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9200"]
interval: 30s
timeout: 10s
retries: 15
start_period: 60s
kibana:
image: www.ecnfo.com:1443/proxy/docker.elastic.co/kibana/kibana:7.17.6
container_name: kibana
ports:
- 5601:5601
depends_on:
elasticsearch:
condition: service_healthy
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
- I18N_LOCALE=zh-CN
- XPACK_MONITORING_UI_CONTAINER_ELASTICSEARCH_URL=http://elasticsearch:9200
command:
- bash
- -c
- |
# 增加启动等待机制
echo "等待Elasticsearch完全就绪..."
while ! curl -sS http://elasticsearch:9200/_cluster/health | grep -qE '"status":"(green|yellow)"'; do
echo "Elasticsearch未就绪,10秒后重试..."
sleep 10
done
echo "启动Kibana..."
exec /usr/local/bin/kibana-docker
networks:
- skywalking-net
oap:
image: www.ecnfo.com:1443/proxy/apache/skywalking-oap-server:9.4.0
container_name: oap
depends_on:
elasticsearch:
condition: service_healthy # 等待ES健康检查通过
environment:
- SW_STORAGE=elasticsearch
- SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200
- TZ=Asia/Shanghai
- JAVA_OPTS=-Xms2g -Xmx2g
# 增加连接超时设置
- SW_STORAGE_ES_HTTP_REST_CONNECTION_TIMEOUT=30000
- SW_STORAGE_ES_QUERY_TIMEOUT=60
ports:
- 11800:11800
- 12800:12800
networks:
- skywalking-net