定时自动清理elasticsearch索引

1.1 查看索引的方法

1.2 手动删除索引的方法

1.3 脚本清理索引

1.4 定时任务

1.1 查看索引的方法

说明:

01:我这里是将elasticsearch、kibana、logstash装在一台机器上的

02:192.168.10.138是elasticsearch监听的内网IP地址

03:9200是elasticsearch的端口之一


#在elasticsearch服务器上查看索引的方法

1.png

#将索引进行排序

2.png

1.2 手动删除索引的方法

#手动删除15_tomcat_18080_catalina_log-2018.12.28索引

curl -XDELETE "http://192.168.10.138:9200/15_tomcat_18080_catalina_log-2018.12.28"


#手动删除15_tomcat_18080_access_log-2018.12.28索引

curl -XDELETE "http://192.168.10.138:9200/15_tomcat_18080_access_log-2018.12.28"

1.3 脚本清理索引

#注意

01:该脚本后面需要添加到定时任务中去,让其定时自动清理索引

02:如果elasticsearch运行了一段时间后,那么是无法删除7天前的数据

03:该脚本是删除当前时间前的第7天的索引(不需要索引的名称有一定的规则)

04:所以需要在部署好elasticsearch后,就把脚本添加到定时任务中去。

[root@node-1 scripts]# cat delete_elk_indexs.sh

#!/bin/bash
#
# Define variables
RETVAL=0
Port=9200
Ip=192.168.10.138
Time1=$(date +%Y.%m.%d)
Time2=$(date +%Y.%m.%d -d "-7day")

# Determine the user to execute
if [ "$UID" -ne "$RETVAL" ];then
  echo "Must be root to run scripts"
  exit 1
fi

# Load local functions
[ -f /etc/init.d/functions ] && source /etc/init.d/functions

# Delete index 7 days ago
curl -XDELETE "http://$Ip:$Port/*${Time2}" >/dev/null 2>&1
RETVAL=$?
if [ "$RETVAL" -eq 0 ];then
  action "delete elk 7 day ago index" /bin/true
 else
  action "delete elk 7 day ago index" /bin/false
fi

# Scripts return values
exit $RETVAL

#脚本执行结果

[root@ node-1 scripts]# sh delete_elk_indexs.sh

delete elk 7 day ago index [ OK ]

1.4 定时任务

[root@ node-1 scripts]# crontab -l|tail -2

# Crond delete elk 7 day ago index. USER:chenliang TIME:2019-01-03

00 12 * * * /bin/sh /server/scripts/delete_elk_indexs.sh >/dev/null 2>&1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章