Выход Logstash с другого входа - PullRequest
0 голосов
/ 18 апреля 2019

У меня проблема с тем, что мой beatmetric перехватывается моим http-конвейером.

Оба Logstash, Elastic и Metricbeat работают в Kubernetes.

Мой beatmetric настроен для отправки в Logstash через порт5044 и войдите в файл в / tmp.Это отлично работает.Но всякий раз, когда я создаю конвейер с входом http, кажется, что также ловит битметрические входы и отправляет их в index2 в Elastic, как определено в http конвейере.

Почему он так себя ведет?

/ usr / share / logstash / pipeline / http.conf

input {
  http {
    port => "8080"
  }
}

output {

  #stdout { codec => rubydebug }

  elasticsearch {

    hosts => ["http://my-host.com:9200"]
    index => "test2"
  }
}

/usr / share / logstash / pipeline / beats.conf

input {
    beats {
        port => "5044"
    }
}

output {
    file {
        path => '/tmp/beats.log'
        codec => "json"
    }
}

/ usr / share / logstash / config / logstash.yml

pipeline.id: main
pipeline.workers: 1
pipeline.batch.size: 125
pipeline.batch.delay: 50
http.host: "0.0.0.0"
http.port: 9600
config.reload.automatic: true
config.reload.interval: 3s

/ usr / share / logstash / config / pipeline.yml

- pipeline.id: main
  path.config: "/usr/share/logstash/pipeline"

1 Ответ

2 голосов
/ 18 апреля 2019

Даже если у вас есть несколько файлов конфигурации, они читаются как один конвейер с помощью logstash, объединяя входы, фильтры и выходные данные, если вам нужно работать как отдельные конвейеры, у вас есть два варианта.

Измените pipelines.yml и создайте дифференциалы pipeline.id, каждый из которых указывает на один из файлов конфигурации.

- pipeline.id: beats
  path.config: "/usr/share/logstash/pipeline/beats.conf"
- pipeline.id: http
  path.config: "/usr/share/logstash/pipeline/http.conf"

Или вы можете использовать tags в ваших input, filter и output, например:

input {
  http {
    port => "8080"
    tags => ["http"]
  }
  beats {
    port => "5044"
    tags => ["beats"]
  }
}
output {
 if "http" in [tags] {
      elasticsearch {
        hosts => ["http://my-host.com:9200"]
        index => "test2"
      }
  }
 if "beats" in [tags] {
      file {
        path => '/tmp/beats.log'
        codec => "json"
      }
  }
}

Использование файла pipelines.yml является рекомендуемым способом запуска нескольких конвейеров

...