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 http://10.240.47.81:9200/logstash-*-2017.12.25
delete result {"acknowledged":true}
es數據確實刪除了。這樣就能保證我們的es日誌集群不至於爆掉。阿彌陀佛。
推薦閱讀:
※知乎為什麼要自己開發日誌聚合系統「kids」而不用更簡潔方便的「ELK」?
※使用ElasticSearch搭建日誌系統
※日誌分析的模式發現功能實現(1)
※elasticsearch,我用ik分詞,搜索"寶馬2012",怎樣只查出即包含「寶馬」又包含「2012」的文章?
※Elasticsearch與Solr的選擇?
TAG:Elasticsearch | 數據刪除 |