spring-actuator是spring-boot对应用监控的集成模块,提供了我们对服务器进行监控的支持,使我们更直观的获取应用程序中加载的应用配置、环境变量、自动化配置报告等。
使用spring-actuator
1、引入maven依赖
1
2
3
4
5
|
<!-- 监控管理模块 -->
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-actuator</artifactid>
</dependency>
|
引入依赖后启动项目即可。
项目启动时会打印出我们所需的url
2018-03-26 23:19:00.169 info 6148 --- [ main] o.s.b.a.e.mvc.endpointhandlermapping : mapped "{[/env/{name:.*}],methods=[get],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.object org.springframework.boot.actuate.endpoint.mvc.environmentmvcendpoint.value(java.lang.string)
2018-03-26 23:19:00.169 info 6148 --- [ main] o.s.b.a.e.mvc.endpointhandlermapping : mapped "{[/env || /env.json],methods=[get],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.object org.springframework.boot.actuate.endpoint.mvc.endpointmvcadapter.invoke()
2018-03-26 23:19:00.170 info 6148 --- [ main] o.s.b.a.e.mvc.endpointhandlermapping : mapped "{[/trace || /trace.json],methods=[get],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.object org.springframework.boot.actuate.endpoint.mvc.endpointmvcadapter.invoke()
2018-03-26 23:19:00.170 info 6148 --- [ main] o.s.b.a.e.mvc.endpointhandlermapping : mapped "{[/dump || /dump.json],methods=[get],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.object org.springframework.boot.actuate.endpoint.mvc.endpointmvcadapter.invoke()
2018-03-26 23:19:00.171 info 6148 --- [ main] o.s.b.a.e.mvc.endpointhandlermapping : mapped "{[/auditevents || /auditevents.json],methods=[get],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public org.springframework.http.responseentity<?> org.springframework.boot.actuate.endpoint.mvc.auditeventsmvcendpoint.findbyprincipalandafterandtype(java.lang.string,java.util.date,java.lang.string)
2018-03-26 23:19:00.171 info 6148 --- [ main] o.s.b.a.e.mvc.endpointhandlermapping : mapped "{[/mappings || /mappings.json],methods=[get],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.object org.springframework.boot.actuate.endpoint.mvc.endpointmvcadapter.invoke()
2018-03-26 23:19:00.172 info 6148 --- [ main] o.s.b.a.e.mvc.endpointhandlermapping : mapped "{[/autoconfig || /autoconfig.json],methods=[get],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.object org.springframework.boot.actuate.endpoint.mvc.endpointmvcadapter.invoke()
2018-03-26 23:19:00.173 info 6148 --- [ main] o.s.b.a.e.mvc.endpointhandlermapping : mapped "{[/metrics/{name:.*}],methods=[get],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.object org.springframework.boot.actuate.endpoint.mvc.metricsmvcendpoint.value(java.lang.string)
2018-03-26 23:19:00.173 info 6148 --- [ main] o.s.b.a.e.mvc.endpointhandlermapping : mapped "{[/metrics || /metrics.json],methods=[get],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.object org.springframework.boot.actuate.endpoint.mvc.endpointmvcadapter.invoke()
2018-03-26 23:19:00.173 info 6148 --- [ main] o.s.b.a.e.mvc.endpointhandlermapping : mapped "{[/pause || /pause.json],methods=[post]}" onto public java.lang.object org.springframework.cloud.endpoint.genericpostablemvcendpoint.invoke()
2018-03-26 23:19:00.174 info 6148 --- [ main] o.s.b.a.e.mvc.endpointhandlermapping : mapped "{[/service-registry/instance-status],methods=[post]}" onto public org.springframework.http.responseentity<?> org.springframework.cloud.client.serviceregistry.endpoint.serviceregistryendpoint.setstatus(java.lang.string)
2018-03-26 23:19:00.174 info 6148 --- [ main] o.s.b.a.e.mvc.endpointhandlermapping : mapped "{[/service-registry/instance-status],methods=[get]}" onto public org.springframework.http.responseentity org.springframework.cloud.client.serviceregistry.endpoint.serviceregistryendpoint.getstatus()
2018-03-26 23:19:00.175 info 6148 --- [ main] o.s.b.a.e.mvc.endpointhandlermapping : mapped "{[/loggers/{name:.*}],methods=[get],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.object org.springframework.boot.actuate.endpoint.mvc.loggersmvcendpoint.get(java.lang.string)
2018-03-26 23:19:00.175 info 6148 --- [ main] o.s.b.a.e.mvc.endpointhandlermapping : mapped "{[/loggers/{name:.*}],methods=[post],consumes=[application/vnd.spring-boot.actuator.v1+json || application/json],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.object org.springframework.boot.actuate.endpoint.mvc.loggersmvcendpoint.set(java.lang.string,java.util.map<java.lang.string, java.lang.string>)
2018-03-26 23:19:00.175 info 6148 --- [ main] o.s.b.a.e.mvc.endpointhandlermapping : mapped "{[/loggers || /loggers.json],methods=[get],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.object org.springframework.boot.actuate.endpoint.mvc.endpointmvcadapter.invoke()
2018-03-26 23:19:00.176 info 6148 --- [ main] o.s.b.a.e.mvc.endpointhandlermapping : mapped "{[/heapdump || /heapdump.json],methods=[get],produces=[application/octet-stream]}" onto public void org.springframework.boot.actuate.endpoint.mvc.heapdumpmvcendpoint.invoke(boolean,javax.servlet.http.httpservletrequest,javax.servlet.http.httpservletresponse) throws java.io.ioexception,javax.servlet.servletexception
2018-03-26 23:19:00.176 info 6148 --- [ main] o.s.b.a.e.mvc.endpointhandlermapping : mapped "{[/refresh || /refresh.json],methods=[post]}" onto public java.lang.object org.springframework.cloud.endpoint.genericpostablemvcendpoint.invoke()
2018-03-26 23:19:00.177 info 6148 --- [ main] o.s.b.a.e.mvc.endpointhandlermapping : mapped "{[/resume || /resume.json],methods=[post]}" onto public java.lang.object org.springframework.cloud.endpoint.genericpostablemvcendpoint.invoke()
2018-03-26 23:19:00.178 info 6148 --- [ main] o.s.b.a.e.mvc.endpointhandlermapping : mapped "{[/configprops || /configprops.json],methods=[get],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.object org.springframework.boot.actuate.endpoint.mvc.endpointmvcadapter.invoke()
2018-03-26 23:19:00.178 info 6148 --- [ main] o.s.b.a.e.mvc.endpointhandlermapping : mapped "{[/archaius || /archaius.json],methods=[get],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.object org.springframework.boot.actuate.endpoint.mvc.endpointmvcadapter.invoke()
2018-03-26 23:19:00.179 info 6148 --- [ main] o.s.b.a.e.mvc.endpointhandlermapping : mapped "{[/health || /health.json],methods=[get],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.object org.springframework.boot.actuate.endpoint.mvc.healthmvcendpoint.invoke(javax.servlet.http.httpservletrequest,java.security.principal)
2018-03-26 23:19:00.179 info 6148 --- [ main] o.s.b.a.e.mvc.endpointhandlermapping : mapped "{[/env],methods=[post]}" onto public java.lang.object org.springframework.cloud.context.environment.environmentmanagermvcendpoint.value(java.util.map<java.lang.string, java.lang.string>)
2018-03-26 23:19:00.179 info 6148 --- [ main] o.s.b.a.e.mvc.endpointhandlermapping : mapped "{[/env/reset],methods=[post]}" onto public java.util.map<java.lang.string, java.lang.object> org.springframework.cloud.context.environment.environmentmanagermvcendpoint.reset()
2018-03-26 23:19:00.179 info 6148 --- [ main] o.s.b.a.e.mvc.endpointhandlermapping : mapped "{[/features || /features.json],methods=[get],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.object org.springframework.boot.actuate.endpoint.mvc.endpointmvcadapter.invoke()
2018-03-26 23:19:00.180 info 6148 --- [ main] o.s.b.a.e.mvc.endpointhandlermapping : mapped "{[/restart || /restart.json],methods=[post]}" onto public java.lang.object org.springframework.cloud.context.restart.restartmvcendpoint.invoke()
2018-03-26 23:19:00.181 info 6148 --- [ main] o.s.b.a.e.mvc.endpointhandlermapping : mapped "{[/entity || /entity.json],methods=[get],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.object org.springframework.boot.actuate.endpoint.mvc.endpointmvcadapter.invoke()
2018-03-26 23:19:00.181 info 6148 --- [ main] o.s.b.a.e.mvc.endpointhandlermapping : mapped "{[/info || /info.json],methods=[get],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.object org.springframework.boot.actuate.endpoint.mvc.endpointmvcadapter.invoke()
2018-03-26 23:19:00.193 info 6148 --- [ main] s.w.s.m.m.a.requestmappinghandlermapping : mapped "{[/error]}" onto public java.util.map<java.lang.string, java.lang.object> org.springframework.boot.actuate.endpoint.mvc.managementerrorendpoint.invoke()
2、yml配置文件的配置
(1)配置端口号和不启用某功能模块
1
2
3
4
5
6
7
8
|
#制定端口号,不制定则和该服务器server.port相同
management:
port: 4321
#去掉某项不需要查看内容的功能,如不需要health
health:
mail:
# false 代表不启用该功能
enabled: false
|
上述配置表示配置的端口为http端口为4321 并且禁用 /health功能。
(2)修改映射路径
1
2
3
4
|
#修改某配置的映射id的路径
endpoints:
beans:
id: entity
|
上述配置表示将/beans获取应用上下文创建bean的路径改为/entity
(3)配置actuator安全配置
配置安全需要借助spring-security
引入依赖
1
2
3
4
5
|
<!-- 用于注册中心访问账号认证 -->
<dependency>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-security</artifactid>
</dependency>
|
配置账号密码:
1
2
3
4
5
6
7
8
|
security:
basic:
#代表开启账号密码认证
enabled: true
#配置账号和密码
user:
name: root
password: 123
|
配置完账号密码后即可通过 http://127.0.0.1:4321进行访问,并且输入配置的账号和密码即可,输入一次当浏览器不关闭时都有效。
(4)将展示报文显示为json格式
json格式展示拥有更好的可读性和美观性
1
2
3
4
5
|
#将acyuator显示的报文打印为json格式
spring:
jackson:
serialization:
indent-output: true
|
将上述配置加至application.yml文件中即可
3、启动类配置
1
2
3
4
5
6
7
8
|
@springbootapplication
@enableeurekaserver //此行注解代表为一个服务注册组件,此注解仅适用于eureka
public class eurekaserverapplication {
public static void main(string[] args) {
springapplication.run(eurekaserverapplication. class , args);
}
}
|
无须做配置即可运行
4、一些主要的配置模块
http请求方式 | 路径 | 描述 |
get | /autoconfig | 用于获取应用的自动化配置信息 |
get | /beans | 用于获取应用上下文创建的所有bean |
get | /configprops | 获取应用中配置的属性信息报告 |
get | /env | 用于获取应用所有可用的环境变量属性报告 |
get | /mappings | 用于获取所有springmvc的控制器映射关系报告 |
get | /info | 用于获取应用自定义的信息 |
(1) /autoconfig
该配置下有两个主节点。
positivematches :返回的是条件匹配成功的自动化配置信息
negativematches :返回的是条件匹配不成功的配置信息
(2) /beans
该配置文件用于展示由applicationcontext应用上下文加载的bean对象,包含以下几个节点:
1
2
3
4
5
6
7
8
9
10
|
"context" : "bootstrap" ,
"parent" : null ,
"beans" : [ {
"bean" : "propertysourcebootstrapconfiguration" ,
"aliases" : [ ],
"scope" : "singleton" ,
"type" : "org.springframework.cloud.bootstrap.config.propertysourcebootstrapconfiguration$$enhancerbyspringcglib$$82fdf928" ,
"resource" : "null" ,
"dependencies" : [ ]
}]
|
beans为应用上下文加载的类的集合,其包括以下几个标签:
1)、bean : 应用上下文创建的bean的名称
2)、scope:创建的bean的作用域
singleton : 单例 , 是spring默认的作用域
prototype : 每一次请求都会产生一个新的实例 ,相当于new的操作
request : 每次http请求都会产生一个新的实例,当前bean只在同一个 httprequest中有效
session : 同一个httpsession中有效
3)、type : 应用上下文管理bean的类型
为类的全限定类名
4)、resource : class文件的具体路径
5)、dependencies : 依赖bean的名称 ,即bean中有关联关系bean的名称
(3) /configprops : 获取应用中配置的属性信息报告
其下有两个子节点
prefix : 代表属性的配置前缀
properties : 代表各个属性的名称和值
(4) /env 用于获取应用上下文的环境变量属性报告,如环境变量、jvm属性、应用的配置信息、命令行中的参数等。
1)、server.ports 代表该应用配置的端口号
2) 、systemproperties获取的为应用的jvm等信息
(5) /mappings springmvc控制器映射的报告,
1
2
3
4
5
|
{
"{[/error]}" : {
"bean" : "requestmappinghandlermapping" ,
"method" : "public org.springframework.http.responseentity<java.util.map<java.lang.string, java.lang.object>> org.springframework.boot.autoconfigure.web.basicerrorcontroller.error(javax.servlet.http.httpservletrequest)"
}}
|
1) /error代表springmvc的映射路径
2) /bean 代表用于处理器映射器映射的类
3) /method 代表映射类中的方法
(6)、info 用于获取application.yml中配置的自定义配置信息
5、度量指标类的配置
度量指标提供的报告内容是动态变化的,提供了一些快照信息;如内存使用情况、http请求次数统计、外部资源指标统计等。
(1)、/metrics 返回当前应用的各类重要度量指标。有以下内容
1)、系统信息: processors ---- 处理器数量
instance.uptime ------ 运行时间
systemload.average --系统平均负载 等。
2) 、 men.* : 系统内存概要信息
3) 、 heap.* :堆内存使用情况
4) 、 nonheap.* : 非堆内存使用情况
5) 、 threads.* : 线程使用情况
6) 、 classess.* : 类加载和卸载情况
7) 、 gc.* : 垃圾收集器的详细信息
8) 、 httpsession.* : tomcat等容器的绘画情况
9) 、 guage.* : 返回一个映射数值,如延迟时间等
10) 、 conter.* : 作为计数器使用,记录了增加量与减少量
(2) /health :各类健康指标
如下述显示了内存的一些信息.
1
2
3
4
5
6
|
"diskspace" : {
"status" : "up" ,
"total" : 21475880960 ,
"free" : 8916258816 ,
"threshold" : 10485760
}
|
(3) /dump :用于暴露程序中的线程信息
threadname -- 暴露的线程名称
threadid --暴露的线程id 等等
(4) /trace :用于跟踪基本的http信息
6、操作控制类配置
(1) /shutdowm 用于关闭该应用的远程操作 --为post请求
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://www.cnblogs.com/zeryts/p/8654970.html