【详细学习SpringBoot源码-SpringBoot中的Actuator应用-数据可视化操作之SpringBootAdmin-数据可视化操作之Prometheus+Grafana安装部署-10】

Springboot使用Actuator健康监控以及可视化界面 前言 我们的微服务在云上部署以后都需要对其进行监控、追踪、审计、控制等。SpringBoot就抽取了Actuator场景,使得我们每个微服务快速引用即可获得生产级别的应用监控、审计等功能。 DEMO 新增场景启动器 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-act 阅读详情

一.知识回顾

【0.SpringBoot专栏的相关文章都在这里哟,后续更多的文章内容可以点击查看】
【1.SpringBoot初识之Spring注解发展流程以及常用的Spring和SpringBoot注解】
【2.SpringBoot自动装配之SPI机制&SPI案例实操学习&SPI机制核心源码学习】
【3.详细学习SpringBoot自动装配原理分析之核心流程初解析-1】
【4.详细学习SpringBoot自动装配原理之自定义手写Starter案例实操实战-2】
【5.IDEA中集成SpringBoot源码环境详细步骤讲解】
【6.初识SpringBoot核心源码之SpringApplication构造器以及run方法主线流程-3】
【7.详细学习SpringBoot核心源码之SpringApplication构造器&Run方法源码详细流程-4】
【8.详细学习SpringBoot核心源码之监听器原理-5(观察者设计模式、初始化并加载监听器核心流程、事件的发布器核心流程、SpringBoot中默认的监听器以及默认的事件类型)】
【9.详细学习SpringBoot源码之自定义监听器实战演练-6(自定义监听器、自定义监听事件、指定监听事件)】
【10.详细学习SpringBoot源码之属性配置文件加载原理(application.properties|application.yaml)-7】
【11.详细学习SpringBoot源码之属性配置文件加载原理(Bootstrap.properties|Bootstrap.yml)-8】
【12.详细学习SpringBoot源码之内嵌Tomcat启动原理分析&编译部署Tomcat源码过程解析-9】

一年一度的圣诞节来啦,在此祝大家圣诞节快乐,但是作为一名合格的打工人,学习的脚步也不能停下来哦。
在这里插入图片描述

二.SpringBoot中的Actuator应用

在这里插入图片描述

2.1 Actuator基本概念

通过对SpringBoot专栏源码的学习,我们更加明白了SpringBoot为什么能够很方便快捷的构建Web应用,那么应用部署上线后的健康问题怎么发现呢?在SpringBoot中给我们提供了Actuator来解决这个问题。SpringBoot中Actuator官方手册参考地址

新创建一个项目,并且在项目中导入有关Actuator需要的依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

启动项目:访问 http://localhost:8080/actuator
在这里插入图片描述

2.2 端点(Endpoints)

2.2.1 端点基本概念介绍

    执行器端点(endpoints)可用于监控应用及与应用进行交互,Spring Boot包含很多内置的端点,你也可以添加自己的。例如,health端点提供了应用的基本健康信息。
    每个端点都可以启用或禁用。这控制着端点是否被创建,并且它的bean是否存在于应用程序上下文中。要远程访问端点,还必须通过JMX或HTTP进行暴露,大部分应用选择HTTP,端点的ID映射到一个带 /actuator前缀的URL。例如,health端点默认映射到 /actuator/health。

2.2.2 配置文件中端点的相关配置

注意:Spring Boot 2.0的端点基础路径由“/”调整到”/actuator”下,如:/info调整为 /actuator/info 可以通过以下配置改为和旧版本一致:

# 设置actuator访问的路径
management.endpoints.web.base-path=/ljw

默认在只放开了 health和 info两个 Endpoint,如果要放开更多的Endpoint,我们需要配置如下信息

management.endpoints.web.exposure.include=*

现在我们看的 health信息比较少,如果我们需要看更详细的信息,可以配置如下

# health 显示详情
management.endpoint.health.show-details=always

shutdown端点默认是关闭的,我们可以打开它,shutdown只支持post方式提交,我们可以使用 postman来提交或者使用IDEA中提供的工具来提交。

# 放开 shutdown 端点
management.endpoint.shutdown.enabled=true

使用idea来进行提交测试
在这里插入图片描述

2.2.3 SpringBoot中提供的Endpoint端点
ID描述默认启用
auditevents显示当前应用程序的审计事件信息Yes
beans显示一个应用中所有Spring Beans的完整列表Yes
conditions显示配置类和自动配置类(configuration and auto-configuration classes)的状态及它们被应用或未被应用的原因Yes
configprops显示一个所有 @ConfigurationProperties的集合列表Yes
env显示来自Spring的 ConfigurableEnvironment的属性Yes
flyway显示数据库迁移路径,如果有的话Yes
health显示应用的 健康信息(当使用一个未认证连接访问时显示一个简单的’status’,使用认证连接访问则显示全部信息详情)Yes
info显示任意的 应用信息Yes
liquibase展示任何Liquibase数据库迁移路径,如果有的话Yes
metrics展示当前应用的 metrics`信息Yes
mappings显示一个所有 @RequestMapping`路径的集合列表Yes
scheduledtasks显示应用程序中的 计划任务`Yes
sessions允许从Spring会话支持的会话存储中检索和删除(retrieval and deletion)用户会话。使用Spring Session对反应性Web应用程序的支持时不可用。Yes
shutdown允许应用以优雅的方式关闭(默认情况下不启用)No
threaddump执行一个线程dumpYes

拓展补充:
如果使用web应用(Spring MVC, Spring WebFlux, 或者 Jersey),你还可以使用以下端点:

ID描述默认启用
heapdump返回一个GZip压缩的 hprof堆dump文件Yes
jolokia通过HTTP暴露 JMX beans(当Jolokia在类路径上时,WebFlux不可用)Yes
logfile返回 日志文件内容(如果设置了logging.file或logging.path属性的话),支持使用HTTP Range头接收日志文件内容的部分信息Yes
prometheus可以被Prometheus服务器抓取的格式显示 metrics信息Yes
2.2.4 监听其它服务步骤

health不仅仅可以监控SpringBoot本身的状态,还可以监控其他组件的信息,比如监控Redis服务。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

添加Redis的配置信息

# Redis的 host 信息
spring.redis.host=IP地址

重启服务,访问测试查看 :http://localhost:8080/ljw/health

在这里插入图片描述

三.SpringBoot中Actuator监控类型

在这里插入图片描述

3.1 health指标

显示的系统的健康信息,上面详细的介绍了health的相关内容。

3.2 metrics指标

metrics 端点用来返回当前应用的各类重要度量指标,比如内存信息,线程信息,垃圾回收信息等。
各个指标信息的详细描述:

序号参数参数说明是否监控监控手段重要度
JVM
1jvm.memory.maxJVM 最大内存
2jvm.memory.committedJVM 可用内存是展示并监控堆内存和Metaspace重要
3jvm.memory.usedJVM 已用内存是展示并监控堆内存和Metaspace重要
4jvm.buffer.memory.usedJVM 缓冲区已用内存
5jvm.buffer.count当前缓冲区数
6jvm.threads.daemonJVM 守护线程数是显示在监控页面
7jvm.threads.liveJVM 当前活跃线程数是显示在监控页面;监控达到阈值时报警重要
8jvm.threads.peakJVM 峰值线程数是显示在监控页面
9jvm.classes.loaded加载classes 数
10jvm.classes.unloaded未加载的classes 数
11jvm.gc.memory.allocatedGC 时,年轻代分配的内存空间
12jvm.gc.memory.promotedGC 时,老年代分配的内存空间
13jvm.gc.max.data.sizeGC 时,老年代的最大内存空间
14jvm.gc.live.data.sizeFullGC 时,老年代的内存空间
15jvm.gc.pauseGC 耗时是显示在监控页面
TOMCAT
16tomcat.sessions.createdtomcat 已创建 session 数
17tomcat.sessions.expiredtomcat 已过期 session 数
18tomcat.sessions.active.currenttomcat 活跃 session 数
19tomcat.sessions.active.maxtomcat 最多活跃 session 数是显示在监控页面,超过阈值可报警或者进行动态扩容重要
20tomcat.sessions.alive.max.secondtomcat 最多活跃 session 数持续时间
21tomcat.sessions.rejected超过session 最大配置后,拒绝的 session 个数是显示在监控页面,方便分析问题
22tomcat.global.error错误总数是显示在监控页面,方便分析问题
23tomcat.global.sent发送的字节数
24tomcat.global.request.maxrequest 最长时间
25tomcat.global.request全局request 次数和时间
26tomcat.global.received全局received 次数和时间
27tomcat.servlet.requestservlet 的请求次数和时间
28tomcat.servlet.errorservlet 发生错误总数
29tomcat.servlet.request.maxservlet 请求最长时间
30tomcat.threads.busytomcat 繁忙线程是显示在监控页面,据此检查是否有线程夯住
31tomcat.threads.currenttomcat 当前线程数(包括守护线程)是显示在监控页面重要
32tomcat.threads.config.maxtomcat 配置的线程最大数是显示在监控页面重要
33tomcat.cache.accesstomcat 读取缓存次数
34tomcat.cache.hittomcat 缓存命中次数
CPU
35system.cpu.countCPU 数量
36system.load.average.1mload average是超过阈值报警重要
37system.cpu.usage系统CPU 使用率
38process.cpu.usage当前进程CPU 使用率是超过阈值报警
39http.server.requestshttp 请求调用情况是显示10 个请求量最大,耗时最长的 URL;统计非 200 的请求量重要
40process.uptime应用已运行时间是显示在监控页面
41process.files.max允许最大句柄数是配合当前打开句柄数使用
42process.start.time应用启动时间点是显示在监控页面
43process.files.open当前打开句柄数是监控文件句柄使用率,超过阈值后报警重要

如果要查看具体的度量信息的话,直接在访问地址后面加上度量信息即可:http://localhost:8080/ljw/metrics/度量信息的参数指标

添加自定义的统计指标

@RestController
public class UserController {

    @GetMapping("/test")
    public String test(){
        // 1. 记录单个值 比如MQ中的消费者数量
        Metrics.gauge("ljw.gauge",100);
        // 2.统计当前请求执行的次数
        Metrics.counter("ljw.counter","hello","hello").increment();
        Metrics.timer("ljw.timer").record(()->{
            // Timer 统计的业务代码的时长
            try {
                Thread.sleep(new Random().nextInt(999));
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });
        // 统计命中率 ...
        Metrics.summary("ljw.summary").record(0.25);
        return "test";
    }
}

访问测试这个请求后查看metrics 信息:http://localhost:8080/test
然后再次测试访问:http://localhost:8080/ljw/metrics/ljw.counter
还可以继续测试访问其它的是接口信息。
在这里插入图片描述

3.3 loggers指标

loggers是用来查看当前项目每个包的日志级别的。默认的是info级别。

在这里插入图片描述

修改日志级别:发送POST请求到 http://localhost:8080/ljw/loggers/[包路径]

请求参数设置为:DEBUG

{
    "configuredLevel":"DEBUG"
}

通过postman来发送消息

在这里插入图片描述

然后再查看日志级别发现已经变动了

在这里插入图片描述

控制台也可以看到

在这里插入图片描述

3.4 info指标

显示任意的应用信息。我们可以在 properties 中来定义

在这里插入图片描述

访问:http://localhost:8080/ljw/info

在这里插入图片描述

四.定制端点

在这里插入图片描述

4.1 自定义Health端点

一般主流的框架组件都会提供对应的健康状态的端点,比如MySQL,Redis,Nacos等,但有时候我们自己业务系统或者自己封装的组件需要被健康检查怎么办,这时我们也可以自己来定义。先来看看 diskSpace磁盘状态。

在这里插入图片描述

对应的端点是 DiskSpaceHealthIndicator

image.png

有了上面的案例我们就可以自定义一个监控的健康状态的端点了。

在这里插入图片描述

启动服务

在这里插入图片描述

4.2 自定义info端点

4.2.1 info端点默认是空的

info节点默认情况下就是空的,这时我们可以通过info自定义来添加我们需要展示的信息,实现方式有两种

4.2.2 实现方式1-编写配置文件

在属性文件中配置

info.author=ljw
info.serverName=ActuatorDemo
info.versin=1.1.1
info.mavneProjectName=@project.artifactId@

重启服务

在这里插入图片描述

4.2.3 实现方式2-实现InfoContributor

我们可以在自定义的Java类中类实现

在这里插入图片描述

然后启动测试

在这里插入图片描述

4.3 自定义Metrics端点指标

除了使用metrics端点默认的这些统计指标外,我们还可以实现自定义统计指标,metrics提供了4中基本的度量类型:

  • gauge 计量器,最简单的度量类型,只有一个简单的返回值,他用来记录一些对象或者事物的瞬时值。
  • Counter 计数器 简单理解就是一种只增不减的计数器,它通常用于记录服务的请求数量,完成的任务数量,错误的发生数量
  • Timer 计时器 可以同时测量一个特定的代码逻辑块的调用(执行)速度和它的时间分布。简单来说,就是在调用结束的时间点记录整个调用块执行的总时间,适用于测量短时间执行的事件的耗时分布,例如消息队列消息的消费速率。
  • Summary 摘要 用于跟踪事件的分布。它类似于一个计时器,但更一般的情况是,它的大小并不一定是一段时间的测量值。在micrometer 中,对应的类是DistributionSummary,它的用法有点像Timer,但是记录的值是需要直接指定,而不是通过测量一个任务的执行时间。

测试:

@RestController
public class UserController {

    @GetMapping("/test")
    public String test(){
        // 1. 记录单个值 比如MQ中的消费者数量
        Metrics.gauge("ljw.gauge",100);
        // 2.统计当前请求执行的次数
        Metrics.counter("ljw.counter","hello","hello").increment();
        Metrics.timer("ljw.timer").record(()->{
            // Timer 统计的业务代码的时长
            try {
                Thread.sleep(new Random().nextInt(999));
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });
        // 统计命中率 ...
        Metrics.summary("ljw.summary").record(0.25);
        return "test";
    }
}

在这里插入图片描述

查看具体的指标信息

在这里插入图片描述

查看对应的tag信息

在这里插入图片描述

4.4自定义Endpoint端点

如果我们需要扩展Endpoint,这时我们可以自定义实现,我们可以在类的头部定义如下的注解

@Endpoint
@WebEndpoint
@ControllerEndpoint
@RestControllerEndpoint
@ServletEndpoint

再给方法添加@ReadOperation,@ WritOperation或@DeleteOperation注释后,该方法将通过JMX自动公开,并且在Web应用程序中也通过HTTP公开。

于方法的注解有以下三种,分别对应get post delete 请求

OperationHTTP method
@ReadOperationGET
@WriteOperationPOST
@DeleteOperationDELETE

自定义Endpoint案例:
在这里插入图片描述

启动访问测试

在这里插入图片描述

写入操作:

在这里插入图片描述

五.SpringBoot中的Actuator两种监控方式

在这里插入图片描述

  1. http:也就是上面我们学习的方式
  2. jmx [Java Management Extensions] Java管理扩展

首先需要我们在配置文件中放开jmx注释

# 放开 jmx 的 endpoint
management.endpoints.jmx.exposure.include=*
spring.jmx.enabled=true

通过jdk中提供的jconsole来查看
在这里插入图片描述
双击打开
在这里插入图片描述

六.监控系统-SpringBoot Admin

在这里插入图片描述

6.1 SpringBoot Admin

Github官方SpringBootAdmin查找学习网站

6.2 搭建Admin服务器

创建建对应的SpringBoot项目,添加相关依赖

        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
            <version>2.5.1</version>
        </dependency>

然后放开Admin服务即可

在这里插入图片描述

然后启动服务,即可访问

image.png

这个时候没有服务注册,所以是空的,这时我们可以创建对应的客户端来监控

6.3 客户端配置

使用我们上面创建的那个SpringBoot项目,并且整合Actuator后添加Admin的客户端依赖

        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
            <version>2.5.1</version>
        </dependency>

然后在属性文件中添加服务端的配置和Actuator的基本配置

server.port=8081
# 配置 SpringBoot Admin 服务端的地址
spring.boot.admin.client.url=http://localhost:8080
# Actuator的基本配置
management.endpoints.web.exposure.include=*

然后我们再刷新Admin的服务端页面

image.png

那么我们就可以在这个可视化的界面来处理操作了

image.png

6.4 服务状态

客户端服务配置—我们可以监控下MySQL的状态,先添加对应的依赖

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

然后添加对应的jdbc配置

spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mysql-base?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=root

然后我们在Admin中的health中就可以看到对应的数据库连接信息

image.png

注意当我把MySQL数据库关闭后,我们来看看

image.png

我们可以看到Admin中的应用墙变灰了

image.png

image.png

启动服务后,发现又正常了,然后我们修改下数据库连接的超时时间

# 数据库连接超时时间
spring.datasource.hikari.connection-timeout=2000

关闭数据库后,我们发下应用变红了

image.png

image.png

设置数据库连接超时后即可在有效的时间内发下应用的状态。

  • 绿色:正常状态
  • 灰色:连接客户端健康信息超时
  • 红色:可以看到具体的异常信息

6.5 安全防护

其实我们可以发现在SpringBootAdmin的管理页面中我们是可以做很多的操作的,这时如果别人知道了对应的访问地址,想想是不是就觉得恐怖,所以必要的安全防护还是很有必要的,我们来看看具体应该怎么来处理呢?

由于在分布式 web 应用程序中有几种解决身份验证和授权的方法,Spring Boot Admin 没有提供默认的方法。默认情况下,spring-boot-admin-server-ui 提供了一个登录页面和一个注销按钮。

导入依赖:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

然后添加对应的配置类

@Configuration(proxyBeanMethods = false)
public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {
    private final AdminServerProperties adminServer;

    private final SecurityProperties security;

    public SecuritySecureConfig(AdminServerProperties adminServer, SecurityProperties security) {
        this.adminServer = adminServer;
        this.security = security;
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
        successHandler.setTargetUrlParameter("redirectTo");
        successHandler.setDefaultTargetUrl(this.adminServer.path("/"));

        http.authorizeRequests(
                (authorizeRequests) -> authorizeRequests.antMatchers(this.adminServer.path("/assets/**")).permitAll()
                        .antMatchers(this.adminServer.path("/actuator/info")).permitAll()
                        .antMatchers(this.adminServer.path("/actuator/health")).permitAll()
                        .antMatchers(this.adminServer.path("/login")).permitAll().anyRequest().authenticated()
        ).formLogin(
                (formLogin) -> formLogin.loginPage(this.adminServer.path("/login")).successHandler(successHandler).and()
        ).logout((logout) -> logout.logoutUrl(this.adminServer.path("/logout"))).httpBasic(Customizer.withDefaults())
                .csrf((csrf) -> csrf.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
                        .ignoringRequestMatchers(
                                new AntPathRequestMatcher(this.adminServer.path("/instances"),
                                        HttpMethod.POST.toString()),
                                new AntPathRequestMatcher(this.adminServer.path("/instances/*"),
                                        HttpMethod.DELETE.toString()),
                                new AntPathRequestMatcher(this.adminServer.path("/actuator/**"))
                        ))
                .rememberMe((rememberMe) -> rememberMe.key(UUID.randomUUID().toString()).tokenValiditySeconds(1209600));
    }

    // Required to provide UserDetailsService for "remember functionality"
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication().withUser(security.getUser().getName())
                .password("{noop}" + security.getUser().getPassword()).roles("USER");
    }
}

然后对应的设置登录的账号密码

spring.security.user.name=user
spring.security.user.password=123456

然后访问Admin管理页面

在这里插入图片描述

输入账号密码后可以进入

在这里插入图片描述

原因是被监控的服务要连接到Admin服务端也是需要认证的

image.png

我们在客户端配置连接的账号密码即可
在这里插入图片描述

重启后访问Admin服务管理页面

在这里插入图片描述

6.6 注册中心

实际开发的时候我们可以需要涉及到的应用非常多,我们也都会把服务注册到注册中心中,比如nacos,Eureka等,接下来我们看看如何通过注册中心来集成客户端。就不需要每个客户端来集成了。

在这里插入图片描述

变为下面的场景

在这里插入图片描述

那么我们需要先启动一个注册中心服务,我们以Nacos为例

在这里插入图片描述

然后访问下Nacos服务

在这里插入图片描述

暂时还没有服务注册,我们可以注册几个服务,每个服务处理需要添加Nacos的注册中心配置外,我们还需要添加Actuator的配置
。此处我们就不做过多的演示了,我们就将admin项目给它配置nacos服务,然后启动相关的服务,可以看到相关的服务
在这里插入图片描述

在这里插入图片描述

然后我们需要配置下Admin中的nacos

<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
spring.application.name=spring-boot-admin-server
spring.cloud.nacos.discovery.server-addr=IP地址:8848
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos

启动服务,我们就可以看到对应的服务了

在这里插入图片描述

查看服务的详细监控信息

在这里插入图片描述

6.7 邮件通知

如果监控的服务出现了问题,下线了,我们希望通过邮箱通知的方式来告诉维护人员,

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

然后配置对应的邮箱信息

# 使用的邮箱服务  qq 163等
spring.mail.host=smtp.qq.com
# 发送者
spring.mail.username=xxx@qq.com
# 授权码
spring.mail.password=查找自己的授权码
#收件人
spring.boot.admin.notify.mail.to=xxx@qq.com
#发件人
spring.boot.admin.notify.mail.from=xxx@qq.com

开启SMTP服务,发送短信开启

在这里插入图片描述

然后启动服务,我们关闭服务然后查看服务和邮箱信息
在这里插入图片描述
立刻失败
在这里插入图片描述
收到邮件通知
在这里插入图片描述

好了对应的邮箱通知就介绍到这里,其他的通知方式可以参考官方网站

七.监控系统-Prometheus+Grafana

在这里插入图片描述

7.1 Docker安装部署Prometheus

Prometheus下载安装官方网站

通过wget命令来直接下载

wget https://github.com/prometheus/prometheus/releases/download/v2.28.1/prometheus-2.28.1.linux-amd64.tar.gz

在这里插入图片描述
解压文件
在这里插入图片描述
进入解压目录
在这里插入图片描述

然后配置Prometheus

在这里插入图片描述

  - job_name: 'Prometheus'
    metrics_path: '/ljw/prometheus'
    scrape_interval: 5s
    static_configs:
    - targets: ['192.168.10.131:8080']
      labels:
        instance: Prometheus

  • job_name:任务名称
  • metrics_path: 指标路径
  • targets:实例地址/项目地址,可配置多个
  • scrape_interval: 多久采集一次
  • scrape_timeout: 采集超时时间

执行脚本启动应用

./prometheus --config.file=prometheus.yml

在这里插入图片描述

访问应用: http://ip:9090

在这里插入图片描述

然后在我们的SpringBoot服务中添加 Prometheus的端点,先添加必要的依赖

        <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-registry-prometheus</artifactId>
        </dependency>

在这里插入图片描述

然后就会有该端点信息

在这里插入图片描述
如果出现如下的问题:我配置访问失败的原因是监控的服务和Java项目访问的地址不在同一个网段上,我解决的办法是我Linux服务器是云服务器,这次我在本地上重新配置一台linux服务器重新启动测试,访问成功。
在这里插入图片描述
重新修改配置文件

  - job_name: 'Prometheus'
    metrics_path: '/ljw/prometheus'
    scrape_interval: 8s
    static_configs:
    - targets: ['192.168.10.1:8080']
      labels:
        instance: Prometheus

Prometheus服务器可以周期性的爬取这个endpoint来获取metrics数据,然后可以看到

在这里插入图片描述

7.2 Linux操作系统安装部署Grafana

可视化工具:https://grafana.com/grafana/download

通过wget命令下载

wget https://dl.grafana.com/oss/release/grafana-8.0.6-1.x86_64.rpm
sudo yum install grafana-8.0.6-1.x86_64.rpm

在这里插入图片描述

安装Grafana

sudo yum install grafana-8.0.6-1.x86_64.rpm

在这里插入图片描述

启动查看运行状态命令

sudo service grafana-server start
sudo service grafana-server status

在这里插入图片描述

访问的地址是 http://ip:3000 默认的帐号密码 admin/admin
在这里插入图片描述

登录进来后的页面

在这里插入图片描述

添加数据源:

在这里插入图片描述
在这里插入图片描述

添加数据源的信息步骤
在这里插入图片描述
在这里插入图片描述

网站上搜索网页,添加Dashboards https://grafana.com/grafana/dashboards 搜索SpringBoot的 Dashboards

在这里插入图片描述
Spring Boot Statistics
在这里插入图片描述

找到Dashboards的ID
在这里插入图片描述

然后导入即可
在这里插入图片描述

在这里插入图片描述

点击Load出现如下界面

在这里插入图片描述

然后就可以看到对应的监控数据了

在这里插入图片描述

好了,关于【详细学习SpringBoot源码-SpringBoot中的Actuator应用-数据可视化操作之SpringBootAdmin-数据可视化操作之Prometheus+Grafana安装部署-10】就先学习到这里,更多的内容持续创作学习中。
在这里插入图片描述

SpringBoot Admin 实现Actuator端点可视化监控(开启认证) 还有更多的Redis、MySQL、JVM、Kafka、微服务、Spring全家桶等学习笔记这里就不一一列举出来。 阅读详情

相关推荐

Spring Boot Actuator监控实战:从端点数据到可视化驾驶舱

在微服务架构中,应用监控是保障系统稳定性的基石。其核心原理在于通过暴露应用内部状态与性能指标,实现对系统运行状况的可观测性。这项技术的价值在于将运维从“黑盒”转向“白盒”,使开发者能快速定位性能瓶颈、预测容量并确保业务连续性。典型的应用场景包括健康检查、性能分析、日志管理和实时告警。本文聚焦于Spring Boot Actuator这一标准组件,深入解析其提供的丰富端点(如`/health`、`/metrics`),并探讨如何将这些原始数据转化为直观的可视化监控界面。通过对比Spring Boot Admi

weixin_30431445的博客 316

SpringBoot自带的Actuator监视器及其可视化页面Monitor

actuator, monitor

qq_38636120的博客 2214

EDK2多平台编译实战:从树莓派到RK3399的UEFI固件构建

本文提供了从树莓派到RK3399的EDK2多平台编译实战指南。详细介绍了UEFI固件构建的环境搭建、交叉编译配置、平台描述文件修改及常见问题排查,帮助开发者掌握为不同ARM架构硬件构建标准化启动固件的核心技能。

weixin_29193259的博客 836

SpringBoot+Actuator+Prometheus+Grafana进行可视化应用监控

SpringBoot+Actuator+Prometheus+Grafana进行可视化应用监控

qq_43657722的博客 2505

VMware ubuntu虚拟机(或Centos7)与主机共享文件夹

系统环境 Windows 10 Vmware Workstation 15 Pro Ubuntu 20.04.1 LTS centos7 1.Ubuntu配置共享文件 1.1安装VMware-tools 更新最新VMware-tools组件 编辑->首选项->更新->立即下载所有组件 安装VMware-tools 虚拟机->安装VMware-tools 安装后ubuntu会加载一个虚拟光驱,解压文件,在解压的文件目录下执行以下命令进行安装 sudo vmware-instal

weixin_38924500的博客 2160

如何在windows下使用cmake编译源码

MyProject/└── build/在MyProject目录下创建并编辑。创建build目录并进入。使用cmake命令生成构建文件。使用适当的命令编译项目。运行生成的可执行文件。

cdj444asdg的博客 3345

springboot Actuator的指标监控可视化

Spring Boot Admin

689

(三) Debian 安装linuxcnc-ethercat中间件

1.在这里同样的也是需要下载一下依赖包 sudo apt install linuxcnc-uspace-dev 2.依赖包安装完成, 接着执行下面命令 sudo git clone https://github.com/sittner/linuxcnc-ethercat 还是可能出现下载网络错误下载不成功,可以直接下载我已上传百度云linuxcnc目录下 注意一下,后面make可能会出现头文件(xxx.h)的报错提示,在这里给大家一个处理办法 用aptitude 工具可以搞定 sudo apt-get

qq_30065813的博客 828

Spring Boot Actuator监控数据可视化

TIPS 本文基于Spring Boot 2.1.5,理论支持Spring Boot 2.x所有版本 众所周知,Spring Boot有个子项目Spring Boot Actuator,它为应用提供了强大的监控能力。从Spring Boot 2.0开始,Actuator将底层改为Micrometer,提供了更强、更灵活的监控能力。Micrometer是一个监控门面,可以类比成监控界的 Slf4j 。 借助Micrometer,应用能够对接各种监控系统,例如: AppOptics、Atlas、Datado.

简单随风的博客 2469

【YoloV11改进策略】基于流形约束超连接(mHC)增强YoloV11全局特征提取能力|独家复现|梁文峰署名论文

论文标题:流形约束超连接 (Manifold-Constrained Hyper-Connections, mHC)核心问题:针对超连接 (Hyper-Connections, HC) 扩展残差流宽度时破坏恒等映射、引发训练不稳定性和高内存开销的问题,提出一种约束性框架。目标:恢复残差连接的稳定性与可扩展性,同时保持HC的性能增益。基准模型:基于DeepSeek-V3的MoE架构,进行了3B、9B、27B模型的实验验证。论文图示mHC 是一个通用的HC扩展框架。

m0_47867638的博客 1348

BES2300x笔记(36) -- OTA升级

哈喽大家好,这是该系列博文的第三十六篇~ 篇~ <<【系列博文索引】快速通道 >> 一、前言 BES 蓝牙方案自带 OTA(Over The Air)功能,该功能可以对蓝牙固件进行在线升级,目前该功能支持通过安卓手机(苹果手机也有对应APP,未实际测试)对蓝牙固件进行升级,以后还会支持通过 PC 端进行在线升级。在使用 OTA 功能之前,用户需安装 BES 提供的手机 apk 软件,将需要升级的固件拷贝到手机,然后通过该 apk 软件进行在线升级。

文化人的博客 5356

Spring Boot Actuator深度应用:健康检查+监控指标可视化方案

在当今的微服务架构中,确保服务的高可用性和性能优化是至关重要的。Spring Boot Actuator 作为 Spring Boot 框架的一个强大工具,为我们提供了生产级别的特性,如健康检查、监控指标收集等,帮助开发者更好地管理和监控应用程序。本文将深入探讨 Spring Boot Actuator 的健康检查和监控指标可视化方案,旨在为技术人员提供一套完整的解决方案。

梵心白莲的博客 1450

YOLOv11 模型轻量化全流程:从剪枝到量化,打造移动端“极速检测利器”

将浮点模型量化为INT8模型,减少内存占用并加速推理。# 加载剪枝后的模型# 转换为TorchScript# 静态量化# 保存量化模型量化后模型推理速度可再提升20%,而mAP损失小于1%。

m0_64661770的博客 465

Spring-boot-starter-actuator的可视化spring-boot-admin

然后新建一个springboot项目导入spring-boot-admin-starter-server,将其作为我们的监控服务器。总结:Spring-boot-starter-actuator 通过请求可以获取被监控服务器的配置(前提是对外开放信息)基于Spring-boot-starter-actuator的可视化工具:spring-boot-admin。在被监控的服务器中导入spring-boot-admin-starter-client。然后可以观察到我们的应用被监控服务器所监控。

weixin_53050118的博客 1106

手把手教程 | 使用 apktool 修改已发布 APK 的版本号与版本名称

摘要:本文介绍如何使用apktool工具直接修改APK版本信息,适用于版本回滚、多版本测试等场景。详细步骤包括反编译APK、修改版本号、重打包、对齐优化和重新签名,并分享了反编译相关实用知识。该方法无需源代码参与,但需注意修改后的APK必须重新签名才能安装。最后强调应在合法范围内使用反编译技术。

学无止境 825

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

06_项目集成 Spring Actuator 并实现可视化页面

📝 项目集成Spring Actuator监控方案摘要 本文介绍如何为Spring Boot项目集成Spring Actuator监控功能并实现可视化: 1️⃣ 引入Actuator依赖,配置端点路径、暴露策略及详细信息展示 2️⃣ 常见端点详解:/health健康检查、/info应用信息、/metrics性能指标等 3️⃣ 通过spring-boot-monitor实现可视化监控页面 4️⃣ 安全配置:集成Spring Security保护监控接口,设置账户权限控制 关键配置包括端点路径自定义、启用详细

wgy17734894660的博客 865

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Springboot整合SpringAdmin、actuator实现可视化监控

需要对应Springboot版本,此处是2.5.3。先启动服务端再启动客户端即可。

weixin_44976835的博客 845

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

SpringBoot监控体系深度解读:Actuator与Prometheus可视化

在当今的软件开发领域,Spring Boot 凭借其便捷性和高效性,成为了构建微服务架构的首选框架。然而,随着系统复杂度的不断增加,如何对 Spring Boot 应用进行有效的监控和管理,成为了开发人员面临的重要挑战。Spring Boot Actuator 和 Prometheus 作为强大的监控工具,为我们提供了全面且直观的监控解决方案。本文将深入探讨这两个工具的使用,以及如何实现监控数据的可视化。

梵心白莲的博客 1258

Spring Boot 教程7:Actuator

在这篇文章中,我们将介绍Spring Boot Actuator。我们将首先介绍基础知识,然后详细讨论Spring Boot 2.x与1.x中的可用性。我们将学习如何在Spring Boot 2.x和WebFlux中使用、配置和扩展这个监控工具,利用响应式编程模型。然后,我们将讨论如何使用Boot 1.x执行相同的操作。随着Spring Boot 2的发布,,执行器已经重新设计,并添加了新的令人兴奋的端点。什么是Actuator?

梦幻天空 1527

【监控】Spring Boot+Prometheus+Grafana实现可视化监控

快速讲解Prometheus+grafana实现spring boot的可视化监控。

BugMan的博客 4597

SpringBoot监控体系搭建:Actuator+Prometheus+Grafana可视化实战

Actuator 是 Spring Boot 提供的一个强大工具,它可以帮助我们收集应用程序的运行时信息,如健康状况、内存使用情况、线程信息等。Prometheus 是一个开源的监控和警报工具,具有强大的数据采集和查询能力。Grafana 则是一个可视化平台,能够将 Prometheus 采集的数据以直观的图表和仪表盘的形式展示出来。本文将详细介绍如何搭建一个基于 Actuator、Prometheus 和 Grafana 的 Spring Boot 监控体系。

梵心白莲的博客 1136

springboot(二)Actuator的作用和使用

Actuator actuator是springboot中的一个附加功能,官方是对它这样介绍的: Spring Boot inc...

别抢我蓝buff 2883

Spring Boot Actuator监控及图形化监控

Actuator监控介绍 Actuator是Spring Boot自带的监控功能,可以帮助实现对程序内部运行情况的监控,如监控状况、Bean加载情况,配置属性,日志信息等。 Actuator监控 快速使用 首先使用idea快速搭建一个web项目 pom.xml文件中应该至少有这两个依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>

beansice的博客 4823

对微服务的监控的两种办法(springbootAdmin、prometheus+grafana)

springboot-admin实现对服务的监控 一、actuator客户端(即每一个需要监控的微服务) 1、在业务微服务中引入jar包 <!-- 引入Actuator监控依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator&lt

m0_37635053的博客 1万+
上一篇: 【LeetCode每日一题:1759. 统计同构子字符串的数目~~~数学公式+双指针+动态规划】
下一篇: 【LeetCode每日一题:2027. 转换字符串的最少操作次数~~~模拟+贪心+双指针】
硕风和炜
硕风和炜 优质创作者: Java技术领域 优质创作者: Java技术领域
博客等级 码龄7年 2万+粉丝 1024原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硕风和炜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值