Günlük kayıtlarımın logstash-Year-Week biçiminde dizine eklendiğini biliyorum. Yani, birkaç haftadan eski indeksleri silmek istiyorsam, elasticsearch'te bunu nasıl başarabilirim. Bunu yapmanın kolay ve sorunsuz bir yolu var mı?Elasticsearch'teki eski endeksleri kaldırma
cevap
Küratör burada ideal bir maç olacak. Burada link bulabilirsiniz - https://github.com/elastic/curator
aşağıda gibi bir komut sadece iyi çalışması gerekir -
curator --host <IP> delete indices --older-than 30 --prefix "twitter-" --time-unit days --timestring '%Y-%m-%d'
Sen bazen indeksleri kaldırılması için cron bu bulundurun.
Burada bazı örnekler ve belgeler bulabilirsiniz - https://www.elastic.co/guide/en/elasticsearch/client/curator/current/examples.html
Bu kullanım durumu için özel olarak geliştirilmiş bir araç olan Curator'a bir göz atın. dokümantasyon için
Örnek komut
:curator --host 10.0.0.2 delete indices --older-than 30 --time-unit days \
--timestring '%Y.%m.%d'
Sadece
#!/bin/bash
# Zero padded days using %d instead of %e
DAYSAGO=`date --date="30 days ago" +%Y%m%d`
ALLLINES=`/usr/bin/curl -s -XGET http://127.0.0.1:9200/_cat/indices?v | egrep logstash`
echo
echo "THIS IS WHAT SHOULD BE DELETED FOR ELK:"
echo
echo "$ALLLINES" | while read LINE
do
FORMATEDLINE=`echo $LINE | awk '{ print $3 }' | awk -F'-' '{ print $2 }' | sed 's/\.//g' `
if [ "$FORMATEDLINE" -lt "$DAYSAGO" ]
then
TODELETE=`echo $LINE | awk '{ print $3 }'`
echo "http://127.0.0.1:9200/$TODELETE"
fi
done
echo
echo -n "if this make sence, Y to continue N to exit [Y/N]:"
read INPUT
if [ "$INPUT" == "Y" ] || [ "$INPUT" == "y" ] || [ "$INPUT" == "yes" ] || [ "$INPUT" == "YES" ]
then
echo "$ALLLINES" | while read LINE
do
FORMATEDLINE=`echo $LINE | awk '{ print $3 }' | awk -F'-' '{ print $2 }' | sed 's/\.//g' `
if [ "$FORMATEDLINE" -lt "$DAYSAGO" ]
then
TODELETE=`echo $LINE | awk '{ print $3 }'`
/usr/bin/curl -XDELETE http://127.0.0.1:9200/$TODELETE
sleep 1
fi
done
else
echo SCRIPT CLOSED BY USER, BYE ...
echo
exit
fi
yanb (henüz başka bash) tutmak istediğiniz gün # ile 30 değiştirebilir, bash komut dosyasını kullanabilirsiniz
#!/bin/bash
searchIndex=logstash-monitor
elastic_url=logging.core.k94.kvk.nl
elastic_port=9200
date2stamp() {
date --utc --date "$1" +%s
}
dateDiff(){
case $1 in
-s) sec=1; shift;;
-m) sec=60; shift;;
-h) sec=3600; shift;;
-d) sec=86400; shift;;
*) sec=86400;;
esac
dte1=$(date2stamp $1)
dte2=$(date2stamp $2)
diffSec=$((dte2-dte1))
if ((diffSec < 0)); then abs=-1; else abs=1; fi
echo $((diffSec/sec*abs))
}
for index in $(curl -s "${elastic_url}:${elastic_port}/_cat/indices?v" | grep -E " ${searchIndex}-20[0-9][0-9]\.[0-1][0-9]\.[0-3][0-9]" | awk '{ print $3 }'); do
date=$(echo ${index: -10} | sed 's/\./-/g')
cond=$(date +%Y-%m-%d)
diff=$(dateDiff -d $date $cond)
echo -n "${index} (${diff})"
if [ $diff -gt 1 ]; then
echo "/DELETE"
# curl -XDELETE "${elastic_url}:${elastic_port}/${index}?pretty"
else
echo ""
fi
done
Elasticsearch sürüm 5.x kullanıyorsanız, küratörün sürüm 4.x sürümünü yüklemeniz gerekir. Sürüm uyumluluğu ve yükleme adımlarını documentation
Yüklendikten sonra görebilirsiniz. Sonra sadece
curator --config path/config_file.yml [--dry-run] path/action_file.yml
Küratör sadece çıkış idam olurdu ne Küratör kuru işletilen bayrağı sağlar komutunu çalıştırın. Çıkış config.yml dosyasında tanımladığınız günlük dosyanızda olacaktır. Eğer config_file.yml dosyasında tanımlı kayıt defteri yoksa currator konsola çıkacaktır. endeksleri --dry işletilen bayrağı olmadan yukarıdaki komutu çalıştırmak silmek için
yapılandırma dosyası config_file.yml eylem dosya action_file.yml İsterseniz
---
actions:
1:
action: delete_indices
description: >-
Delete indices older than 7 days (based on index name), for logstash-
prefixed indices. Ignore the error if the filter does not result in an
actionable list of indices (ignore_empty_list) and exit cleanly.
options:
ignore_empty_list: True
timeout_override:
continue_if_exception: False
disable_action: False
filters:
- filtertype: pattern
kind: prefix
value: logstash-
exclude:
- filtertype: age
source: name
direction: older
timestring: '%Y.%m.%d'
unit: days
unit_count: 7
exclude:
olduğunu
---
client:
hosts:
- 127.0.0.1
port: 9200
logging:
loglevel: INFO
logfile: "/root/curator/logs/actions.log"
logformat: default
blacklist: ['elasticsearch', 'urllib3']
olduğunu Endeksleri haftalık, aylık, vb. O zaman sadece bu klasörlerden birinde bir shell script koyun
#!/bin/bash
# Script to delete the log event indices of the elasticsearch weekly
#This will delete the indices of the last 7 days
curator --config /path/config_file.yml /path/action_file.yml
gibi bash senaryo yazmaya: /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthly or /etc/cron.weekly
ve iş yapılır.
NOT: Yapılandırma ve eylem dosyalarınızda doğru girintiyi kullandığınızdan emin olun. Aksi takdirde işe yaramaz.
Teşekkürler, bu (2017) küratör 4.2 için bu cevabın çalışma versiyonudur :) – chrisan
Bu, küratörün çalışma şeklidir! [Vineeth Mohan] 'un cevabı (https://stackoverflow.com/users/976646/vineeth-mohan), küratör 4.x'ten güncel değildir ve şu anda çoğu elasticsearch kurulumu için geçerli olmalıdır (5.x şu an geçerli). – jonashackt
curator_cli delete_indices --filter_list '{"filtertype":"none"}'
tamamını veya filtreyi siler: Bu aradığım buydu
--filter_list '[{"filtertype":"age","source":"creation_date","direction":"older","unit":"days","unit_count":13},{"filtertype":"pattern","kind":"prefix","value":"logstash"}]'
- 1. data.table "tuşuna endeksleri" veya
- 2. Sayım endeksleri Python
- 3. Çapraz başvuru listelerinin Endeksleri
- 4. Reorganise ve Yeniden Endeksleri otomatik
- 5. Tüm endeksleri Lucene.net içinde sil
- 6. İki diziyi pandalarda birleştirerek endeksleri
- 7. MongoDB mekansal endeksleri nasıl uygular?
- 8. Solr endeksleri Elasticsearch'ten nasıl kullanılır?
- 9. kaldırma
- 10. Kaldırma ve kaldırma Android NDK
- 11. NoSQL veritabanları endeksleri kullanıyor veya kullanıyor mu?
- 12. C# ayrıştırma json in # # endeksleri bilmeden
- 13. Endeksleri döndüren bir Linq işlevi var mı?
- 14. JList öğesinden bir öğe kaldırma
- 15. çıkış kaldırma
- 16. R: Bir listeden NULL öğelerini kaldırma
- 17. Eski adı
- 18. Eski kurulum nasıl tespit edilir ve kaldırılır?
- 19. elasticsearch içinde 30 günden eski belgeleri silme
- 20. maven ve scala kullanarak kaldırma 2.8: kaldırma-eşleştiricisi eksik?
- 21. Yinelenen kaldırma vba içinde bir dizi kullanarak kaldırma
- 22. Bypass Onaylama Pip kaldırma için istemi
- 23. Dikdörtgeni gruptan kaldırma sorunları javafx
- 24. Kaldırma ve güvenlik yazın
- 25. Python kaldırma easy_install
- 26. Tüm Öğeleri ComboBox'tan Kaldırma?
- 27. Git kaldırma dizini
- 28. Nesneyi oturumdan kaldırma
- 29. xml dosyasından sürümü kaldırma
- 30. Anahtar bağlamayı kaldırma
. Küratörün uygulamalarına dair belgeleriniz var mı? –
Bu, küratör v4 veya daha yeni ile çalışmıyor. Küratörün eyleminin açıklandığı bir yapılandırma dosyası ve bir eylem dosyası gerektirir. –
Çalışma küratörü için @ sachchit-bansal tarafından verilen yanıta bakın 4.2 örnek – chrisan