文档章节

springboot的diskSpaceHealthIndicator

go4it
 go4it
发布于 2017/04/04 20:35
字数 292
阅读 19
收藏 1

##diskSpaceHealthIndicator 用来对磁盘空间的状态进行检测,这个非常有用,以免磁盘空间占用快100%导致服务异常。

	@Configuration
	@ConditionalOnEnabledHealthIndicator("diskspace")
	public static class DiskSpaceHealthIndicatorConfiguration {

		@Bean
		@ConditionalOnMissingBean(name = "diskSpaceHealthIndicator")
		public DiskSpaceHealthIndicator diskSpaceHealthIndicator(
				DiskSpaceHealthIndicatorProperties properties) {
			return new DiskSpaceHealthIndicator(properties);
		}

		@Bean
		public DiskSpaceHealthIndicatorProperties diskSpaceHealthIndicatorProperties() {
			return new DiskSpaceHealthIndicatorProperties();
		}

	}

实例

{
  "status": "UP",
  "diskSpace": {
    "status": "UP",
    "total": 120108089344,
    "free": 4064759808,
    "threshold": 10485760
  }
}

具体见org/springframework/boot/actuate/health/DiskSpaceHealthIndicator.java

public class DiskSpaceHealthIndicator extends AbstractHealthIndicator {

	private static final Log logger = LogFactory.getLog(DiskSpaceHealthIndicator.class);

	private final DiskSpaceHealthIndicatorProperties properties;

	/**
	 * Create a new {@code DiskSpaceHealthIndicator}.
	 * @param properties the disk space properties
	 */
	public DiskSpaceHealthIndicator(DiskSpaceHealthIndicatorProperties properties) {
		this.properties = properties;
	}

	@Override
	protected void doHealthCheck(Health.Builder builder) throws Exception {
		File path = this.properties.getPath();
		long diskFreeInBytes = path.getFreeSpace();
		if (diskFreeInBytes >= this.properties.getThreshold()) {
			builder.up();
		}
		else {
			logger.warn(String.format(
					"Free disk space below threshold. "
							+ "Available: %d bytes (threshold: %d bytes)",
					diskFreeInBytes, this.properties.getThreshold()));
			builder.down();
		}
		builder.withDetail("total", path.getTotalSpace())
				.withDetail("free", diskFreeInBytes)
				.withDetail("threshold", this.properties.getThreshold());
	}

}

默认的阈值是通过DiskSpaceHealthIndicatorProperties来进行设置的

@ConfigurationProperties(prefix = "management.health.diskspace")
public class DiskSpaceHealthIndicatorProperties {

	private static final int MEGABYTES = 1024 * 1024;

	private static final int DEFAULT_THRESHOLD = 10 * MEGABYTES;

	/**
	 * Path used to compute the available disk space.
	 */
	private File path = new File(".");

	/**
	 * Minimum disk space that should be available, in bytes.
	 */
	private long threshold = DEFAULT_THRESHOLD;

	public File getPath() {
		return this.path;
	}

	public void setPath(File path) {
		Assert.isTrue(path.exists(), "Path '" + path + "' does not exist");
		Assert.isTrue(path.canRead(), "Path '" + path + "' cannot be read");
		this.path = path;
	}

	public long getThreshold() {
		return this.threshold;
	}

	public void setThreshold(long threshold) {
		Assert.isTrue(threshold >= 0, "threshold must be greater than 0");
		this.threshold = threshold;
	}

}

默认是剩余空间小于10M的时候,认为不健康。

© 著作权归作者所有

共有 人打赏支持
go4it
粉丝 76
博文 852
码字总数 743816
作品 0
深圳
私信 提问
恒宇少年/spring-boot-chapter

简书整套文档以及源码解析 专题 专题名称 专题描述 001 Spring Boot 核心技术 讲解SpringBoot一些企业级层面的核心组件 002 Spring Cloud 核心技术 对Spring Cloud核心技术全面讲解 003 Quer...

恒宇少年
2018/04/19
0
0
SpringBootBucket 2.0.4 发布,代号“傲娇的小二晶”

SpringBootBucket 自从1.0.0版本发布后就有好多人喜欢,目前码云上面star数量接近1.2k。上个月还收到了红薯签名的1000 star奖杯,这个我自己也觉得很惊讶。 由于SpringBoot 1.x官方将终止维护...

一刀
2018/09/16
1K
4
springboot情操陶冶-初识springboot

前言:springboot由于其轻便和去配置化等的特性已经被广泛应用,基于时代潮流以及不被鄙视,笔者于是开辟此篇开始认识springboot 前话 springboot是基于spring而开发的轻量级框架,所以在学习...

南柯问天
2018/07/24
0
0
springboot 详解 (六)servlet & scheduled & listener

---------------------------------------------------------------------------------------------------------------- springboot 详解 (一) helloworld 下载demo springboot 详解 (二)......

curiousby
2016/11/17
0
0
SpringBootBucket 1.0.0 发布,SprintBoot 全家桶

Spring Boot 现在已经成为Java 开发领域的一颗璀璨明珠,它本身是包容万象的,可以跟各种技术集成。 本项目对目前Web开发中常用的各个技术,通过和SpringBoot的集成,并且对各种技术通过“一...

一刀
2018/03/05
7.3K
17

没有更多内容

加载失败,请刷新页面

加载更多

2019-1-16

2019-1-16 星期三 晴转霾 早饭:小面包+鸡蛋糕;午饭:馍+地三鲜;晚饭:; 6:50起床,因为媳妇说可能今天晚上去大雁塔那边吃饭,早上起来后洗了个澡(主要因为头发很油了)。 今天早上天气...

莱菔籽
18分钟前
0
0
localDate、localDateTime、localTime的使用

从前端接受的时候,localDate类型的数据要转换,加 @DateTimeFormat(pattern = "yyyy-MM-dd")

shimmerkaiye
25分钟前
1
0
1.二叉树

概念 二叉树(binary tree)是每个节点最多只有两个分支(即不存在分支度大于2的节点)的结构树。通常分支被称为“左子树”和“右子树”,左子树和右子树的位置不能随意颠倒。二叉树的第i层 ...

火拳-艾斯
28分钟前
3
0
java 线程

一、通过实现Runnable接口来创建线程 public class TestThread implements Runnable { public void run() { try { for (int i = 0; i < 10; i++) { ......

朝如青丝暮成雪
33分钟前
1
0
关于eclipse2017 import javax.servlet.jsp.tagext引入错误得问题

在eclipse中: 这个javax.servlet.jsp.tagext属于是tomcat相关jar包找到jsp-api.jar 在tomcat文件夹下边的lib文件夹中就有 如果项目中报错的话 把这个加入到项目中 在myeclipse中: 如下图,...

ZhangLG
48分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部