我们如何监控SpringBoot的健康状况,其实对于SpringBoot是很有必要去监控和检查的,因为我们通过这个方式呢,是当前程序运行的一个状态,那我们讲监控SpringBoot健康状况的当中,会讲两种方式,第一种是使用Actuator插件,检查SpringBoot的状态,第二种可以使用可视化的监控报表,SpringBootAdmin,来监控我们SpringBoot的健康状况,我们先讲解第一种,使用Actuator检查与监控,在这里我们先说一下,如果SpringBoot想用Actuator来做监控的话,来做健康检查的话,他的使用步骤是什么样的,第一步我们需要在pom文件里添加Actuator的坐标,并且通过坐标会导入相应的坐标,在pom文件中添加Actuator的坐标,这是第一个步骤,第二个步骤,在全局配置文件中,设置关闭安全限制,也就是默认的对于访问信息,安全限制是开启的,那么我们就没法去获取安全信息,当然这个在不同的版本当中是有区别的,比如说我们现在,打开我们的pom文件,现在我们用的springboot用的是1.5.12.RELEASE,我没记错的话是在1.5以下,不包括1.5,他的这个版本当中,与Actuator使用是不用关闭安全限制的,在1.5以上对于安全限制呢,他默认是开启的,需要在配置文件当中去关闭,如果我们把上面两个步骤做完,我们就可以使用Actuator插件,SpringBoot就可以去做健康监控了,那我们接下来就跟着这个步骤,去完成相应的操作,打开我们的pom文件,在这里我们需要添加一个坐标,这个坐标是什么呢,我们把它copy过来,还是org.springframework.boot下的一个jar包,jar包叫什么呢,artifactId叫spring-boot-starter-actuator,其实这个坐标也很好记,把我们的WEB启动器,后面的WEB改成actuator就可以了,因为它是springboot的一个插件,给他的groupId也都是相同的,这是第一步,第二步我们说过,需要去关闭安全限制,那么在哪去设置安全限制呢,在全局配置文件当中,打开我们的项目看一下,其实我们现在没有一个全局配置文件,这些都加入了其他字符了,就不再是默认的springboot的配置文件了,那我们需要重新创建一个全局配置文件,在这里我拷贝一个,我们新建的就是springboot全局配置文件的,他的名称叫application.properties,在这里我们把端口号去掉,在这里我们需要加入什么呢,加入一句话management.security.enabled=false默认的是true,我们把它改成false,这样就关闭了安全限制,我们把这两项设好以后,接下来我们再把springboot程序启动一下,找到启动类,运行,我们观察控制台,在这里我们看,控制台它会输出这样的信息,其实这些信息就是为我们提供了健康状况做不同检查的URI的一个标记,比如这里我们找一个最简单的,像这个healthMapped "{[/health || /health.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.
Mapped "{[/autoconfig || /autoconfig.json],methods=[GET],produces=[application/vnd.spring-boot.a
Mapped "{[/heapdump || /heapdump.json],methods=[GET],produces=[application/octet-stream]}" onto
Mapped "{[/info || /info.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+j
Mapped "{[/dump || /dump.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+j
Mapped "{[/mappings || /mappings.json],methods=[GET],produces=[application/vnd.spring-boot.actua
Mapped "{[/configprops || /configprops.json],methods=[GET],produces=[application/vnd.spring-boot
Mapped "{[/trace || /trace.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1
Mapped "{[/beans || /beans.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1
Mapped "{[/loggers/{name:.*}],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+js
Mapped "{[/loggers/{name:.*}],methods=[POST],consumes=[application/vnd.spring-boot.actuator.v1+j
Mapped "{[/loggers || /loggers.json],methods=[GET],produces=[application/vnd.spring-boot.actuato
Mapped "{[/auditevents || /auditevents.json],methods=[GET],produces=[application/vnd.spring-boot
Mapped "{[/env/{name:.*}],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json |
Mapped "{[/env || /env.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+jso/health这表示什么意思呢,在我的笔记当中已经给大家罗列出来了

对应控制台里的URI,比如我们找health,他表示什么呢,显示应用程序运行健康信息,这是最简单的一个信息了,我们接下来就看怎么通过URI,去获取springboot的基本信息,我们把这个URIcopy一下,打开浏览器,我们在这里去访问一下,后面直接加我们拷贝的URI就可以了localhost:8080/health{status: "UP",diskSpace: {status: "UP",total: 104857595904,free: 12969869312,threshold: 10485760}
}这是一个JSON格式的字符串,返回给springboot的一个基本信息,这里我们来看一下,第一个status是状态,UP表示什么呢,就是当前这个状态是正常的,就是你的springboot项目是正常运行的,然后还有一个diskSpace,就是你的磁盘空间,在磁盘空间里呢,运行状态也是正常的,total就是你当前项目的磁盘,服务器所在的磁盘,总空间,free是剩余空间,就是可用空间,然后还有一个threshold,这是什么呢,边界值,边界值是什么意思呢,当前你要在你的磁盘里面运行你的springboot程序,那么你的磁盘空间至少要有10485760这么多,至少要提供10M的空间,所以这是一个边界值,所以我们通过health可以得到基本的显示,当然这里还有其他的,再找一个比较常见的,你像这个env,这是什么呢,看环境变量的,我们拿过来,在这里我们把它访问一下http://localhost:8080/env这个时候的信息就会多一些,那么对于这样的信息,你会发现他也是JSON格式的了,那这个时候我们怎么办呢,当然我们也可以用工具来做JSON格式的转换,比如我们可以找一下JSON在线解析的工具json在线解析https://www.sojson.com/然后我们把信息copy一下,然后放到在线工具当中,在这里我们看一下,profiles: [ ],profiles现在什么都没有,所以是空的,不用管它,然后有一个server.ports: {local.server.port: 8080
}当前你的程序所监听的一个端口,8080,然后还有一个servletContextInitParams: { }就是你上下文初始化所需要的参数,那我们这里没有相应的参数,所以是空的,然后下面就是你的系统属性systemPropertiesjava.runtime.name: "Java(TM) SE Runtime Environment",
sun.boot.library.path: "C:\Program Files\Java\jdk1.8.0_151\jre\bin",
java.vm.version: "25.151-b12",
user.country.format: "US",
java.vm.vendor: "Oracle Corporation",
java.vendor.url: "http://java.oracle.com/",
path.separator: ";",
java.vm.name: "Java HotSpot(TM) 64-Bit Server VM",
file.encoding.pkg: "sun.io",
user.country: "CN",
user.script: "",
sun.java.launcher: "SUN_STANDARD",
sun.os.patch.level: "",
PID: "8904",
java.vm.specification.name: "Java Virtual Machine Specification",
user.dir: "C:\JavaEE_Workspace\springboot-hello",
java.runtime.version: "1.8.0_151-b12",
java.awt.graphicsenv: "sun.awt.Win32GraphicsEnvironment",
org.jboss.logging.provider: "slf4j",
java.endorsed.dirs: "C:\Program Files\Java\jdk1.8.0_151\jre\lib\endorsed",
os.arch: "amd64",
java.io.tmpdir: "C:\Users\Leon.sun\AppData\Local\Temp\",
line.separator: " ",
java.vm.specification.vendor: "Oracle Corporation",
user.variant: "",
os.name: "Windows 8.1",
sun.jnu.encoding: "GBK",
spring.beaninfo.ignore: "true",在这里有java.runtime.name,表示你当前JAVA虚拟机的一个版本,虚拟机的一个名称,我们用的是Java(TM) SE Runtime Environment,然后还有你用的JDK的路径,我们用的是C:\Program Files\Java\jdk1.8.0_151\jre\bin,然后还有当前JVM的版本,还有URL,还有分隔符,还有VM里面核心的名称是什么,Java HotSpot(TM) 64-Bit Server VM,在这里我们可以看到跟环境变量相关的信息,这里读的这一块就是虚拟机的一些信息,下面还有其他的配置信息,这是对env,看我们springboot环境变量的一个方式,还有一个是什么呢,我们还可以通过/dump,来查看他的dump信息localhost:8080/dump其实大家对dump并不陌生吧,举个最简单的例子,我们用debug去调式的时候,在debug模式下,左侧显示线程的信息,其实就是dump里面的一些信息,在没有springboot提供的Actuator工具的时候,如果我们想要看dump信息,其实这是一件非常麻烦的事,我们得借助JDK当中的一些工具,通过工具才能查看dump的信息,如果感兴趣的呢,我在这里就不讲了,在JVM检查他的健康状况,就有对于dump文件的查看,然后我们也把这个copy,在这里我们可以看到,是我们线程的信息{threadName: "DestroyJavaVM",threadId: 33,blockedTime: -1,blockedCount: 0,waitedTime: -1,waitedCount: 0,lockName: null,lockOwnerId: -1,lockOwnerName: null,inNative: false,suspended: false,threadState: "RUNNABLE",stackTrace: [ ],lockedMonitors: [ ],lockedSynchronizers: [ ],lockInfo: null
}ThreadId线程ID是多少,还有锁的时间,没有锁,blockedCount锁的数量,没有,还有lockName锁的名称,保持本地线程inNative,也没有本地线程也是false,还有这个线程是否是挂起的suspended,也是false的,这些其实就是dump文件给我们输出的dump信息,可以查看springboot在运行时的一些状况,那么至于其他的URI表示什么意思呢,就不一一讲解了,表格去看一下,你也可以去试一下,我相信大家去读一下也是能读懂的,我们主要是讲一下Actuator的一个使用,其实相对于来说,Actuator比SpringBootAdmin还要简单一些,毕竟他不是一个可视化的一个报表,我们主要讲一下什么是监控健康状况,怎么去监控
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.learn</groupId><artifactId>springboot-hello</artifactId><version>0.0.1-SNAPSHOT</version><name>springboot-hello</name><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.12.RELEASE</version></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><!-- springBoot的启动器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
management.security.enabled=false
package com.learn.springboothello;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class SpringbootHelloApplication {public static void main(String[] args) {SpringApplication.run(SpringbootHelloApplication.class, args);}}

使用Actuator检查与监控相关推荐

  1. SpringBoot实战(五):配置健康检查与监控

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 众所周知,系统预警是一件十分重要的事情,系统一旦出现宕机很有可能许多真金白银就进去了: ...

  2. java健康检查代码_SpringBoot实现项目健康检查与监控

    Spring Boot 最主要的特性就是AutoConfig(自动配置),而对于我们这些使用者来说也就是各种starter, Spring Boot-Actuator 也提供了starter,为我们自 ...

  3. 用Semisynchronous Replication半同步,mk-table-checksum数据同步一致性检查,监控主从同步运行状态的脚本等方式加强SQL性能和数据审核...

    一,为A组在X单独另建一个MYSQL服务器(MYSQL B),A组平时更新的数据库为MYSQL B.待MYSQL B的数据审核准确无误后.发布给现在布置在X上的MYSQL服务器(MYSQL A).并进 ...

  4. springboot 启动后打印_SpringBoot实战(五):配置健康检查与监控

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 众所周知,系统预警是一件十分重要的事情,系统一旦出现宕机很有可能许多真金白银就进去了: ...

  5. springboot springcloud区别_SpringBoot回顾、Spring Cloud初学

    Spring Cloud介绍 什么是Spring Cloud? Spring Cloud是一系列框架的有序集合. 它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发 ...

  6. 视频教程-spring cloud与spring boot实战视频教程-Java

    spring cloud与spring boot实战视频教程 从事互联网开发架构11年,曾在阿里任职java架构师,擅长SOA.分布式搜索的架构设计; 精于JVM.TCP.CPU.缓存.磁盘.网络等大 ...

  7. SpringBoot补充知识点(一)

    目录 一.配置文件 1.1.格式 1.2.存放位置及加载顺序 1.3.占位符${} 1.4.bootstrap 配置文件 二.常见注解 2.1.核心注解 2.1.1.@SpringBootApplic ...

  8. Spring Boot 应用监控:Actuator与 Admin

    第 III 部分Spring Boot 系统监控.测试与运维 Spring Boot 应用监控:Actuator与 Admin <Spring Boot 实战开发>(陈光剑) -- 基于 ...

  9. SpringBoot2.0 基础案例(16):配置Actuator组件,实现系统监控

    本文源码 GitHub地址:知了一笑 https://github.com/cicadasmile/spring-boot-base 一.Actuator简介 1.监控组件作用 在生产环境中,需要实时 ...

最新文章

  1. win7怎么配置程序服务器错误日志文件,win7怎么配置程序服务器
  2. Java 线程池的介绍以及工作原理
  3. C#之获取mp3文件信息
  4. 用java实现楼层导航_JS实现网站楼层导航效果代码实例
  5. vici 开源asp.net mvc支持asp.net2.0II6.0下部署 实例下载地址
  6. iPhone 13 Pro“终极”渲染图曝光:后置镜头模组将有大幅升级
  7. ligertoolbar 动态加载按钮_Axure利用动态面板实现环形加载进度条
  8. 软件测试实验1:JUnit、Hamcrest、Eclemma
  9. 12.5 防止死锁的加锁机制
  10. 基于热传导方程的高温作业专用服装设计(二)
  11. Jmeter使用插件查看服务器CPU、内存使用率
  12. phpspider PHP 爬虫
  13. 【米勒拉宾模板】Palindromic Primes
  14. Docker 镜像仓库 Harbor 部署 及 跨数据复制
  15. 云端体验鸿蒙,AI加持的另类彩电之华为智慧屏带你体验鸿蒙
  16. QC —什么是量子计算机?
  17. 【蜂口 | AI人工智能】人脸美颜——龙鹏 深度学习与人脸图像应用连载(八)...
  18. java实现简单扫码登录功能(模仿微信网页版扫码)
  19. 【从0到1搭建LoRa物联网】20、LoRaWAN扩展
  20. 定义一个图形类及其子类,计算其面积和周长

热门文章

  1. IOS 控件 - 去除 tableView 多余的横线
  2. NHibernate 对分组聚合支持的不好
  3. HttpURLConnection总结
  4. Mybatis invalid comparison: java.util.Date and java.lang.String
  5. Android Jetpack组件之数据库Room详解(三)
  6. Flutter 系列文章:Flutter Icon 控件介绍
  7. SpringBoot-AOP切面处理
  8. 【HRS项目】Axure兴许问题解决---与SVN结合
  9. VMware Ubuntu 共享文件夹
  10. include *.h 和 declare class *; 的区别?