LINUX.ORG.RU

ELK: разделить filebeat-8.2.0 на отдельные индексы

 , ,


1

1

Всем привет!

Есть filebeat, который пишет в data stream «filebeat-8.2.0». В него попадает много сообщений. Индекс на основе этого стрима живет недолго - 1 неделю.

Хотелось бы разделить индекс: важное хранить в отдельном индексе с циклом 1 месяц, для чего фильтровать входной поток.

Я сделал реиндекс, в нем есть фильтр, все работает. Но он не совсем подходит: в новый индекс не попадают документы, которые были записаны после это операции.

А хотелось бы постоянно «подгружать» новые документы. Как это сделать?

Пример реиндекса:

POST _reindex
{
  "source": {
    "index": "filebeat-8.2.0",
        "query": {
            "bool": {
            "must": [],
            "filter": [
                {
                "bool": {
                    "should": [
                    {
                        "match_phrase": {
                        "message_json.context.event": "city-miss"
                        }
                    }
                    ],
                    "minimum_should_match": 1
                }
                }
            ]
        }
    }
  },
  "dest": {
        "index": "miss-cities-two"
  }
}

Насколько я знаю, elk beats могут загружать логи только в один index pattern (его можно менять, но один инстанс бита всё равно будет работать только с одним index pattern)

Зато logstash, при всей его прожорливости, умеет

Отправляй логи битов в logstash, а уже из него пиши в несколько destination по любым правилам

router ★★★★★
()
Последнее исправление: router (всего исправлений: 1)
Ответ на: комментарий от router

Ну, не совсем верно.

Рекомендация логстеша - самое правильное в данном случае, но если автору хочется - файлбит умеет, например, вот так:

output.elasticsearch:
  hosts: ["http://localhost:9200"]
  indices:
    - index: "warning-%{[agent.version]}-%{+yyyy.MM.dd}"
      when.contains:
        message: "WARN"
    - index: "error-%{[agent.version]}-%{+yyyy.MM.dd}"
      when.contains:
        message: "ERR"

Возможно, через data streams можно как-то иначе, но я пока их не раскуривал.

l0stparadise ★★★★★
()
Ответ на: комментарий от l0stparadise

Спасибо, не знал о такой возможности. В filebeat.reference.yml ничего такого не указано, нашел только в мане на сайте.

Я видел, что в Кибане очень много вещей для работы с индексами, подумал, что и для моего случая есть.

А где более грамотно сделать такое деление - в Logstash или filebeat? И у нас девопсы меняют Logstash на Vector - там такое тоже можно сделать?

nodejs
() автор топика
Ответ на: комментарий от nodejs

А где более грамотно сделать такое деление - в Logstash или filebeat?

У меня есть и тот, и другой варианты, но я бы сказал, правильнее логстешем.

И у нас девопсы меняют Logstash на Vector - там такое тоже можно сделать?

Наверное. Я не работал с Vector. Знаю, что он вроде как гораздо быстрее, но на текущий момент у меня нет упора в скорость, поэтому отказываться от централизованного управления логстешами в угоду ненужной скорости я пока не хочу.

Я видел, что в Кибане очень много вещей для работы с индексами, подумал, что и для моего случая есть.

Кибана - это, все же, обычный фронтенд. Туда постепенно накидывают всякиз полезных штук для управления кластером (вроде того уже управления логстешами), но по большом счету - все равно половину или проще через апи, или только через апи.

l0stparadise ★★★★★
()
Последнее исправление: l0stparadise (всего исправлений: 1)