elasticsearch-數據自動刪除

最近我使用elasticsearch作為日誌的存儲分析引擎。用來存儲團隊開發人員的日誌。使用es的過程中,索引越來越多,沒有及時刪除,就導致集群某台實例oom了。

解決辦法:

編寫一個shell腳本,然後使用linux的crontab,每天0點執行下。

1.尋找索引的規律

我們的日誌索引格式如下:

以logstach開頭,以年.月.日結尾

於是,我就想到使用正則匹配,即 logstash-*-12.15.11。

2.編寫shell腳本

#!/bin/bashecho "start delete es data"echo `date --date=0 days ago "+%Y-%m-%d %H:%M:%S"`dateStr=`date -d -32day +%Y.%m.%d`echo delete time is ${dateStr}#`curl -XDELETE http://10.240.47.81:9200/logstash-v4_insert_log-"${dateStr}`echo curl -XDELETE http://10.240.47.81:9200/logstash-*-${dateStr}result=`curl -XDELETE http://10.240.47.81:9200/logstash-*-${dateStr}`sleep 3echo delete result ${result}

3.添加linux crontab

vim /etc/crontab

然後在最後加一行

0 0 * * * root sh /data/apps/es/cleanupesdata/cleanup.sh >> /data/apps/es/cleanupesdata/clean.log

4.總結

類似shell,crontab這些知識,es的知識,我們可以不是很精通,但是遇到的時候,最好能寫一次。因為,我們不寫,沒有人能替我們寫,除非這個事情有團隊幫忙做。帶團隊不容易,一些小的細節要認真處理。解決一個坑算一個。

補充:

昨天驗證了下,腳本是沒問題的。為了確保最終的準確性,今天再次驗證。沒問題。

腳本運行日誌:

start delete es data

2018-01-26 00:00:01

delete time is 2017.12.25

curl -XDELETE 10.240.47.81:9200/logst

delete result {"acknowledged":true}

es數據確實刪除了。這樣就能保證我們的es日誌集群不至於爆掉。阿彌陀佛。


推薦閱讀:

知乎為什麼要自己開發日誌聚合系統「kids」而不用更簡潔方便的「ELK」?
使用ElasticSearch搭建日誌系統
日誌分析的模式發現功能實現(1)
elasticsearch,我用ik分詞,搜索"寶馬2012",怎樣只查出即包含「寶馬」又包含「2012」的文章?
Elasticsearch與Solr的選擇?

TAG:Elasticsearch | 數據刪除 |