我在设置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,然后再登录到elasticsearch吗?
答案 0 :(得分:1)
当你在同一个盒子上有一个完整的logstash实例时,我有点混淆了为什么你有文件轮询日志。 Logstash可以做Filebeat可以做的事情并避免这个问题。
input {
file {
path => [ "/var/log/syslog" ]
type => "syslog"
}
}
但是,你想知道为什么Logstash没有打开端口。我建议你改变你的节拍输入来测试它:
input {
beats {
type => beats
host => "localhost"
port => 5044
}
}
这将告诉beats输入绑定到' localhost'具体来说,这是Filebeat期望找到监听端口的地方。
答案 1 :(得分:0)
如果将Logstash与docker一起使用,请尝试使端口可用于不在容器中的其他应用程序。 在安装docker时,可以使用-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