问题描述:
对于免费版本的elk,默认情况会保留全部数据,如果不及时清理,生产环境3个月的累计数据量为27G,平均每月增加9G,本文讲解如何定期清理elk日志;
解决办法
1)创建脚本
vi rm_es_log.sh
chmod +x rm_es_log.sh
默认只保留最近7天的日志,可以传入参数清理其他时间的日志;
我的elasticsearch有权限控制,如果无密码方式登录,需要去掉-u
参数
#!/bin/sh
####################################
# File Name: rm_es_log.sh
# Version: V1.0
# Author: hury
# Created Time : 2019-09-09 12:26:14
####################################
IP=服务器IP
CURRENT_DIR=$PWD
LOG_DIR=$CURRENT_DIR/del_es_index.log
DAYS=7
if [ "$#" -eq "1" ];then
DAYS=$1
fi
echo "will delete es logs :" `date -d "$DAYS days ago" +%Y.%m.%d`
curl -XGET "http://$IP:9200/_cat/shards" -u 用户名:密码 |grep $IP |awk '{print $1}' |grep `date -d "$DAYS days ago" +%Y.%m.%d` |uniq > $CURRENT_DIR/index_name.tmp
for index_name in `cat $CURRENT_DIR/index_name.tmp`
do
curl -XDELETE http://$IP:9200/$index_name -u 用户名:密码 | grep true
if [ $? -eq 0 ];then
echo "${index_name} delete success." >> $LOG_DIR
else
echo "${index_name} delete error." >> $LOG_DIR
fi
Done
2)添加计划任务
linux下添加计划任务:
0 0 1 * * * /PATH_TO_SCRIPT/rm_es_logs.sh >/dev/null 2>&1
windows下计划任务:
上述任务如何在windows下执行,首先需要安装git
软件,然后配置计划任务。
–END–