自動刪除 ElasticSearch 過期的 Logstash Index

in elasticsearch •  6 years ago 


elastic-search logo


ElasticSearch Logstash 循環機制

以前都用 MongoDB 儲存 Log,MongoDB 有一個 capped 功能可以自動刪除以前的資料,達到 Log 循環的功能。由於我很懶惰,凡事能夠自動化最好了,每天已經寫很多 Bug 製造工作機會了,系統管理的事就盡量自動化吧。但是最近 (其實很久了...),都開始改用 ElasticSearch 實現 Log Server,雖然 ELK 很好用但是就是少了循環的功能,只好硬幹寫了支 Script 來處理。

Script 程式已經放在 (GitHub),可以調整 KEEP_DAYS 來改變要保留 Log 的天數,如下:
#/bin/bash

KEEP_DAYS=30
ELASTICSEARCH_HOST='http://elasticsearch:9200'
DATE_THRESHOLD=date -d "${KEEP_DAYS} days ago" +%Y/%m/%d
TIME_THRESHOLD=date -d "${DATE_THRESHOLD}" +%s

INDEX_LIST=curl -s -k ${ELASTICSEARCH_HOST}/_cat/indices?s=index | grep 'logstash' | awk '{print$3}'

echo "DATE_THRESHOLD=${DATE_THRESHOLD}"

for INDEX_NAME in ${INDEX_LIST}
do
INDEX_DATE=echo "${INDEX_NAME}" | sed -e 's/\./\//g' | sed -e 's/logstash-//g'
INDEX_TIME=date -d "${INDEX_DATE}" +%s
if [ ${TIME_THRESHOLD} -gt ${INDEX_TIME} ]; then
echo "Remove Index: ${INDEX_NAME}"
curl -XDELETE -k ${ELASTICSEARCH_HOST}/${INDEX_NAME}
fi
done
有需要的請自行服用...


文章由 Soul & Shell Blog 轉貼, 原文:https://blog.toright.com/posts/5932/elasticsearch-log-index-rotate.html

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!