SkyWalking9.5.0安装与SpringBoot性能链路监控

文章目录

Skywalking是分布式系统的应用程序性能监视工具,专为微服务,云原生架构和基于容器(Docker, K8S, Mesos)架构而设计,它是一款优秀的APM性能分析、链路分析工具。

1、下载安装

官网下载:https://skywalking.apache.org/downloads/

1.1、安装Elasticsearch存储

官网下载:https://www.elastic.co/cn/downloads/past-releases#elasticsearch

Elastic 中文社区:https://elasticsearch.cn/download/

下载elasticsearch-7.17.3-windows-x86_64.zip

修改elasticsearch.yml文件

复制代码
cluster.name: elasticsearch
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]

在elasticsearch-7.17.3-no-jdk-windows-x86_64\bin执行启动命令

复制代码
./elasticsearch

1.2、安装SkyWalking服务器端

下载apache-skywalking-apm-9.5.0.tar.gz:https://archive.apache.org/dist/skywalking/9.5.0/apache-skywalking-apm-9.5.0.tar.gz

当前版本需要JDK11或JDK17才能运行,选一个喜欢的品牌JDK下载安装:jvm-and-jdk

使用bin/startup.sh(或cmd)以默认设置启动后端服务和管理后台UI,设置如下:

  • 后端存储默认使用H2(主要用于体验),生产环境建议用Elasticsearch
  • 后端监听0.0.0.0/11800的gRPC api和0.0.0.0/12800的HTTP REST api。
    在Java、DotNetCore、Node.js和Istio客户端/探针中,连接后端服务gRPC服务地址为ip/host:11800, ip/host是后端服务地址。
  • 管理后台UI通过ip/host:8080访问,并通过请求ip/host:12800运行GraphQL与后台服务查询。

修改配置config/application.yml

yaml 复制代码
storage:
#    selector: ${SW_STORAGE:h2} # 默认存储
    selector: ${SW_STORAGE:elasticsearch}
    elasticsearch:
        namespace: ${SW_NAMESPACE:"elasticsearch"}
#        clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
        clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:192.168.245.1:9200}
        protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
        connectTimeout: ${SW_STORAGE_ES_CONNECT_TIMEOUT:3000}
        socketTimeout: ${SW_STORAGE_ES_SOCKET_TIMEOUT:30000}
        responseTimeout: ${SW_STORAGE_ES_RESPONSE_TIMEOUT:15000}
        numHttpClientThread: ${SW_STORAGE_ES_NUM_HTTP_CLIENT_THREAD:0}
        user: ${SW_ES_USER:""}
        password: ${SW_ES_PASSWORD:""}
        trustStorePath: ${SW_STORAGE_ES_SSL_JKS_PATH:""}
        trustStorePass: ${SW_STORAGE_ES_SSL_JKS_PASS:""}
        secretsManagementFile: ${SW_ES_SECRETS_MANAGEMENT_FILE:""} 
        dayStep: ${SW_STORAGE_DAY_STEP:1} 
        indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:1} 
        indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:1} 

官方安装说明:https://skywalking.apache.org/docs/main/v9.5.0/en/setup/backend/backend-setup/

2、监控微服务

下载apache-skywalking-java-agent-9.0.0.tgz:https://www.apache.org/dyn/closer.cgi/skywalking/java-agent/9.0.0/apache-skywalking-java-agent-9.0.0.tgz

同一台主机的,可以使用同一份apache-skywalking-java-agent-9.0.0.tgz,也可以复制多份apache-skywalking-java-agent-9.0.0.tgz部署。

修改config/agent.config

复制代码
#指定服务名称,本文是同一台机上部署三个服务,改为运行中指定服务器
agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}

#每3s的采样率,0表示不采样,负数表示100%采样
agent.sample_n_per_3_secs=${SW_AGENT_SAMPLE:-1}

#指定链路数据的传送地址,默认127.0.0.1:11800
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.245.1:11800}

本文使用Spring Cloud 2022.x版本使用gateway和nacos实现动态路由和负载均衡的示例代码

2.1、监控Spring Boot微服务

工程App1服务加入监控,启动命令

bash 复制代码
java -javaagent:/usr/local/skywalking/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=app1 -jar gateway-app1-1.0-SNAPSHOT.jar

工程App2服务加入监控,启动命令

bash 复制代码
java -javaagent:/usr/local/skywalking/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=app2 -jar gateway-app2-1.0-SNAPSHOT.jar

2.1、监控Spring Cloud Gateway网关

plugins中默认没有Spring Cloud Gateway插件,不支持监控springcloud gateway网关服务。同时当前版本也不支持2022.x,需要把前文示例的Spring Cloud版本降为

复制代码
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2021.0.5.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>2021.0.8</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.7.15</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

把optional-plugins中的apm-spring-cloud-gateway-3.x-plugin-9.0.0.jar、apm-spring-webflux-5.x-plugin-9.0.0.jar拷贝到plugins中。

工程gateway网关加入监控,启动命令

bash 复制代码
java -javaagent:/usr/local/skywalking/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=gateway -jar gateway-nacos-1.0-SNAPSHOT.jar 

运行效果

访问http://localhost:8080/general管理后台UI,

相关推荐
AI你一生一世2 小时前
不止于时序存储:DolphinDB 如何成为 AI 时代的工业智能底座
java·人工智能·struts·时序数据库·工业智能·dolphindb·ai基础设施
云-缩影2 小时前
拆解 AI 图像生成应用的后端架构:ECS、OSS 和大模型 API 怎么配合
java·spring boot·后端
瑞克-桑切斯3 小时前
7、MySQL 慢查询排查与优化实战指南
java·服务器·数据库
AI开源软件5 小时前
SpringBoot3+Vue3 财务管理系统如何设计:从业务单据到总账的模块划分
spring boot·vue3·领域建模·会计凭证·ruoyi office·业财协同·财务系统设计
海的透彻7 小时前
dockerfile如何快速构建容器(java服务)
java·开发语言
code2cat7 小时前
Java工具篇之Gradle:用任务图组织构建与交付
java·开发语言·单元测试·gradle
后台模板学习8 小时前
大模型 Prompt 工程在电商订单系统中的踩坑记录
java·python·prompt
w_zero_one8 小时前
算法--构造
java·数据结构·算法
SL_staff8 小时前
制造业订单交付崩盘?用四层协同框架重建交付可信度(技术实践)
java·产品·全栈
SL_staff9 小时前
打破风控迭代死循环:用决策编排重构业务与技术协作链路
java·产品·全栈