में पुराने सूचकांक को हटा रहा है मेरे पास लॉगस्टैश-वर्ष-सप्ताह प्रारूप में अनुक्रमित मेरे कई लॉग हैं। यही है अगर मैं कुछ हफ्तों से पुराने सूचकांक को हटाना चाहता हूं, तो मैं इसे लोचदार खोज में कैसे प्राप्त कर सकता हूं। क्या ऐसा करने का कोई आसान, निर्बाध तरीका है?elasticsearch
उत्तर
क्यूरेटर यहाँ एक आदर्श मैच होगा। आप लिंक यहां पा सकते हैं - https://github.com/elastic/curator
नीचे की तरह एक आदेश ठीक से काम करना चाहिए -
curator --host <IP> delete indices --older-than 30 --prefix "twitter-" --time-unit days --timestring '%Y-%m-%d'
आप कभी-कभी सूचकांक दूर करने के लिए क्रॉन में इस में रख सकते हैं।
आप यहाँ कुछ उदाहरण और डॉक्स पा सकते हैं - https://www.elastic.co/guide/en/elasticsearch/client/curator/current/examples.html
Curator पर एक नज़र डालें, जो इस तरह के उपयोग के मामले के लिए विशेष रूप से विकसित एक उपकरण है।
एक नमूना आदेश, प्रलेखन के लिए:
curator --host 10.0.0.2 delete indices --older-than 30 --time-unit days \
--timestring '%Y.%m.%d'
मैं एक bash स्क्रिप्ट का उपयोग, कुछ ही दिन रखने के लिए
#!/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 (अभी तक एक और बैश) चाहते हैं # के साथ 30 को बदलने
#!/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
यदि आप लोचदार खोज संस्करण 5.x का उपयोग कर रहे हैं तो आपको क्यूरेटर संस्करण 4.x इंस्टॉल करना होगा। आप documentation
से संस्करण स्थापित करने और स्थापना चरणों को देख सकते हैं। तो बस आदेश
curator --config path/config_file.yml [--dry-run] path/action_file.yml
क्यूरेटर एक सूखी रन ध्वज को सिर्फ उत्पादन क्या क्यूरेटर मार डाला है | प्रदान करता है चलाते हैं। आउटपुट आपकी लॉग फ़ाइल में होगा जिसे आपने config.yml फ़ाइल में परिभाषित किया है। अगर config_file.yml में परिभाषित कुंजी लॉगिंग नहीं है तो क्यूरेटर कंसोल करने के लिए आउटपुट करेगा। सूचकांक --dry रन झंडा बिना उपरोक्त आदेश चलाने को हटाने के लिए
विन्यास फाइल config_file.yml
---
client:
hosts:
- 127.0.0.1
port: 9200
logging:
loglevel: INFO
logfile: "/root/curator/logs/actions.log"
logformat: default
blacklist: ['elasticsearch', 'urllib3']
है कार्रवाई फ़ाइल action_file.yml
---
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:
है आप चाहते हैं सूचकांक साप्ताहिक, मासिक, आदि स्वचालित रूप से हटाने के लिए। तो बस की तरह
#!/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
बैश स्क्रिप्ट लिखने इन फ़ोल्डरों में से एक में एक खोल स्क्रिप्ट रखो: /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthly or /etc/cron.weekly
और अपने काम किया जाता है।
नोट: अपने कॉन्फ़िगरेशन और एक्शन फ़ाइलों में सही इंडेंटेशन का उपयोग करना सुनिश्चित करें। अन्यथा यह काम नहीं करेगा।
के लिए @ sachchit-bansal द्वारा उत्तर देखें धन्यवाद, यह क्यूरेटर 4.2 के लिए इस उत्तर का वर्तमान (2017) कार्य संस्करण है :) – chrisan
वैसे ही क्यूरेटर काम कर रहा है! [विनीथ मोहन] का जवाब (https://stackoverflow.com/users/976646/vineeth-mohan) क्यूरेटर 4.x से पुराना है - और इसे अभी अधिकांश लोचदार खोज प्रतिष्ठानों के लिए आवेदन करना चाहिए (जहां 5.x चालू है)। – jonashackt
curator_cli delete_indices --filter_list '{"filtertype":"none"}'
सभी या फिल्टर हट जाएँगे:
--filter_list '[{"filtertype":"age","source":"creation_date","direction":"older","unit":"days","unit_count":13},{"filtertype":"pattern","kind":"prefix","value":"logstash"}]'
- 1. ElasticSearch
- 2. Elasticsearch
- 3. Elasticsearch
- 4. ElasticSearch
- 5. elasticsearch
- 6. Elasticsearch
- 7. elasticsearch
- 8. elasticsearch
- 9. ElasticSearch
- 10. elasticsearch
- 11. elasticsearch
- 12. ElasticSearch
- 13. ElasticSearch
- 14. elasticsearch
- 15. elasticsearch
- 16. elasticsearch
- 17. Elasticsearch
- 18. ElasticSearch
- 19. ElasticSearch
- 20. ElasticSearch
- 21. ElasticSearch
- 22. Elasticsearch
- 23. ElasticSearch
- 24. Elasticsearch
- 25. ElasticSearch
- 26. ElasticSearch
- 27. Elasticsearch
- 28. ElasticSearch
- 29. Elasticsearch
- 30. Elasticsearch
यह मैं के लिए क्या देख रहा था। क्या आपके पास क्यूरेटर के अनुप्रयोगों पर दस्तावेज है? –
यह क्यूरेटर v4 या नए के साथ काम नहीं करता है। इसके लिए एक कॉन्फ़िगरेशन फ़ाइल और एक एक्शन फ़ाइल की आवश्यकता होती है, जहां क्यूरेटर की क्रिया का वर्णन किया गया है। –
एक काम कर रहे क्यूरेटर 4.2 उदाहरण – chrisan