es磁盘空间清理
近期发现es磁盘空间占用率达到了88%,理论上讲,磁盘空间占用率高于85%会影响分片,高于90%则会影响数据写入,需要及时处理。
问题排查:
使用 GET /_cat/allocation?v 命令查看es磁盘空间使用情况,发现索引只占用了100G左右,但是总的占用却高达400G多,其他的空间被什么占用了呢?
磁盘空间占用:
1、索引占用
2、缓存
3、日志
4、执行删除未释放占用
其中缓存占用只有少部分,暂且忽略,依次说下其他占用处理方案。
索引占用
索引占用包含过期索引占用和 Monitoring 监控索引占用。
过期索引占用可以写一个定时任务,定期检查是否存在过期索引,目前是保留两天索引,其他历史索引直接清理掉即可,这里清理磁盘空间30G左右。
Monitoring 监控这里大概讲下,它的作用主要是为了监测集群的健康情况,对应索引中主要存放了集群状态、集群统计、节点统计、索引统计等信息。默认是保留近7天的监控数据,监控客户
端会每隔10s采集一次集群的监控信息。随着索引的增多和数据量的上升,Monitoring 监控索引占用空间会越来越大,目前监控索引大小16G左右,7天的也就是112G。
针对 Monitoring 监控索引占用空间和实际业务情况,讲监控周期设置为3天。可以节省大概64G。
## 设置检测周期为3天 {"persistent": {"xpack.monitoring.history.duration":"3d"}} ## 查看设置是否生效 GET _cluster/settings ## 删除已存在检测索引 GET /.monitoring-es-6-2022.10.03/_search GET /.monitoring-kibana-6-2022.10.03/_search DELETE .monitoring-es-6-2022.10.07 DELETE .monitoring-kibana-6-2022.10.07
注:以上设置对于开源基础版本是不支持的,即使设置了天数为3天,但是依然会保留默认7天设置。(这也是后面发现不会自动清理历史监测索引后发现的,看来想要更好的服务还是需要花钱。。)
日志
联系运维直接删除即可,可保留最近一周
执行程序未释放
重启节点或直接kill【kill存在风险,需谨慎】,释放100G左右。