#! /bin/bash
echo "Begin @ `date +%Y%m%d%H%M%S`"
d7=$(date +%Y.%m.%d --date '7 days ago')
curl -XDELETE "http://192.168.1.30:9200/logstash-$d7?pretty"
echo "End @ `date +%Y%m%d%H%M%S`"
后来,发现这样并没有解决实际问题,因为绝大多数日志产生于系统每天凌晨0点到8点之间的批处理任务所产生,而这些日志其实是没有分析价值的。所以,请问下,如何从Elasticsearch中只清理掉系统每天凌晨0点到8点之间所产生的数据呢?
系统中,最近7天的日志信息如下:
[root@localhost rm_elk_log_7days]# curl http://192.168.1.30:9200/_cat/indices
yellow open logstash-2016.12.11 5 1 85735 0 31.9mb 31.9mb
yellow open logstash-2016.12.12 5 1 493016 0 224.7mb 224.7mb
yellow open twitter 5 1 1 0 4.3kb 4.3kb
yellow open logstash-2016.12.10 5 1 136902 0 47mb 47mb
yellow open .kibana 1 1 28 1 42.1kb 42.1kb
yellow open logstash-2016.12.14 5 1 536879 0 214.7mb 214.7mb
yellow open logstash-2016.12.13 5 1 609423 0 286.4mb 286.4mb
yellow open logstash-2016.12.16 5 1 88745 0 41.4mb 41.4mb
yellow open logstash-2016.12.15 5 1 598826 0 272.1mb 272.1mb
[root@localhost rm_elk_log_7days]#
新手,刚接触ELK,请给个思路或者解决问题的方向,谢谢!
8 个回复
wungking - 90后it
赞同来自: zhwy103 、greatstep 、renguzi 、famoss
第一种:设置入ES的条件,0-8点的日志数据就不入ES,这样就不需要有删除的操作;
第二种:整理这类日志,将需要的数据 转存到新的索引下,不需要的直接丢掉,这样可以保证你能存储较多的日志数 据,也不担心容量增加的太快;
第三种:楼上提的那种方法,官网上只是一个实验性的API,按照官网描述,这个操作应该是比较耗资源的;
综上:你还是考虑第一种方法吧,不收集不需要的时间段的数据
medcl - 今晚打老虎。
赞同来自: laoyang360 、insist_93
leighton_buaa
赞同来自: renguzi
medcl - 今晚打老虎。
赞同来自: doom
sundong306
赞同来自:
#!/bin/bash
#定时清除elk索引,7天
DATE=`date -d "7 days ago" +%Y.%m.%d` >> /tmp/clean_logstash.log
INDEX=`curl -XGET 'http://127.0.0.1:9200/_cat/indices/?v'|awk '{print $3}'` >> /tmp/clean_logstash.log
curl -XDELETE http://127.0.0.1:9200/*-${DATE} >> /tmp/clean_logstash.log
[root@SDS-david-yufabu ~]#
medcl - 今晚打老虎。
赞同来自:
https://elasticsearch.cn/article/6358
guopengfei
赞同来自:
https://www.blog-china.cn/temp ... .html
guopengfei
赞同来自:
https://www.blog-china.cn/temp ... .html