Logstash не открывает порт ввода для filebeat

У меня проблемы с настройкой стека ELK,

Filebeat настроен,

filebeat.prospectors:
- input_type: log
    paths:
       - /var/log/syslog
       #- c:\programdata\elasticsearch\logs\*
       document_type: syslog

output.logstash:
  # The Logstash hosts
   hosts: ["localhost:5044"]
   bulk_max_size: 1024

Это входные файлы для logstash,

Для ввода

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

Для вывода,

 output {
  elasticsearch {
    hosts => ["localhost:9200"]
    manage_template => false
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
  }
 }

Я вижу в журналах filebeat, что это выдает мне эту ошибку,

 2017-04-19T15:30:55+05:30 ERR Connecting error publishing events (retrying): dial tcp 127.0.0.1:5044: getsockopt: connection refused

Ясно, что порт не открывается с помощью logstash. Также я могу видеть через netstat, что порт не открыт для прослушивания.

Почему порт не открывается с помощью logstash, я что-то упустил? Кроме того, когда порт откроется, продолжит ли он автоматически отправлять данные в logstash, а затем logstash в elasticsearch?


person Luv33preet    schedule 19.04.2017    source источник
comment
Я бы запустил Logstash с включенным ведением журнала отладки, чтобы увидеть, почему он не привязан к порту 5044, и предоставить журналы в вопросе. По умолчанию он должен быть привязан ко всем интерфейсам (0.0.0.0). Пока netstat не покажет, что Logstash слушает, я бы исключил Filebeat.   -  person A J    schedule 19.04.2017


Ответы (2)


Меня несколько смущает, почему у вас есть filebeat для опроса журналов, когда у вас есть полный экземпляр logstash также в том же поле. Logstash может делать то, что умеет Filebeat, и избегать всей этой проблемы.

input {
  file {
    path => [ "/var/log/syslog" ]
    type => "syslog"
  }
}

Однако вы хотели знать, почему Logstash не открывает порт. Я предлагаю изменить ввод битов таким образом, чтобы проверить это:

input {
   beats {
     type => beats
     host => "localhost"
     port => 5044
   }
}

Что скажет входу beats привязаться конкретно к 'localhost', где Filebeat ожидает найти порт прослушивания.

person sysadmin1138    schedule 19.04.2017

если вы используете logstash с докером, попробуйте сделать ваш порт доступным для других приложений, которых нет в вашем контейнере. Вы можете использовать флаг -p 5044 при установке докера. Например:

docker run -d --name logstash 
-p 5044:5044
--restart=always 
-e "XPACK.MONITORING.ELASTICSEARCH.URL=http://ELASTIC_IP:9200" 
docker.elastic.co/logstash/logstash:7.0.0
person Henrique Bortoletti    schedule 08.05.2019