`
rensanning
  • 浏览: 3547899 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:38135
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:607256
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:682254
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:89314
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:401781
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:69685
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:91690
社区版块
存档分类
最新评论

Spring Boot 入门 - 进阶篇(8)- 应用监控(Actuator)

 
阅读更多
作为Spring Boot的另外一大亮点,就是actuator模块,它是Spring Boot Starter中的一个特殊模块,用于集中采集应用的各项指标信息。

(1)开启监控

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


引入后不需要做任何修改,启动应用就会看到以下日志:
引用
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()
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)
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()
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
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)
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()
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)
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)
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()
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()
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()
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()
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)
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>)
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()
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()
o.s.b.a.e.mvc.EndpointHandlerMapping     : Mapped "{[/beans || /beans.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()


访问 http://localhost:8080/health 会返回以下json
引用
{
    "status" : "UP"
}


(2)设置端点访问

1-关闭验证
默认情况下很多端点是不允许访问的,会返回401:Unauthorized。

application.properties
引用
management.security.enabled=false


2-开启HTTP basic认证

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


application.properties
引用
security.user.name=admin
security.user.password=123456
management.security.enabled=true
management.security.role=ADMIN


访问URL http://localhost:8080/env 后,就看到需要输入用户名和密码了。

3-设置ContextPath

application.properties
引用
management.contextPath=/manage


那么URL就是:http://localhost:8080/manage/env

4-设置端口

application.properties
引用
management.port=8081


那么URL就是:http://localhost:8081/manage/env

(2)端点Endpoint

应用配置类
  /autoconfig 获取应用的自动化配置报告
  /beans 获取应用上下文中创建的所有Bean
  /configprops 获取应用中配置的属性信息报告
  /env 获取应用所有可用的环境属性报告
  /mappings 获取应用所有Spring MVC的控制器映射关系报告
  /info 获取应用自定义的信息

度量指标类
  /metrics 返回应用的各类重要度量指标信息
  /health 返回应用的各类健康指标信息
  /dump 返回程序运行中的线程信息
  /trace 返回基本的HTTP跟踪信息

操作控制类
  /shutdown 用来远程关闭应用

(3)端点的开启或禁用
application.properties
引用
endpoints.configprops.enabled=false
endpoints.shutdown.enabled=true


(4)自定义端点

1-自定义已有端点,比如 /health 端点
@Component
public class CustomHealth implements HealthIndicator {
 
    public Health health() {
    	return Health.up().build();
    }
 
}


访问URL:http://localhost:8081/manage/health

2-创建新的端点
@Component
public class CustomEndpoint implements Endpoint<List<String>> {
     
    public String getId() {
        return "myep";
    }
 
    public boolean isEnabled() {
        return true;
    }
 
    public boolean isSensitive() {
        return true;
    }
 
    public List<String> invoke() {
        List<String> messages = new ArrayList<String>();
        messages.add("This is message 1");
        messages.add("This is message 2");
        return messages;
    }
}


访问URL:http://localhost:8081/manage/myep

3-列举所有端点
@Component
public class ListEndpoints extends AbstractEndpoint<List<Endpoint>> {
    private List<Endpoint> endpoints;
 
    @Autowired
    public ListEndpoints(List<Endpoint> endpoints) {
        super("allep");
        this.endpoints = endpoints;
    }
 
    public List<Endpoint> invoke() {
        return this.endpoints;
    }
}


访问URL:http://localhost:8081/manage/allep

(5)自定义端点metrics
Spring Boot允许开发人员以编码的方式提供更丰富指标信息,通过/metrics端点来访问。counter是以Number类型来展现的指标;gauge是衡量双精度计算的指标。任何位置都可以注入CounterService或GaugeService。

counterService.increment("metricName");
counterService.decrement("metricName");
counterService.reset("metricName");


gaugeService.submit("metricName", 2.5);


参考:
http://www.baeldung.com/spring-boot-actuators
http://blog.didispace.com/spring-boot-actuator-1/
分享到:
评论
1 楼 MCLoginandPwd 2017-08-11  
分享一款代码生成器,拖拽式组件结合流式处理,很容易的访问数据库、http、文件读写操作等等,支持编写javascript、java、freemaker,功能丰富强大,编制规则,可生成一切想要的代码,详见:http://blog.csdn.net/LoginandPwd/article/details/76944900,更多资讯:http://blog.csdn.net/LoginandPwd/article

相关推荐

    Spring Boot 进阶笔记(详细全面) 中文PDF完整版.pdf

    5. **健康检查和监控**:内置的 Actuator 模块提供了一组端点,用于监控应用状态和执行健康检查。 创建 Spring Boot 项目通常有两种方式: 1. **手动创建 Maven 项目并添加依赖**:适合对 Spring Boot 结构有一定...

    spring-boot-study-base.zip

    总的来说,"spring-boot-study-base.zip"是一个很好的Spring Boot入门教程,它涵盖了从基础到实践的关键知识点。通过学习和实践,你可以快速掌握Spring Boot的精髓,从而在实际开发中提高效率,构建出更加健壮和灵活...

    HETF-Spring Boot入门手册.zip

    总之,《HETF-Spring Boot入门手册》全面覆盖了Spring Boot的基础知识和进阶特性,无论你是Java新手还是经验丰富的开发者,都能从中受益。通过学习这份手册,你将具备使用Spring Boot构建高效、简洁的现代Web应用的...

    spring boot入门篇demo+ppt

    在"spring boot入门篇demo+ppt"中,我们可以期待学习以下核心知识点: 1. **Spring Boot基础知识**:了解Spring Boot的基本概念,包括其设计目标、主要特性以及与其他Spring框架的关系。 2. **起步依赖(Starter)...

    Spring Boot实战 ,丁雪丰 (译者).zip

    此外,Spring Boot还支持Actuator,这是一个用于生产环境的工具集,可以提供健康检查、监控和管理应用的手段。 在实际项目中,书中可能会提到如何利用Spring Boot与Docker结合,实现应用的容器化部署,以及如何使用...

    《Spring Boot企业级开发教程》配套资料

    视频可能会覆盖Spring Initializr的使用,Maven或Gradle构建系统的配置,以及如何利用Spring Boot的Actuator进行应用监控。 教学大纲则为整个学习过程提供了路线图,列出了课程的主要章节和子话题。这通常包括...

    spring boot入门的第一个项目

    10. **Spring Boot Actuator**: 对于生产环境,Spring Boot Actuator提供了一系列端点,用于监控和管理应用,包括健康检查、指标展示、审计事件等。 在实际的"spring boot入门的第一个项目"中,你可以通过创建...

    Spring Boot是一个开源的Java框架,旨在简化Spring应用的初始搭建和开发过程 以下是对Spring Boot开发

    Spring Boot通过Actuator模块提供了对应用的监控和诊断能力。开发者可以通过HTTP端点访问应用的状态、健康检查和指标等信息。 #### 6. 文档和教程 Spring Boot提供了详尽的文档和教程,覆盖了从入门到进阶的各种...

    Spring boot 中文.pdf

    ### Spring Boot 中文文档知识点概览 #### 一、Spring Boot 概述 - **文档说明**:Spring Boot 是一...以上内容覆盖了 Spring Boot 中文文档的主要知识点,从入门到进阶,全面介绍了 Spring Boot 的特性和使用方法。

    spring boot

    ### Spring Boot 基础与进阶知识点详解 #### 一、Spring Boot 概述 - **定义**:Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目标是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式...

    [E文]Spring Boot 2 Recipes

    - **进阶篇**:探讨如何利用 Spring Boot 构建复杂的应用程序,包括安全性和性能优化等方面。 - **实践篇**:提供一系列实战案例,涵盖微服务架构、数据访问层设计等内容。 --- ### 版权与出版信息 本书的版权...

    Spring Boot Reference Guide 2.1.0.BUILD

    Spring Boot Reference Guide覆盖了从入门到进阶的全面知识点,包括如何阅读接下来的内容以进一步深入了解Spring Boot,如Spring Boot Actuator,它提供了生产级别的监控和管理功能,以及如何处理安全问题、数据访问...

    \Desktop\Spring Boot.7z

    4. **健康检查**:提供Actuator端点,用于监控和管理应用状态,如 `/health` 和 `/info`。 5. **命令行接口(CLI)**:提供命令行工具,方便快速创建和运行Spring Boot应用。 在尚硅谷的Spring Boot课程中,可能会...

    spring-boot 参考书

    - **Spring Boot Actuator**:提供了用于监控和管理生产环境应用的功能。 此外,文档还介绍了许多高级主题,比如安全配置、数据访问、消息传递和测试等。这些高级特性让你能够在生产环境中安全、高效地使用 Spring ...

    Spring-Boot-Basic-Learning:基础学习1-7

    本资源“Spring-Boot-Basic-Learning:基础学习1-7”显然是一个关于Spring Boot入门教程的项目,涵盖了从基础到进阶的多个阶段。 首先,Spring Boot的核心特性包括自动配置、内嵌Web服务器(如Tomcat或Jetty)、起步...

    SpringBoot 从入门到进阶系列官方小册_springboot_java_初学者_

    5. **Actuator**: 这是一个监控和管理应用的模块,提供健康检查、审计、指标等信息。 **二、SpringBoot进阶** 1. **Spring MVC**: 作为SpringBoot的主要Web开发组件,它提供了模型-视图-控制器架构。通过@...

    Spring Boot 中文文档(带标签)

    《Spring Boot 中文文档》是全面了解和学习Spring Boot框架的重要参考资料,涵盖了从入门到进阶的各个层面。Spring Boot是基于Java构建的,旨在简化Spring应用的初始搭建以及开发过程,通过“约定优于配置”的理念,...

    开发Spring Boot和Bootstrap视频课程下载整理.zip

    1. Spring Boot入门:环境搭建、第一个Spring Boot应用创建。 2. Spring Boot核心概念:自动配置、Actuator使用、Spring Boot测试。 3. 数据访问:JPA与Hibernate集成、MyBatis集成、数据缓存。 4. RESTful API设计...

    Spring-Boot-Playground

    通过Spring-Boot-Playground,开发者不仅可以深入了解Spring Boot的各项功能,还能在实际操作中提升自己的全栈开发能力,无论是新手入门还是资深开发者进阶,都是一个极好的实践平台。在这个游乐场中,你可以尽情地...

    SpringBoot 从入门到进阶系列官方小册.rar

    7. **Spring Boot Actuator**:分析Actuator提供的监控和健康检查功能,用于生产环境中的微服务管理。 8. **安全控制**:介绍Spring Security的基本概念,以及如何在SpringBoot中实现用户认证和授权。 9. **云原生...

Global site tag (gtag.js) - Google Analytics