Tôi có nhiều nhật ký của mình được lập chỉ mục theo định dạng logstash-Year-Week. Đó là nếu tôi muốn xóa các chỉ mục cũ hơn một vài tuần, làm thế nào tôi có thể đạt được điều đó trong elasticsearch. Có cách nào dễ dàng, liền mạch để làm điều đó không?Xóa các chỉ mục cũ trong elasticsearch
Trả lời
Phụ trách sẽ là một kết hợp lý tưởng ở đây. Bạn có thể tìm thấy liên kết ở đây - https://github.com/elastic/curator
Một lệnh như dưới đây sẽ chỉ làm việc tốt -
curator --host <IP> delete indices --older-than 30 --prefix "twitter-" --time-unit days --timestring '%Y-%m-%d'
Bạn có thể giữ này trong CRON để loại bỏ các chỉ số thỉnh thoảng.
Bạn có thể tìm thấy một số ví dụ và tài liệu ở đây - https://www.elastic.co/guide/en/elasticsearch/client/curator/current/examples.html
Hãy xem Curator, một công cụ được phát triển đặc biệt cho loại trường hợp sử dụng này.
Một lệnh mẫu, cho các tài liệu:
curator --host 10.0.0.2 delete indices --older-than 30 --time-unit days \
--timestring '%Y.%m.%d'
tôi sử dụng một kịch bản bash, chỉ cần thay đổi 30 với # ngày bạn muốn giữ
#!/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 (chưa bash khác)
#!/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
Nếu bạn đang sử dụng phiên bản elasticsearch 5.x thì bạn cần cài đặt phiên bản curator 4.x. Bạn có thể xem các bước cài đặt tương thích và cài đặt phiên bản từ documentation
Sau khi cài đặt. Sau đó, chỉ cần chạy lệnh
curator --config path/config_file.yml [--dry-run] path/action_file.yml
Trình quản lý cung cấp cờ chạy khô để chỉ xuất ra những gì Trình quản lý sẽ thực hiện. Đầu ra sẽ nằm trong tệp nhật ký mà bạn đã xác định trong tệp config.yml. Nếu không đăng nhập khóa được định nghĩa trong config_file.yml thì currator sẽ xuất ra console. Để xóa các chỉ số chạy lệnh trên mà không --dry chạy cờ
Các config_file.yml tập tin cấu hình là
---
client:
hosts:
- 127.0.0.1
port: 9200
logging:
loglevel: INFO
logfile: "/root/curator/logs/actions.log"
logformat: default
blacklist: ['elasticsearch', 'urllib3']
Các action_file.yml tập tin action là
---
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:
Nếu bạn muốn để xóa các chỉ mục hàng tuần, hàng tháng, v.v. Sau đó, chỉ cần viết tập lệnh bash như
#!/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
Đặt tập lệnh shell vào một trong các thư mục sau: /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthly or /etc/cron.weekly
và công việc của bạn đã xong.
LƯU Ý: Đảm bảo sử dụng đúng thụt đầu dòng trong các tệp cấu hình và tác vụ của bạn. Nếu không nó sẽ không hoạt động.
Cảm ơn, đây là phiên bản hiện tại (2017) của câu trả lời này cho người quản lý 4.2 :) – chrisan
Đó là cách người phụ trách làm việc! Câu trả lời của [Vineeth Mohan] (https://stackoverflow.com/users/976646/vineeth-mohan) đã lỗi thời từ người quản lý 4.x trên - và điều đó sẽ áp dụng cho hầu hết các cài đặt elasticsearch ngay bây giờ (trong đó 5.x là hiện tại). – jonashackt
curator_cli delete_indices --filter_list '{"filtertype":"none"}'
sẽ xóa toàn bộ hoặc một bộ lọc:
--filter_list '[{"filtertype":"age","source":"creation_date","direction":"older","unit":"days","unit_count":13},{"filtertype":"pattern","kind":"prefix","value":"logstash"}]'
- 1. Elasticsearch: Xóa các bản sao khỏi chỉ mục
- 2. Làm cách nào để xóa chỉ mục ElasticSearch?
- 3. Python - xóa các tệp cũ
- 4. ElasticSearch - thông lượng chỉ mục cao
- 5. Xóa chỉ mục theo tên và loại chỉ mục bằng cách sử dụng elasticSearch 2.3.3 trong java
- 6. Xóa các thư mục cũ hơn X ngày
- 7. Xóa/Xóa tài liệu được lập chỉ mục trong ElasticSearch with Tyre (với xóa mềm qua ActsAsParanoid)
- 8. MongoDB + Elasticsearch hoặc chỉ Elasticsearch?
- 9. Xóa các mục cũ hơn một ngày - SQL Server
- 10. ElasticSearch: Chỉ lập chỉ mục các trường được chỉ định trong ánh xạ
- 11. Xóa các sự cố cũ trong Xcode
- 12. elasticsearch chèn các đối tượng vào chỉ mục
- 13. Cách lập chỉ mục tệp .PDF trong ElasticSearch
- 14. Làm sạch các chỉ mục cũ từ Sonatype Nexus
- 15. Tìm kiếm nhiều chỉ mục trong ElasticSearch (Tire)
- 16. Xóa các tệp cũ hơn 3 năm
- 17. Cách thực hiện truy vấn chỉ mục trong ElasticSearch?
- 18. Xóa tài liệu thuộc loại trong Elasticsearch
- 19. Xóa các chỉ mục chung của mảng
- 20. Trình phân tích chỉ mục mặc định trong elasticsearch
- 21. xóa các tệp sao lưu cũ
- 22. Bạn có thể xóa an toàn các mục cũ trong sales_flat_quote không?
- 23. Batch Script để xóa thư mục cũ nhất trong một thư mục nhất định
- 24. Xóa tất cả các chỉ mục trong Lucene.net
- 25. Xóa các nút được lập chỉ mục trong Neo4j
- 26. Xóa một trường khỏi tài liệu Elasticsearch
- 27. Không thể đóng chỉ mục ElasticSearch trên AWS?
- 28. Cách chỉ định một máy phân tích trong khi tạo chỉ mục trong ElasticSearch
- 29. Cách lập chỉ mục mã nguồn bằng ElasticSearch
- 30. Không thể xóa chỉ mục
Đây là những gì tôi đang tìm kiếm. Bạn có tài liệu về các ứng dụng của người phụ trách? –
Điều này KHÔNG làm việc với người phụ trách v4 hoặc mới hơn. Nó đòi hỏi một tập tin cấu hình và một tập tin hành động, nơi hành động của người phụ trách được mô tả. –
Xem câu trả lời bằng @ sachchit-bansal cho người phụ trách làm việc 4.2 ví dụ – chrisan