Управление журналами является важной частью любого процесса разработки или эксплуатации. В этой статье блога мы рассмотрим различные методы удаления эластичных журналов индекса за вчерашний день с помощью популярных инструментов из Elastic Stack. Мы предоставим вам разговорные объяснения и примеры кода, чтобы упростить понимание и реализацию процесса.
Метод 1: API удаления Elasticsearch по запросу
API удаления по запросу Elasticsearch позволяет удалять документы, соответствующие определенному запросу. Чтобы удалить журналы за вчерашний день, вы можете использовать запрос диапазона, чтобы указать диапазон времени и отфильтровать журналы, которые вы хотите удалить. Вот пример использования клиента Elasticsearch Python:
from datetime import datetime, timedelta
from elasticsearch import Elasticsearch
yesterday = datetime.now() - timedelta(days=1)
yesterday_str = yesterday.strftime('%Y-%m-%d')
es = Elasticsearch()
query = {
"query": {
"range": {
"timestamp": {
"gte": yesterday_str,
"lt": "now"
}
}
}
}
response = es.delete_by_query(index="your_index_name", body=query)
Метод 2: Куратор
Куратор — это мощный инструмент в Elastic Stack, который помогает управлять индексами Elasticsearch и поддерживать их. Он обеспечивает простой способ удаления индексов на основе различных условий, включая фильтрацию по времени. Чтобы удалить журналы вчерашнего дня с помощью Curator, вы можете создать файл конфигурации с соответствующими настройками и запустить его с помощью инструмента командной строки Curator. Вот пример файла конфигурации:
actions:
1:
action: delete_indices
description: "Delete indices from yesterday"
options:
ignore_empty_list: true
filters:
- filtertype: pattern
kind: prefix
value: your_index_name
- filtertype: age
source: creation_date
direction: older
timestring: '%Y-%m-%d'
unit: days
unit_count: 1
Затем вы можете запустить Curator с помощью следующей команды:
curator --config curator.yml
Метод 3: Logstash с плагином вывода Elasticsearch
Logstash — это мощный инструмент конвейерной обработки данных, который можно использовать для приема, преобразования и вывода данных. Используя плагин вывода Elasticsearch, вы можете отправлять журналы из определенного индекса в Elasticsearch и одновременно удалять их. Вот пример конфигурации Logstash:
input {
# Your input configuration
}
filter {
# Your filter configuration
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "your_index_name-%{+YYYY.MM.dd}"
document_id => "%{[@metadata][_id]}"
action => "delete"
doc_as_upsert => true
}
}
Эта конфигурация удалит журналы из вчерашнего индекса, одновременно добавляя новые журналы в сегодняшний индекс.
Метод 4: CLI Elasticsearch Curator
Elasticsearch Curator предоставляет интерфейс командной строки (CLI), который позволяет выполнять различные действия с индексами Elasticsearch. Чтобы удалить журналы за вчерашний день с помощью Curator CLI, вы можете запустить следующую команду:
curator_cli delete_indices --filter_list '{"filtertype":"age","source":"creation_date","direction":"older","unit":"days","unit_count":1}'
Метод 5: Консоль инструментов разработчика Kibana
Если у вас есть доступ к Kibana, вы можете использовать консоль инструментов разработчика для выполнения команд API Elasticsearch. Чтобы удалить журналы за вчерашний день, вы можете использовать API удаления по запросу прямо в консоли. Вот пример:
POST /your_index_name/_delete_by_query
{
"query": {
"range": {
"timestamp": {
"gte": "now-1d/d",
"lt": "now/d"
}
}
}
}
Метод 6: использование пользовательского сценария
Вы также можете написать собственный сценарий для удаления журналов за вчерашний день, используя клиентскую библиотеку Elasticsearch по вашему выбору. Сценарий будет включать запрос журналов за вчерашний день и их удаление. Конкретная реализация будет зависеть от языка и клиента Elasticsearch, который вы используете.
В этой статье мы рассмотрели шесть различных методов удаления эластичных журналов индекса за вчерашний день. Вы можете выбрать метод, который лучше всего соответствует вашим требованиям и условиям. Предпочитаете ли вы использовать Elasticsearch API, Curator, Logstash, Kibana Dev Tools или собственный скрипт, теперь в вашем распоряжении множество возможностей для эффективного управления и удаления журналов в вашем Elastic Stack.