自動刪除 ElasticSearch 過期的 Logstash Index
ElasticSearch Logstash 循環機制
以前都用 MongoDB 儲存 Log,MongoDB 有一個 capped 功能可以自動刪除以前的資料,達到 Log 循環的功能。由於我很懶惰,凡事能夠自動化最好了,每天已經寫很多 Bug 製造工作機會了,系統管理的事就盡量自動化吧。但是最近 (其實很久了...),都開始改用 ElasticSearch 實現 Log Server,雖然 ELK 很好用但是就是少了循環的功能,只好硬幹寫了支 Script 來處理。
Script 程式已經放在 (GitHub),可以調整 KEEP_DAYS 來改變要保留 Log 的天數,如下:#/bin/bashKEEP_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