как убрать поле в логста sh вывод - PullRequest
1 голос
/ 18 марта 2020

Я установил стек ELK. Для экземпляра logsta sh он имеет два вывода, включая Kafka и эластичный поиск.

Для вывода эластичного поиска я хочу оставить поле @timestamp. Для вывода Кафки я хочу удалить поле @timestamp. Поэтому я не могу просто удалить поле @timestamp в фильтре. Я просто хочу удалить его для вывода Kafka.

Я не нашел такого решения.

append

Попробуйте использовать плагин клона:

clone {
  clones => ["kafka"]
  id => ["kafka"]
  remove_field => ["@timestamp"]
}

output {

if [type] != "kafka" {
  elastcsearch output
}

if [type] == "kafka" {
  kafka output
}
}

Странно, что выход эластичного поиска может работать. Но он не может выводить на кафку. И я пытался судить по id, до сих пор не wordk.

1 Ответ

1 голос
/ 22 марта 2020

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

Для клонирования вашего события и удаления поля @timestamp вам понадобится что-то подобное в вашем блоке filter.

filter {
    # your other filters
    #
    clone {
        clones => ["kafka"]
    }
    if [type] == "kafka" {
        mutate {
            remove_field => ["@timestamp"]
        }
    }
}

Это клонирует событие, и клонированное событие будет значение kafka в поле type, затем вы будете использовать это поле в условных выражениях в выходных данных.

output {
    if [type] != "kafka" {
        your elasticsearch output
    }
    if [type] == "kafka" {
        your kafka output
    }
}
...