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

2023-09-14 00:16:17

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

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服务加入监控,启动命令

java -javaagent:/usr/local/skywalking/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=app1 -jar gateway-app1-1.0-SNAPSHOT.jar

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

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网关加入监控,启动命令

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,
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

更多推荐

2024届数字IC设计秋招面经-鼎信

背景985硕士,计算机科班,实验室做cpu设计和fpga算法加速,我做处理器安全方向,有项目。投递8.25没有笔试,两轮面试,直接通知下周一面试,草草的准备了下。一面技术面9.4不到半小时问项目和基础知识,当天出结果,第二天安排面试(不确实是技术还是HR)1.自我介绍2.挑一个熟悉的项目介绍下(AES加密算法)3.项目

岭回归与LASSO回归:解析两大经典线性回归方法

文章目录🍋引言🍋岭回归(RidgeRegression)🍋实战---岭回归🍋LASSO回归(LASSORegression)🍋实战---LASSO回归🍋岭回归和LASSO哪个更容易是直线🍋岭回归与LASSO回归的应用🍋L1正则化和L2正则化🍋偏差和方差🍋引言在机器学习和统计建模中,回归分析是一项重要

DPDK环境搭建

(1)虚拟环境:VMware®Workstation16Pro网上随便下载一个也行(2)操作系统:ubuntu-22.04-beta-desktop-amd64.iso下载地址:oldubuntu-releases-releases-22.04安装包下载_开源镜像站-阿里云(3)DPDK版本:22.07下载地址:htt

003-第一代硬件系统环境搭建

第一代硬件系统环境搭建文章目录第一代硬件系统环境搭建项目介绍摘要结构部分电路部分软件部分关键字:Qt、Qml、硬件、系统、搭建项目介绍欢迎来到我们的QML&C++项目!这个项目结合了QML(QtMeta-ObjectLanguage)和C++的强大功能,旨在开发出色的用户界面和高性能的后端逻辑。在项目中,我们利用QML

CocosCreator3.8研究笔记(十七)CocosCreator UI组件(一)

CocosCreator中,用户界面User-interface(UI)组件和2d渲染对象的区别在于2D渲染对象一般只负责将2D对象渲染出来,而UI则更多的承担着用户交互的能力。常用的UI控件可通过添加节点的方式来创建。在层级管理器中点击左上角的+创建节点按钮,然后选择UI来创建所需的UI节点,相应的UI组件便会自动挂

亚马逊商品详情数据接口

亚马逊商品详情数据接口可以用于获取商品详情信息,包括但不限于商品ID、商品标题、商品描述等。这些信息可以用于多种用途,例如:了解商品信息,帮助消费者做出购买决策。整合其他平台或网站的数据,提供全面的商品信息比较。为其他网站或应用程序提供数据支持,例如个性化推荐、搜索引擎优化等。总之,亚马逊商品详情数据接口可以促进商品信

域名解析--nslookup和dig

dig(DomainInformationGroper)dig是一个功能强大且更灵活的DNS查询工具,通常在Linux和macOS等Unix-like操作系统上使用。以下是dig的一些常见用法和区别:查询域名信息digexample.com这将返回与指定域名相关的DNS记录,包括IP地址、MX记录、CNAME记录等。指

【Go 基础篇】Go语言标识符解析:命名的艺术与最佳实践

介绍在计算机编程中,标识符(Identifier)是用来标识程序实体(变量、函数、类型等)的名称。良好的标识符命名可以使代码更加可读、易于维护,也能够提高代码的可理解性和可扩展性。在Go语言(Golang)中,标识符的命名规范和最佳实践对于编写高质量的代码至关重要。本篇博客将深入探讨Go语言中标识符的基本概念、命名规范

【Vue】上万个字把事件处理讲解的淋漓尽致

hello,我是小索奇,精心制作的Vue系列教程持续更新哈,想要学习&巩固&避坑就一起学习吧~事件处理事件的基本用法重点内容使用v-on:xxx缩写@xxx绑定事件,其中xxx是事件名(回顾:v-bind缩写为冒号:)事件的回调需要配置在methods对象中,最终会在VM上methods中配置的函数,不要用箭头函数,否

Linux网络编程(高并发服务器)

文章目录前言一、什么是高并发服务器二、使用多线程和多进程实现高并发服务器的思路三、多进程服务器代码编写四、多线程服务器代码编写总结前言本篇文章带大家学习Linux网络编程中的高并发服务器。首先我们需要了解什么是高并发服务器,然后是学习如何来编写高并发服务器。一、什么是高并发服务器高并发服务器是指能够同时处理大量并发请求

yamot:一款功能强大的基于Web的服务器安全监控工具

关于yamotyamot是一款功能强大的基于Web的服务器安全监控工具,专为只有少量服务器的小型环境构建。yamot只会占用非常少的资源,并且几乎可以在任何设备上运行。该工具适用于Linux或BSD,当前版本暂不支持Windows平台。比如说,广大研究人员可以使用yamot来监控在家运行的RaspberryPi服务器。

热文推荐