线上环境使用 Zipkin 进行微服务链路追踪,数据存储在 ElasticSearch 中,时间一久,就有一大堆日志,目前一天 1G 就已经吃不消了。 同时,线上环境 Zipkin 为强制依赖,如果不部署 Zipkin 那么在微服务互相调用的时候就会因为需要请求 Zipkin 而导致接口范围超时。 所以才折腾了个脚本,去定期清理 ES 中的索引,也算是打了个补丁吧。
ES 数据清理
一、现象
如果不删除 ES 数据,Zipkin 存入的日志会越来越多,直至磁盘写满,磁盘满了之后 Zipkin 就无法写入新的数据。
二、创建清理脚本
vim es-index-clear.sh
# /bin/bash
#只保留 7 天内的日志索引
LAST_DATA=`date -d "-7 days" "+%Y.%m.%d"`
# 删除 7 天前的索引
curl -XDELETE 'http://ip:port/*-'${LAST_DATA}
三、添加定时任务
# 编辑 crontab 文件,添加相应的任务
crontab -e
# 设置每天的凌晨一点清除索引
# 0 1 * * * root sh /opt/devops/es-index-clear.sh
线上上线脚本
有些地方磁盘空间小,又是离线环境,只能保留 1 天了
#!/bin/bash
DATE=`date -d "-1 days" "+%Y-%m-%d"`
echo ${DATE}
curl -XDELETE http://10.254.149.127:9200/zipkin-span-${DATE}