Spring Boot Actuator 和 Profiles 的简单使用

文章目录

  • Actuator 监控
    • 监控分类
    • 监控的使用
      • 自定义端点
  • 配置文件
    • 优先级
    • Profiles

Actuator 监控

是Spring Boot 提供的对应用系统的自省和监控的集成功能
可查看应用(配置)信息、环境信息以及对应用进行操控

监控分类

原生端点:

  • 应用配置类
    常用:/info /bean /mappings(URI路径信息)
  • 度量指标类
    常用:/health threaddump(当前线程活动快照)
  • 操作控制类
    常用:/shutdown (关闭应用 POST)

自定义端点:扩展属性、指标

监控的使用

添加依赖:

<dependency>
   <groupId>org.springframework.bootgroupId>
   <artifactId>spring-boot-starter-actuatorartifactId>
dependency>

启动项目后可看到:
在这里插入图片描述
通过 localhost:8080/actuator 访问到监控导航页面:
spring boot 2.x.x默认开放 health 和 info 两个端点

{
	_links: {
		self: {
			href: "http://localhost:8080/actuator",
			templated: false
		},
		health: {
			href: "http://localhost:8080/actuator/health",
			templated: false
		},
		health-path: {
			href: "http://localhost:8080/actuator/health/{*path}",
			templated: true
		},
		info: {
			href: "http://localhost:8080/actuator/info",
			templated: false
		}
	}
}
  • /health 健康检查,检查应用资源
    application.yml:

    management:
      endpoint:
        health:
          show-details: always
    

    Spring Boot Actuator 和 Profiles 的简单使用_第1张图片status:
    UP:正常
    DOWN:遇到了问题,不正常
    OUT_OF_SERVICE:资源未在使用,或不该去使用
    UNKNOWN:未知

  • /info 描述信息
    可在配置文件 application.yml 中设置相关属性,不设置返回空Json

    info:
      app-name: spring-boot-demo
      autor: orcas
      email: [email protected]
    

    Spring Boot Actuator 和 Profiles 的简单使用_第2张图片

激活其他的Actuator端点:
可以使用通配符 '*'激活所有,或者结合include/exclude指定

management:
  endpoints:
    web:
      exposure:
        include: dump,loggers,mappings,metrics,env

还可以使用可视化工具进行监控

自定义端点

@Endpoint(id = "datetime") // 自定义事件端点
public class DateTimeEndPoint {

    private String format = "yyyy-MM-dd HH:mm:ss";

    private String name = "orcas";

    /**
     * @ReadOperation 该注解用于显示监控指标
     * @return
     */
    @ReadOperation
    public Map<String, Object> info() {
        Map<String, Object> info = new HashMap<>();
        info.put("name", name);
        info.put("datetime", new SimpleDateFormat(format).format(new Date()));
        return info;
    }
    
    /**
     * @WriteOperation 该注解 动态更改监控指标 使用的是 POST 请求
     * @param name
     */
    @WriteOperation
    public void setName(String name) {
        this.name = name;
    }
}

配置:

@Configuration
public class DateTimeEndpointConfig {

    @Bean
    @ConditionalOnMissingBean
    @ConditionalOnAvailableEndpoint
    public DateTimeEndPoint dateTimeEndPoint() {
        return new DateTimeEndPoint();
    }
}

访问 localhost:8080/actuator/datetime
这里 /actuator后的路径就是注解 @Endpoint 中设置的 id(不要与原有的端点 id 重复)
在这里插入图片描述
POST请求动态修改

{
  "name": "fish"
}

在这里插入图片描述

配置文件

优先级

同一目录下的 application 和 bootstrap:

  • bootstrap 优先级高于 application,优先被加载
  • bootstrap 用于应用程序上下文的引导阶段,由父 ApplicationContext 加载
  • bootstrap 是系统级别的配置(不变的参数),application 是应用级别的配置

不同位置的配置文件加载顺序(优先级):

  • file : ./config/ 优先级最高(项目根路径下的 config 文件下)
  • file : ./ 优先级第二(项目根路径下)
  • classpath:/config/ 优先级第三(项目 resources/config 下)
  • classpath:/ 优先级第四(项目 resources 目录下)

高优先级覆盖低优先级的相同配置,多个配置文件互补

Profiles

在不同环境下使用不同配置

用连字符 ---分割

# 所有环境公用的配置属性
management:
  endpoint:
    health:
      show-details: always
  endpoints:
    web:
      exposure:
        include: dump,loggers,mappings,metrics,env
info:
  app-name: spring-boot-demo
  autor: orcas
  email: [email protected]
# 可设置默认启用的 profiles
spring:
  profiles:
    active: dev
---
# profile=x  某环境下的专用属性
# 开发环境
spring:
  profiles: dev
---
# 生产环境
spring:
  profiles: prod
server:
  tomcat:
    max-threads: 300
    max-connections: 1000

也可通过active profiles来指定

也可通过文件名来划分
application.properties
application-dev.properties
application-prod.properties

你可能感兴趣的:(框架)