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