Spring Boot有四大神器,分别是auto-configuration、starters、cli、actuator,本文主要讲actuator。actuator是spring boot提供的对应用系统的自省和监控的集成功能,可以对应用系统进行配置查看、相关功能统计等。

使用actuator

  • 添加依赖

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

主要暴露的功能

HTTP方法 路径 描述 鉴权
GET /autoconfig 查看自动配置的使用情况 true
GET /configprops 查看配置属性,包括默认配置 true
GET /beans 查看bean及其关系列表 true
GET /dump 打印线程栈 true
GET /env 查看所有环境变量 true
GET /env/{name} 查看具体变量值 true
GET /health 查看应用健康指标 false
GET /info 查看应用信息 false
GET /mappings 查看所有url映射 true
GET /metrics 查看应用基本指标 true
GET /metrics/{name} 查看具体指标 true
POST /shutdown 关闭应用 true
GET /trace 查看基本追踪信息 true

/autoconfig

{"positiveMatches": {"AuditAutoConfiguration.AuditEventRepositoryConfiguration": [{"condition": "OnBeanCondition", "message": "@ConditionalOnMissingBean (types: org.springframework.boot.actuate.audit.AuditEventRepository; SearchStrategy: all) found no beans" } ] }, "negativeMatches": { "CacheStatisticsAutoConfiguration": [ { "condition": "OnBeanCondition", "message": "@ConditionalOnBean (types: org.springframework.cache.CacheManager; SearchStrategy: all) found no beans" } ] } } 

/configprops

{"management.health.status.CONFIGURATION_PROPERTIES": {"prefix": "management.health.status", "properties": { "order": null } }, "multipart.CONFIGURATION_PROPERTIES": { "prefix": "multipart", "properties": { "enabled": false, "maxRequestSize": "10Mb", "location": null, "fileSizeThreshold": "0", "maxFileSize": "1Mb" } }, "environmentEndpoint": { "prefix": "endpoints.env", "properties": { "id": "env", "enabled": true, "sensitive": true } } }

/beans

[{"context": "application:8080", "parent": null, "beans": [ { "bean": "appMain", "scope": "singleton", "type": "com.xixicat.AppMain$$EnhancerBySpringCGLIB$$29382b14", "resource": "null", "dependencies": [ ] }, { "bean": "videoInfoMapper", "scope": "singleton", "type": "com.xixicat.dao.VideoInfoMapper", "resource": "file [/Users/xixicat/workspace/video-uber/target/classes/com/xixicat/dao/VideoInfoMapper.class]", "dependencies": [ "sqlSessionFactory" ] } ] } ]

/dump

[{"threadName": "Signal Dispatcher", "threadId": 4, "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 }, { "threadName": "Reference Handler", "threadId": 2, "blockedTime": -1, "blockedCount": 217, "waitedTime": -1, "waitedCount": 9, "lockName": "java.lang.ref.Reference$Lock@45de945", "lockOwnerId": -1, "lockOwnerName": null, "inNative": false, "suspended": false, "threadState": "WAITING", "stackTrace": [ { "methodName": "wait", "fileName": "Object.java", "lineNumber": -2, "className": "java.lang.Object", "nativeMethod": true }, { "methodName": "wait", "fileName": "Object.java", "lineNumber": 503, "className": "java.lang.Object", "nativeMethod": false }, { "methodName": "run", "fileName": "Reference.java", "lineNumber": 133, "className": "java.lang.ref.Reference$ReferenceHandler", "nativeMethod": false } ], "lockedMonitors": [ ], "lockedSynchronizers": [ ], "lockInfo": { "className": "java.lang.ref.Reference$Lock", "identityHashCode": 73263429 } } ]

/env

{profiles: [],server.ports: {local.server.port: 8080},servletContextInitParams: {},systemProperties: {java.runtime.name: "Java(TM) SE Runtime Environment",sun.boot.library.path: "/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib",java.vm.version: "24.79-b02",gopherProxySet: "false",maven.multiModuleProjectDirectory: "/Users/xixicat/workspace/video-uber",java.vm.vendor: "Oracle Corporation",java.vendor.url: "http://java.oracle.com/",guice.disable.misplaced.annotation.check: "true",path.separator: ":",java.vm.name: "Java HotSpot(TM) 64-Bit Server VM", file.encoding.pkg: "sun.io", user.country: "CN", sun.java.launcher: "SUN_STANDARD", sun.os.patch.level: "unknown", PID: "763", java.vm.specification.name: "Java Virtual Machine Specification", user.dir: "/Users/xixicat/workspace/video-uber", java.runtime.version: "1.7.0_79-b15", java.awt.graphicsenv: "sun.awt.CGraphicsEnvironment", java.endorsed.dirs: "/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/endorsed", os.arch: "x86_64", java.io.tmpdir: "/var/folders/tl/xkf4nr61033gd6lk5d3llz080000gn/T/", line.separator: " ", java.vm.specification.vendor: "Oracle Corporation", os.name: "Mac OS X", classworlds.conf: "/Users/xixicat/devtool/maven-3.3.3/bin/m2.conf", sun.jnu.encoding: "UTF-8", spring.beaninfo.ignore: "true", java.library.path: "/Users/xixicat/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.", java.specification.name: "Java Platform API Specification", java.class.version: "51.0", sun.management.compiler: "HotSpot 64-Bit Tiered Compilers", os.version: "10.10.5", user.home: "/Users/xixicat", user.timezone: "Asia/Shanghai", java.awt.printerjob: "sun.lwawt.macosx.CPrinterJob", file.encoding: "UTF-8", java.specification.version: "1.7", java.class.path: "/Users/xixicat/devtool/maven-3.3.3/boot/plexus-classworlds-2.5.2.jar", user.name: "xixicat", java.vm.specification.version: "1.7", sun.java.command: "org.codehaus.plexus.classworlds.launcher.Launcher spring-boot:run", java.home: "/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre", sun.arch.data.model: "64", user.language: "zh", java.specification.vendor: "Oracle Corporation", awt.toolkit: "sun.lwawt.macosx.LWCToolkit", java.vm.info: "mixed mode", java.version: "1.7.0_79", java.ext.dirs: "/Users/xixicat/Library/Java/Extensions:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/ext:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java", sun.boot.class.path: "/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/sunrsasign.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/classes", java.awt.headless: "true", java.vendor: "Oracle Corporation", maven.home: "/Users/xixicat/devtool/maven-3.3.3", file.separator: "/", LOG_EXCEPTION_CONVERSION_WORD: "%wEx", java.vendor.url.bug: "http://bugreport.sun.com/bugreport/", sun.io.unicode.encoding: "UnicodeBig", sun.cpu.endian: "little", sun.cpu.isalist: "" }, systemEnvironment: { TERM: "xterm-256color", ZSH: "/Users/xixicat/.oh-my-zsh", GVM_BROKER_SERVICE: "http://release.gvm.io", GRIFFON_HOME: "/Users/xixicat/.gvm/griffon/current", JAVA_MAIN_CLASS_763: "org.codehaus.plexus.classworlds.launcher.Launcher", JAVA_HOME: "/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home", SHLVL: "1", MAVEN_CMD_LINE_ARGS: " spring-boot:run", __CF_USER_TEXT_ENCODING: "0x1F5:0x19:0x34", GROOVY_HOME: "/Users/xixicat/.gvm/groovy/current", XPC_FLAGS: "0x0", GVM_INIT: "true", JBAKE_HOME: "/Users/xixicat/.gvm/jbake/current", PWD: "/Users/xixicat/workspace/video-uber", GVM_DIR: "/Users/xixicat/.gvm", GVM_VERSION: "2.4.3", MAVEN_PROJECTBASEDIR: "/Users/xixicat/workspace/video-uber", LOGNAME: "xixicat", SSH_AUTH_SOCK: "/private/tmp/com.apple.launchd.93xr1duECQ/Listeners", SPRINGBOOT_HOME: "/Users/xixicat/.gvm/springboot/current", GAIDEN_HOME: "/Users/xixicat/.gvm/gaiden/current", LAZYBONES_HOME: "/Users/xixicat/.gvm/lazybones/current", OLDPWD: "/Users/xixicat/workspace/video-uber", SHELL: "/bin/zsh", JBOSSFORGE_HOME: "/Users/xixicat/.gvm/jbossforge/current", LC_CTYPE: "zh_CN.UTF-8", TMPDIR: "/var/folders/tl/xkf4nr61033gd6lk5d3llz080000gn/T/", GVM_SERVICE: "http://api.gvmtool.net", GVM_PLATFORM: "Darwin", CLASSPATH: ".:/Users/xixicat/.m2/repository/co/paralleluniverse/quasar-core/0.7.2/quasar-core-0.7.2.jar", GLIDE_HOME: "/Users/xixicat/.gvm/glide/current", PATH: "/Users/xixicat/.gvm/vertx/current/bin:/Users/xixicat/.gvm/springboot/current/bin:/Users/xixicat/.gvm/lazybones/current/bin:/Users/xixicat/.gvm/jbossforge/current/bin:/Users/xixicat/.gvm/jbake/current/bin:/Users/xixicat/.gvm/groovyserv/current/bin:/Users/xixicat/.gvm/groovy/current/bin:/Users/xixicat/.gvm/griffon/current/bin:/Users/xixicat/.gvm/grails/current/bin:/Users/xixicat/.gvm/gradle/current/bin:/Users/xixicat/.gvm/glide/current/bin:/Users/xixicat/.gvm/gaiden/current/bin:/Users/xixicat/.gvm/crash/current/bin:/Users/xixicat/.gvm/asciidoctorj/current/bin:/Users/xixicat/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin:/Users/xixicat/devtool/maven-3.3.3/bin:/Users/xixicat/devtool/gradle-2.6/bin:/Users/xixicat/devtool/android-sdk/platform-tools", GRADLE_HOME: "/Users/xixicat/.gvm/gradle/current", GROOVYSERV_HOME: "/Users/xixicat/.gvm/groovyserv/current", GRAILS_HOME: "/Users/xixicat/.gvm/grails/current", USER: "xixicat", LESS: "-R", PAGER: "less", HOME: "/Users/xixicat", CRASH_HOME: "/Users/xixicat/.gvm/crash/current", XPC_SERVICE_NAME: "0", VERTX_HOME: "/Users/xixicat/.gvm/vertx/current", GVM_BROADCAST_SERVICE: "http://cast.gvm.io", Apple_PubSub_Socket_Render: "/private/tmp/com.apple.launchd.y6fNwP8Sk6/Render", LSCOLORS: "Gxfxcxdxbxegedabagacad", ASCIIDOCTORJ_HOME: "/Users/xixicat/.gvm/asciidoctorj/current" }, applicationConfig: [classpath: /application.properties]: { pool.acquireIncrement: "1", pool.minPoolSize: "5", pool.initialPoolSize: "1", database.username: "root", pool.maxIdleTime: "60", database.url: "jdbc:mysql://127.0.0.1:3307/video_uber?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull", spring.jackson.dateFormat: "yyyy-MM-dd'T'HH:mm:ss", database.slave.username: "root", spring.jackson.serialization.write - dates - as - timestamps: "false", pool.idleTimeout: "30000", database.slave.url: "jdbc:mysql://127.0.0.1:3307/demo?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull", server.port: "8080", database.slave.password: "******", database.password: "******", database.driverClassName: "com.mysql.jdbc.Driver", pool.maxPoolSize: "50", database.dataSourceClassName: "com.mysql.jdbc.jdbc2.optional.MysqlDataSource" } }

/health

{status: "UP",diskSpace: {status: "UP",total: 249779191808,free: 193741590528,threshold: 10485760},db: {status: "UP",database: "MySQL",hello: 1}
}

/info

需要自己在application.properties里头添加信息,比如

info:contact:email: xixicat@gmail.comphone: 0755-82890987

然后请求就可以出来了

{"contact": {"phone": "0755-82890987", "email": "xixicat@gmail.com" } }

/mappings

     {{[/metrics || /metrics.json], methods = [GET], produces = [application / json]}: {bean: "endpointHandlerMapping",method: "public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()" }, { [/beans || /beans.json], methods = [GET], produces = [application / json] }: { bean: "endpointHandlerMapping", method: "public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()" }, { [/health || /health.json], produces = [application / json] }: { bean: "endpointHandlerMapping", method: "public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.HealthMvcEndpoint.invoke(java.security.Principal)" }, { [/info || /info.json], methods = [GET], produces = [application / json] }: { bean: "endpointHandlerMapping", method: "public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()" }, { [/trace || /trace.json], methods = [GET], produces = [application / json] }: { bean: "endpointHandlerMapping", method: "public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()" }, { [/autoconfig || /autoconfig.json], methods = [GET], produces = [application / json] }: { bean: "endpointHandlerMapping", method: "public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()" } }

/metrics

{
mem: 499404,
mem.free: 257591,
processors: 8,
instance.uptime: 4284997,
uptime: 4294909,
systemload.average: 1.84521484375,
heap.committed: 437248,
heap.init: 262144,
heap.used: 179656,
heap: 3728384,
nonheap.committed: 62848,
nonheap.init: 24000,
nonheap.used: 62156,
nonheap: 133120,
threads.peak: 18,
threads.daemon: 6,
threads.totalStarted: 176,
threads: 16,
classes: 10294,
classes.loaded: 10294,
classes.unloaded: 0,
gc.ps_scavenge.count: 11,
gc.ps_scavenge.time: 405,
gc.ps_marksweep.count: 0,
gc.ps_marksweep.time: 0,
datasource.primary.active: 0,
datasource.primary.usage: 0,
counter.status.200.autoconfig: 1,
counter.status.200.beans: 1,
counter.status.200.configprops: 1,
counter.status.200.dump: 1,
counter.status.200.env: 1,
counter.status.200.health: 1,
counter.status.200.info: 1,
counter.status.200.mappings: 1,
gauge.response.autoconfig: 81,
gauge.response.beans: 15,
gauge.response.configprops: 105,
gauge.response.dump: 76,
gauge.response.env: 4,
gauge.response.health: 43,
gauge.response.info: 1,
gauge.response.mappings: 4
}

/shutdown

要真正生效,得配置文件开启

endpoints.shutdown.enabled: true

/trace

记录最近100个请求的信息

[{"timestamp": 1452955704922,"info": { "method": "GET", "path": "/metrics", "headers": { "request": { "Accept - Encoding": "gzip, deflate, sdch", "Upgrade - Insecure - Requests": "1", "Accept - Language": "zh-CN,zh;q=0.8,en;q=0.6", "User - Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "Connection": "keep-alive", "Host": "localhost:8080" }, "response": { "Content - Type": "application/json; charset=UTF-8", "X - Application - Context": "application:8080", "Date": "Sat, 16 Jan 2016 14:48:24 GMT", "status": "200" } } } }, { "timestamp": 1452951489549, "info": { "method": "GET", "path": "/autoconfig",

转载于:https://www.cnblogs.com/zouqimeng/p/9062330.html

Spring Boot有四大神器相关推荐

  1. Spring Boot:四大神器之CLI

    文章目录 简介 优势 一.安装 Spring Boot CLI 二.测试 2.1 Spring Boot CLI 创建 Hello World 示例 2.2 @Grab 2.3 @ Controlle ...

  2. 第二章 Spring Boot四大核心组件

    文章目录 前言 一.Spring Boot Starter 1.1 Starter的应用示例 1.2 Spring Boot之前的Thymeleaf和Mybatis应用 1.2.1 Thymeleaf ...

  3. Spring Boot和SSM本质上的区别

    其实 Spring Boot 本质还是一个普通的Spring应用,并不是什么新的框架技术.没有它我们照样通过xm配置bean的方式也可以实现对应的功能. 之所以Spring Boot 这几年这么火,主 ...

  4. chrome charset使用_使用JWT保护你的Spring Boot应用 Spring Security实战

    关键词 Spring Boot.OAuth 2.0.JWT.Spring Security.SSO.UAA 写在前面 最近安静下来,重新学习一些东西,最近一年几乎没写过代码.整天疲于奔命的日子终于结束 ...

  5. 使用JWT保护你的Spring Boot应用 - Spring Security实战

    使用JWT保护你的Spring Boot应用 - Spring Security实战 作者 freewolf 原创文章转载请标明出处 关键词 Spring Boot.OAuth 2.0.JWT.Spr ...

  6. 我眼中的Spring Boot

    毋庸置疑,Spring Boot在众多从事Java微服务开发的程序员群体中是一个很特别的存在.说它特别是因为它确实简化了基于Spring技术栈的应用/微服务开发过程,使得我们能够很快速地就搭建起一个应 ...

  7. 对于spring boot的理解

    转载自:https://blog.csdn.net/ricohzhanglong/article/details/80240715 Spring Boot在众多从事Java微服务开发的程序员群体中是一 ...

  8. 利用神器BTrace 追踪线上 Spring Boot应用运行时信息

    可用于追踪线上 Java服务 运行时信息的神器 BTrace,你们经常用吗 ? 概述 生产环境中的服务可能会出现各种问题,但总不能让服务下线来专门排查错误,这时候最好有一些手段来获取程序运行时信息,比 ...

  9. Spring Boot简介,四大核心,特性

    版权声明:本文为博主原创文章,未经博主允许不得转载 一.Spring Boot简介 1.Spring boot是Spring家族中的一个全新的框架,它用来简化Spring应用程序的创建和开发过程,也可 ...

最新文章

  1. Creating an Extender Control to Associate a Client Behavior with a Web Server Control
  2. 251f与ips屏显示器对比_不闪屏,HDR,带鱼屏全都有,LG 29WK600宽屏显示器测评
  3. 6-1 线性表元素的区间删除 (10 分)
  4. SkyEye仿真ZYNQ芯片,轻松运行国产操作系统ReWorks
  5. flow使用_使用Microsoft Flow进行文本分析
  6. android studio 运行找不到类,android-studio – Android Studio找不到TestCase类
  7. 关于linux下的共享库(动态库)和静态库
  8. php生成黑链,网站被黑链接(进入黑网最有效办法)
  9. 经典算法题1:找出数组中只出现一次的数字,其它数字都出现了两次
  10. 纪录片:美国中情局解密 CIA Declassified 2013
  11. RTSP流媒体播放器实现
  12. 《人月神话(The Mythical Man-Month)》看清问题的本质:如果我们想解决问题,就必须试图先去理解它...
  13. python网络爬虫(web spider)系统化整理总结(一):入门
  14. rust-crate
  15. 借了你的爱,用我一辈子来还
  16. 经济学人翻译练习——肯•帕克斯顿的再次竞选是对德克萨斯共和党价值观的考验
  17. java图形用户界面设计之计算器【加减乘除】
  18. java 从excel中读取数据_java中怎样从Excel中读写数据
  19. 从业务架构师角度看区块链为什么以及如何改变世界
  20. 2021年9面试总结

热门文章

  1. ARM汇编:使用汇编语言进行数据访问时需要注意的几个问题
  2. 机器学习实战:k-近邻算法(手写数字识别)
  3. php json encode html,php – json_encode不能使用html字符串作为值
  4. cad pu插件下载lisp_【技巧】cad计算面积、周长方法汇总
  5. jvm有哪些内存区域
  6. JVM中对象如何在堆内存分配
  7. Win7系统下hosts文件修改后无法保存
  8. cf网络原因服务器无响应,CF由于网络原因连接服务器失败请重试 1033_10136
  9. 关于助动词和过去分词的一点见解
  10. 检测移动端内存敏感数据方法(安卓)