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

一.知识回顾

【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

默认在只放开了 healthinfo两个 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】就先学习到这里,更多的内容持续创作学习中。
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

硕风和炜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值