[英]Logstash with Elasticsearch
我正在尝试将Logstash与Elasticsearch连接,但无法使其正常工作。
这是我的logstash conf:
input {
stdin {
type => "stdin-type"
}
file {
type => "syslog-ng"
# Wildcards work, here :)
path => [ "/var/log/*.log", "/var/log/messages", "/var/log/syslog" ]
}
}
output {
stdout { }
elasticsearch{
type => "all"
embedded => false
host => "192.168.0.23"
port => "9300"
cluster => "logstash-cluster"
node_name => "logstash"
}
}
我只是在elasticsearch.yml中更改了这些细节
cluster.name: logstash-cluster
node.name: "logstash"
node.master: false
network.bind_host: 192.168.0.23
network.publish_host: 192.168.0.23
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["localhost"]
使用这些配置,我无法使Logstash连接到ES。 有人可以建议我哪里出错吗?
首先,我建议您匹配“类型”属性。 在您的输入中,您有两种不同的类型,并且在您的输出中,您的类型在任何输入中都不存在。
要进行测试,请将输出更改为:
output {
stdout { }
elasticsearch{
type => "stdin-type"
embedded => false
host => "192.168.0.23"
port => "9300"
cluster => "logstash-cluster"
node_name => "logstash"
}
}
那么,您是否在ES实例上创建了索引?
从我使用过的指南和我自己的经验(其他人可能有另一种方法)我总是使用索引,这样当我将某些东西推入ES时,我可以使用ES API并快速检查数据是否有进去与否。
另一个建议是简单地运行带有调试标志的Logstash转发器和索引器,以查看幕后发生的事情。
你能在127.0.0.1上连接你的ES实例吗? 此外,尝试尝试端口和主机。 作为Logstash系统的一个新用户,我发现我在开始时的理解与设置的现实背道而驰。 有时主机IP不是您认为的,也不是端口。 如果您愿意检查网络并识别侦听端口和IP,那么您可以对其进行排序,否则请进行一些智能试验和错误。
我强烈推荐本指南作为一个全面的起点。 我提到的两点都在指南中直接触及。 虽然指南的起点稍微复杂一些,但这些想法和概念是彻底的。
我无法使Logstash连接到ES
当我的logstash和elasticsearch版本不同步时,这发生在我身上
来自文档:
版本说明:您的Elasticsearch集群必须运行Elasticsearch 1.1.1。 如果您使用任何其他版本的Elasticsearch,则应在此插件中设置
protocol => http
。
如上所述明确设置protocol => http
为我修复了它。
正如亚当所说,事情是协议设置,所以只有我做的测试:
logstash -e 'input { stdin { } } output { elasticsearch { host => localhost protocol => "http" port => "9200" } }'
这似乎与OSX有关。 问题在这里 。
以下测试
elasticsearch:5.4.0
和
logstash:5.4.0
(我在OpenStack上使用了docker容器)
对于Elasticsearch:
/usr/share/elasticsearch/config/elasticsearch.yml
应如下所示 -
cluster.name: "docker-cluster"
network.host: 0.0.0.0
discovery.zen.minimum_master_nodes: 1
不需要更改/usr/share/elasticsearch/config/
任何其他文件
使用简单命令运行Elasticsearch -
sudo docker run --name elasticsearch -p 9200:9200 docker.elastic.co/elasticsearch/elasticsearch:5.4.0
对于Logstash:
/usr/share/logstash/config/logstash.yml
应如下所示 -
http.host: "0.0.0.0"
path.config: /usr/share/logstash/pipeline
# http://111.*.*.11:9200 is the IP & Port of Elasticsearch's server
xpack.monitoring.elasticsearch.url: http://111.*.*.11:9200
# "elastic" is the user name of Elasticsearch's account
xpack.monitoring.elasticsearch.username: elastic
# "changeme" is the password of Elasticsearch's "elastic" user
xpack.monitoring.elasticsearch.password: changeme
不需要更改/usr/share/logstash/config/
任何其他文件
/usr/share/logstash/pipeline/logstash.conf
应如下所示 -
input {
file {
path => "/usr/share/logstash/test_i.log"
}
}
output {
elasticsearch {
# http://111.*.*.11:9200 is the IP & Port of Elasticsearch's server
hosts => ["http://111.*.*.11:9200"]
# "elastic" is the user name of Elasticsearch's account
user => "elastic"
# "changeme" is the password of Elasticsearch's "elastic" user
password => "changeme"
}
}
使用简单命令运行Logstash -
sudo docker run --name logstash --expose 25826 -p 25826:25826 docker.elastic.co/logstash/logstash:5.4.0 --debug
注意:在运行Docker容器之前无需进行任何配置。 首先使用如上所述的简单命令运行容器。 然后转到相应的目录,进行必要的更改,保存,退出容器并重新启动容器,将反映更改。
我有相同的错误消息,我花了一些时间在弹性搜索的发现过程的TRACE日志中发现ip地址logstash使用的是不正确的。
我有几个IP地址和logstash使用错误的地址。 在那之后,一切都很顺利。
首先,您不需要在ES中创建索引。
因为,客人不愿意需要elasticsearch打造“指数”;当logstash分配指标,该指标将被自动创建。
顺便说一下,如果你没有设置索引值,它将被设置为默认值“logstash - %{+ YYYY.MM.dd}”
(你可以在logstash官方指南中查看这个)〜
其次,您可能不会将“弹性类型”保持为与“输入类型”相同的类型;您也可以像这样编写输出:
output {
stdout { }
elasticsearch{
embedded => false
host => "192.168.0.23"
port => "9300"
index => "a_new_index"
cluster => "logstash-cluster"
node_name => "logstash"
document_type =>"my-own-type"
}
}
使用“ document_type ”,您可以将日志保存为您想要的任何类型〜
最后,如果您不想分配“document_type”;它将与您的“输入类型”设置相同
甚至你忘记在“所有配置文件”中分配类型;类型将被设置为默认值为logs ~
好的,享受吧〜
我有一个两节点的弹性聚类簇,只有一个用于logstatsh。
这个配置对我有用:
节点elk1:
#/etc/elasticsearch/elasticsearch.yml
script.disable_dynamic: true
cluster.name: elk-fibra
node.name: "elk1"
node.master: true
node.data: true
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["elk1.lab.fibra"]
根@ ELK1:
#/etc/logstash/conf.d/30-lumberjack-output.conf
output {
elasticsearch { host => localhost protocol => "http" port => "9200" }
stdout { codec => rubydebug }
}
节点elk2:
#/etc/elasticsearch/elasticsearch.yml
script.disable_dynamic: true
cluster.name: elk-fibra
node.name: "elk2"
node.master: false
node.data: true
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["elk1.lab.fibra"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.