SkyWalking探针技术监控Spring Boot微服务——部署与应用详解

发布于:2025-06-23 ⋅ 阅读:(16) ⋅ 点赞:(0)


在当今微服务架构大行其道的数字化时代,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
    

网站公告

今日签到

点亮在社区的每一天
去签到