Logstash трубопровод "в" пункт - PullRequest
       21

Logstash трубопровод "в" пункт

0 голосов
/ 27 февраля 2019

Краткая справка:

  • Мы используем filebeats для добавления полей к сообщениям - маркера конвейера и маркера обслуживания.
  • В идеале они попадут в индекс под названием foo-${[fields][service]}-${+YYYY.MM.dd}

Однако мы обеспокоены тем, что «некоторые» серверы могут быть неправильно настроены и не иметь этих маркеров (у нас есть автоматизация для защитынас, но мы все о подходе пояса и скобок).

Документация Logstash в лучшем случае расплывчата, а иногда и неправильна, например, использование кавычек или не вокруг определенных элементов.Но это то, что у нас есть:

- pipeline.id beats-server
  config.string |
      input { beats { port => 5504 }}
      output {
        if [fields][pipeline_marker] == "application" {     # works
            pipeline { send_to => "application" }
        } else if [fields][pipeline_marker] == "REDACTED" { # works
            pipeline { send_to => "REDACTED" }
        } else if [service] in [fields] {                   # THIS DOESNT 
            pipeline { send_to => "default-service" }
        } else {                                            # Works
            pipeline { send_to => "default"
        }
      }

, а затем конфиги конвейера, и все это хорошо.

Так что конкретно утверждение if [service] in [fields].Я попробовал несколько вариантов if "service" in [fields] - в документации Logstash говорится, что «in» - вещь, и я нашел один расплывчатый пример.В основном все падает до моего стандартного индекса catch-everything.

1 Ответ

0 голосов
/ 27 февраля 2019

Используя if [service] in [fields], вы проверяете, находится ли значение поля service в значении поля fields, но fields не имеет значения на верхнем уровне, оно имеет вложенные поля, напримерте, которые вы тестировали ранее, например [fields][pipeline_marker].

Если вы хотите проверить, существует ли [fields][service], вам следует использовать:

if [fields][service] { }

Или если вы хотите проверить егоВы должны использовать if [something] in [fields][service]

...