精华内容
下载资源
问答
  • springboot 监控 Actuator

    2020-05-25 14:49:23
    springboot 提供了对项目的监控功能。 1.首先添加依赖包 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-actuator --> <dependency> <groupId>org....

    springboot 提供了对项目的监控功能。

    1.首先添加依赖包

    <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-actuator -->
    <dependency>
         <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
       <version>2.1.3.RELEASE</version>
    </dependency>

    2.浏览器访问

    http://127.0.0.1:8080/actuator/health  访问项目监控需要加前缀 /actuator

    https://img2018.cnblogs.com/blog/1555009/201904/1555009-20190412164050739-1506764825.png https://img2018.cnblogs.com/blog/1555009/201904/1555009-20190412164121233-338226551.png

    因为actuator默认只支持端点 /health/info 所以访问 /env 会出现404页面。

    3.配置端点

    application.properties中配置端点,

    暴露部分端点

    management.endpoints.web.exposure.include=info,health,beans,env

    暴露所有端点

    management.endpoints.web.exposure.include=*

    不暴露beans端点

    management.endpoints.web.exposure.exclude=beans

    在上述配置中,首先使用 management.endpoints.web.exposure.include 暴露所有的端点,接着使用management.endpoints .web.exposure.exclud 排除 en 端点,这样就能够暴露除 env 外的所有 ctuator
    端点了。

    4.端点说明

     

    5.端点其他配置

    # Actuator 管理端口
    management.server.port=8000
    #暴露 有端
    management.endpoints.web.exposure.include =女
    #默认情况下 有端点都不启用,此时需要按需启用端点
    management.endpoints.enabled-by-default=false 
    #启用端点 info
    management.endpoint.info.enabled=true 

    #启用端点 beans
    management.endpoint.beans.enabled=true 

    #启用端点 configprops 
    management.endpoint.configprops.enabled=true 

    #启用端点 env
    management.endpont.env.enabled=true

    #启用端点 health
    management.endpoint.health.enabled=true 

    #启用端点 mappings
    management.endpont.mappings.enabed=true

    #启用端点 shutdown
    management.endpoint.shutdown.enabled=true 
    # Actuator
    端点前缀
    management.endpoints.web.base -path=/manage 
    #将原来的 mappings 端点的请求路径修改为 urlMappings
    management.endpoints.web.path-mapping.mappings=request_mappings
    # Spring MVC
    视图解析器配置
    spring.mvc.view.prefix=/WEB-INF/jsp/ 
    spring.mvc.view.suffix=.Jsp

     

    展开全文
  • SpringBoot监控Actuator,关闭redis监测

    千次阅读 2020-05-28 10:20:53
    SpringBoot监控Actuator,关闭redis监测方法 方法 当我们导入了spring-boot-starter-actuator这个依赖后, SpringBoot会默认去监测一些信息。其中就包括redis、 会根据redis的默认初始配置, localhost:6379 尝试连接...

    SpringBoot监控Actuator,关闭redis监测

    方法

    当我们导入了spring-boot-starter-actuator这个依赖后, SpringBoot会默认去监测一些信息。其中就包括redis、 会根据redis的默认初始配置, localhost:6379 尝试连接redis。如果我们没有用到redis, 启动就会报错

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

    比如我在使用SpringBootAdmin的时候,其中内置了Actuator的依赖, 启动报错

    [WARN ] 2020-05-28 09:28:17.179 [registrationTask1] de.codecentric.boot.admin.client.registration.ApplicationRegistrator - Failed to register application as Application(name=admin-client, managementUrl=http://Gordon-pc:8768/actuator, healthUrl=http://Gordon-pc:8768/actuator/health, serviceUrl=http://Gordon-pc:8768/) at spring-boot-admin ([http://localhost:8769/instances]): I/O error on POST request for "http://localhost:8769/instances": Connection refused: connect; nested exception is java.net.ConnectException: Connection refused: connect. Further attempts are logged on DEBUG level
    [WARN ] 2020-05-28 09:28:19.075 [boundedElastic-1] org.springframework.boot.actuate.redis.RedisReactiveHealthIndicator - Redis health check failed
    org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to localhost:6379
    	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getNativeConnection(LettuceConnectionFactory.java:1200)
    	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getConnection(LettuceConnectionFactory.java:1179)
    	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getSharedReactiveConnection(LettuceConnectionFactory.java:952)
    	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getReactiveConnection(LettuceConnectionFactory.java:429)
    	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getReactiveConnection(LettuceConnectionFactory.java:94)
    	at reactor.core.publisher.MonoSupplier.call(MonoSupplier.java:85)
    	at reactor.core.publisher.FluxSubscribeOnCallable$CallableSubscribeOnSubscription.run(FluxSubscribeOnCallable.java:225)
    	at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68)
    	at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28)
    	at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
    	at java.util.concurrent.FutureTask.run(FutureTask.java)
    	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
    	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    	at java.lang.Thread.run(Thread.java:748)
    Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to localhost:6379
    	at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78)
    	at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56)
    	at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:234)
    	at io.lettuce.core.RedisClient.connect(RedisClient.java:207)
    	at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.lambda$getConnection$1(StandaloneConnectionProvider.java:115)
    	at java.util.Optional.orElseGet(Optional.java:267)
    	at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.getConnection(StandaloneConnectionProvider.java:115)
    	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getNativeConnection(LettuceConnectionFactory.java:1198)
    	... 15 common frames omitted
    

    在网上搜了下解决方法, 发现都是提供的这一种方式:

    @Component("redisHealthIndicator")
    public class RedisHealthIndicator implements HealthIndicator {
    
        @Override
        public Health health() {
            return Health.up().build();
        }
        
    }
    

    结果我在看配置文件的时候, 发现另一个简单的方式: application.yml中加上

    
    management:
      health:
        redis:
          enabled: false
    

    就可以了

    展开全文
  • springboot提供了对项目的监控功能。 首先引入监控的jar包: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId>...
    1. springboot提供了对项目的监控功能。
    2. 首先引入监控的jar包:
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
    <!-- https://mvnrepository.com/artifact/org.springframework.hateoas/spring-hateoas -->
    <dependency>
        <groupId>org.springframework.hateoas</groupId>
        <artifactId>spring-hateoas</artifactId>
        <version>1.1.1.RELEASE</version>
    </dependency>
    
    1. hateoas是REST架构风格中复杂的约束,也是构建成熟REST服务的依赖,引入它是为了支持Spring boot的HTTP监控端点的需要。
      Spring监控端点
    2. Springboot中为这些端点提供了多种监控手段,包括HTTP和JMX等。
    3. HTTP监控:在引入spring-boot-starter-actuator和spring-boot-starter-web基础上,启动springboot,在浏览器中访问http://localhost:8080/actuator/health,即可看到当前应用的状态。
    4. 如果看不到http://localhost:8080/actuator/beans等,可以配置
    management:
      endpoints:
        web:
          exposure:
            include: info,health,beans
    
    1. 查看敏感信息:还可以使用Spring Security配置用户和角色,来解决这些敏感信息的访问权限问题。需要引入spring-boot-starter-security依赖,再去配置。
    package com.jianxin.web.security;
    
    import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
    import org.springframework.security.config.annotation.web.builders.HttpSecurity;
    import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
    import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
    import org.springframework.security.crypto.password.PasswordEncoder;
    
    /**
     * @program: high-concurrent-maven-learn
     * @description: 安全框架配置
     * @author: fjx
     * @create: 2020-08-10 09:43
     **/
    @Configuration
    public class WebSecurityConfig  extends WebSecurityConfigurerAdapter {
    
        public static void main(String[] args) {
            System.out.println(new BCryptPasswordEncoder().encode("123456"));
        }
    
        @Override
        protected void configure(AuthenticationManagerBuilder auth) throws Exception {
            PasswordEncoder passwordEncoder=new BCryptPasswordEncoder();
            auth.inMemoryAuthentication()
                    .passwordEncoder(passwordEncoder)
                    .withUser("admin")
                    .password("$2a$10$vsbJVOUyooKDvpn1aGuZ4.eIiK7prZUZdPcycbtUREdXjGRC0Of7u")
                    .roles("USER","ADMIN")
                    .and()
                    .withUser("myuser")
                    .password("$2a$10$sKYsX.kln.ip9.C4n0aSm.karhDDvMQfLyER.KpIelHIiAI186C6W")
                    .roles("USER");
    
        }
    
    
        protected void configure(HttpSecurity http) throws Exception {
            String[] endPoints={"auditevents","beans","conditions","fonfigprops","env","flyway","httptrace"
                    ,"loggers","liquibase","metrics","mappings","scheduledtasks","sessions","shutdown","threaddump"};
            http.requestMatcher(EndpointRequest.to(endPoints))
                    .authorizeRequests()
                    .anyRequest()
                    .hasRole("ADMIN")
                    .and()
                    .antMatcher("/close")
                    .authorizeRequests()
                    .and()
                    .httpBasic();
        }
    
    
    }
    
    1. 还可以进行application.yml中的配置来自行配置端点。
    2. 还可以通过使用注解@Endpoint,@JmxEndpoint,@WebEndpoint,@WebEndpointExtension或@EndpointJmxExtension对已有的端点进行扩展。
    3. 还可以通过如下配置打开展示健康指标项:
    management:
      endpoints:
        web:
          exposure:
            include: '*'
      endpoint:
        health:
          show-details: when_authorized
    
    1. 还可以自定义健康指标项。如数据库实时连接状态、互联网连接状态。
    2. 对于springboot项目,还可以通过Java 管理扩展(Java Management Extensions JMX)来让开发人员监控JVM的状况。
    展开全文
  • 目录 ...ActuatorSpringboot提供的用来对应用系统进行自省和监控的功能模块,借助于Actuator开发者可以很方便地对应用系统某些监控指标进行查看、统计等。本文将通过示例来对如何在Springboot...

    目录

    添加依赖与配置

    Actuator监控项

    Actuator监控管理

    打开或关闭

    端口与地址


    Actuator是Springboot提供的用来对应用系统进行自省和监控的功能模块,借助于Actuator开发者可以很方便地对应用系统某些监控指标进行查看、统计等。本文将通过示例来对如何在Springboot中使用Actuator监控做一个简单介绍,更多内容请移步官方文档。  

    添加依赖与配置

    在Springboot中使用Actuator监控非常简单,只需要在工程POM文件中引入spring-boot-starter-actuator依赖即可。 

    1. <!-- 引入Actuator监控依赖 -->
    2. <dependency>
    3. <groupId>org.springframework.boot</groupId>
    4. <artifactId>spring-boot-starter-actuator</artifactId>
    5. </dependency>

    在本项目中,除了引入Actuator依赖之外还额外引入了JDBC依赖(用来对数据源健康状态进行示例)和WEB依赖(启用WEB方式查看监控信息),完整的依赖配置如下。  

    1. <parent>
    2. <groupId>org.springframework.boot</groupId>
    3. <artifactId>spring-boot-starter-parent</artifactId>
    4. <version>1.5.6.RELEASE</version>
    5. </parent>
    6. <dependencies>
    7. <!-- 添加MySQL依赖 -->
    8. <dependency>
    9. <groupId>mysql</groupId>
    10. <artifactId>mysql-connector-java</artifactId>
    11. </dependency>
    12. <!-- 添加JDBC依赖 -->
    13. <dependency>
    14. <groupId>org.springframework.boot</groupId>
    15. <artifactId>spring-boot-starter-jdbc</artifactId>
    16. </dependency>
    17. <dependency>
    18. <groupId>org.springframework.boot</groupId>
    19. <artifactId>spring-boot-starter-web</artifactId>
    20. </dependency>
    21. <!-- 引入Actuator监控依赖 -->
    22. <dependency>
    23. <groupId>org.springframework.boot</groupId>
    24. <artifactId>spring-boot-starter-actuator</artifactId>
    25. </dependency>
    26. </dependencies>

    同时,application.properties核心配置文件中除了定义数据源外,还需要添加 management.security.enabled=false 配置。  

    #########################################################
    ###   Actuator Monitor  --   Actuator configuration   ###
    #########################################################
    management.security.enabled=false
    
    #########################################################
    ###  Spring DataSource  -- DataSource configuration   ###
    #########################################################
    spring.datasource.url=jdbc:mysql://localhost:3306/dev1?useUnicode=true&characterEncoding=utf8
    spring.datasource.driverClassName=com.mysql.jdbc.Driver
    spring.datasource.username=root
    spring.datasource.password=123456

    注意:若在核心配置文件中未添加 management.security.enabled=false 配置,将会导致用户在访问部分监控地址时访问受限,报401未授权错误。  

    Actuator监控项

    下表包含了Actuator提供的主要监控项。 

    下面逐个对每一个监控项进行举例介绍。

    /autoconfig用来查看自动配置的使用情况,包括:哪些被应用、哪些未被应用以及它们未被应用的原因、哪些被排除。 

    /configprops可以显示一个所有@ConfigurationProperties的整理列表。

    /beans可以显示Spring容器中管理的所有Bean的信息。 

    /dump用来查看应用所启动的所有线程,每个线程的监控内容如下图所示。 

    /env用来查看整个应用的配置信息,使用/env/[name]可以查看具体的配置项。 

    /health用来查看整个应用的健康状态,包括磁盘空间使用情况、数据库和缓存等的一些健康指标。 

    此外,Springboot还允许用户自定义健康指标,只需要定义一个类实现HealthIndicator接口,并将其纳入到Spring容器的管理之中。  

    1. @Component
    2. public class MyHealthIndicator implements HealthIndicator{
    3. @Override
    4. public Health health() {
    5. return Health.down().withDetail("error", "spring boot error").build();
    6. }
    7. }

    /info可以显示配置文件中所有以info.开头或与Git相关的一些配置项的配置信息。

    /mappings用来查看整个应用的URL地址映射信息。  

    /metrics用来查看一些监控的基本指标,也可以使用/metrics/[name]查看具体的指标。 

    此外,Springboot还为提供了CounterService和GaugeService两个Bean来供开发者使用,可以分别用来做计数和记录double值。 

    1. @RestController
    2. public class ActuatorController {
    3. @Autowired
    4. private CounterService counterService;
    5. @Autowired
    6. private GaugeService gaugeService;
    7. @GetMapping("/home")
    8. public String home() {
    9. //请求一次浏览数加1
    10. counterService.increment("home browse count");
    11. //请求时将app.version设置为1.0
    12. gaugeService.submit("app.version", 1.0);
    13. return "Actuator home";
    14. }
    15. }

    /shutdown是一个POST请求,用来关闭应用,由于操作比较敏感,默认情况下该请求是被禁止的,若要开启需在配置文件中添加以下配置:  

    endpoints.shutdown.enabled: true

    /trace用来监控所有请求的追踪信息,包括:请求时间、请求头、响应头、响应耗时等信息。 

    Actuator监控管理

    打开或关闭

    Actuator监控的所有项目都定义在spring-boot-actuator-x.x.x.RELEASE.jar的org.springframework.boot.actuate.endpoint包中,包含以下Endpoint。 

    这些Endpoint都继承自AbstractEndpoint,AbstractEndpoint中定义了两个重要的属性:enabled和sensitive。

    其中,enabled用来打开或关闭该监控项,语法为:endpoints.[endpoint_name].enabled=false/true,以关闭/autoconfig监控项为例,其配置如下。 

    endpoints.autoconfig.enabled=false

    sensitive用来配置该监控项是否属于敏感信息,访问敏感信息需要用户具有ACTUATOR角色权限,或者使用以下配置关闭安全限制。  

    management.security.enabled=false

    端口与地址

    除了使用与应用相同的端口访问监控地址外,我们还可以在配置文件中增加 management.port 配置项来自己指定监控的请求端口。 

    management.port=9090

    还可以通过 management.address 配置项来指定可以请求监控的IP地址,比如只能通过本机监控,可以设置 management.address = 127.0.0.1 。  

            <div class="person-messagebox">
                <div class="left-message"><a href="https://blog.csdn.net/pengjunlee">
                    <img src="https://profile.csdnimg.cn/8/B/D/3_pengjunlee" class="avatar_pic" username="pengjunlee">
                </a></div>
                <div class="middle-message">
                                        <div class="title"><span class="tit "><a href="https://blog.csdn.net/pengjunlee" data-report-click="{&quot;mod&quot;:&quot;popu_379&quot;,&quot;ab&quot;:&quot;new&quot;}" target="_blank">pengjunlee</a></span>
                        <!-- 等级,level -->
                                                <img class="identity-icon" src="https://csdnimg.cn/identity/blog8.png">                                                    <span class="flag expert">
                                <a href="https://blog.csdn.net/home/help.html#classicfication" target="_blank">
                                <img src="https://csdnimg.cn/release/phoenix/template/new_img/identityExpert.png" alt="">
                                    博客专家
                                </a>
                            </span>
                                            </div>
                    <div class="text"><span>原创文章 256</span><span>获赞 1051</span><span>访问量 1276万+</span></div>
                </div>
                                <div class="right-message">
                                            <a class="btn btn-sm  bt-button personal-watch" data-report-click="{&quot;mod&quot;:&quot;popu_379&quot;,&quot;ab&quot;:&quot;new&quot;}">关注</a>
                                                                <a href="https://bbs.csdn.net/topics/395528935" target="_blank" class="btn btn-sm bt-button personal-messageboard">他的留言板
                        </a>
                                    </div>
                            </div>
                        
        </div>
    
    展开全文
  • 1. 引用起步 gradle dependencies { ... compile("org.springframework.boot:spring-boot-starter-actuator") } maven <dependency> <groupId>org.springframework.boot</groupId> <artifactI
  • springboot 监控 Actuator和Admin

    千次阅读 2019-04-20 22:54:20
    一、什么是Actuator Actuator是spring boot的一个...Spring Boot Actuator提供了对单个Spring Boot的监控,信息包含:应用状态、内存、线程、堆栈等等,比较全面的监控了Spring Boot应用的整个生命周期。特别对于微...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,610
精华内容 5,044
关键字:

springboot监控actuator

spring 订阅