使用ElasticSearch的日志隐藏

mmvthczy  于 2022-11-02  发布在  ElasticSearch
关注(0)|答案(8)|浏览(244)

我试图连接Logstash与Elasticsearch,但无法让它工作。
下面是我的logstash配置:

  1. input {
  2. stdin {
  3. type => "stdin-type"
  4. }
  5. file {
  6. type => "syslog-ng"
  7. # Wildcards work, here :)
  8. path => [ "/var/log/*.log", "/var/log/messages", "/var/log/syslog" ]
  9. }
  10. }
  11. output {
  12. stdout { }
  13. elasticsearch{
  14. type => "all"
  15. embedded => false
  16. host => "192.168.0.23"
  17. port => "9300"
  18. cluster => "logstash-cluster"
  19. node_name => "logstash"
  20. }
  21. }

我只是在我的elasticsearch.yml中更改了这些细节。

  1. cluster.name: logstash-cluster
  2. node.name: "logstash"
  3. node.master: false
  4. network.bind_host: 192.168.0.23
  5. network.publish_host: 192.168.0.23
  6. discovery.zen.ping.multicast.enabled: false
  7. discovery.zen.ping.unicast.hosts: ["localhost"]

有了这些配置,我无法让Logstash连接到ES。有人能告诉我哪里出了问题吗?

3mpgtkmj

3mpgtkmj1#

首先,我建议匹配你的“类型”属性。在你的输入中,你有两个不同的类型,在你的输出中,你有一个类型,它在你的任何输入中都不存在。
对于测试,请将输出更改为:

  1. output {
  2. stdout { }
  3. elasticsearch{
  4. type => "stdin-type"
  5. embedded => false
  6. host => "192.168.0.23"
  7. port => "9300"
  8. cluster => "logstash-cluster"
  9. node_name => "logstash"
  10. }
  11. }

那么,您是否在ES示例上创建了索引?
根据我使用的指南和我自己的经验(其他人可能有其他工作方式),我一直使用索引,这样当我将某些内容推入ES时,我可以使用ES API快速检查数据是否已进入。
另一个建议是简单地运行带有调试标志的Logstash转发器和索引器,以查看后台发生了什么。
您可以连接到www.example.com上的ES示例吗127.0.0.1??另外,尝试尝试使用端口和主机。作为Logstash系统的一个新用户,我发现我在开始时的理解与设置的实际情况不符。有时主机IP和端口并不是您所认为的那样。如果您愿意检查网络并确定侦听端口和IP,那么你可以把它整理出来,否则就做一些明智的尝试和错误。
我强烈推荐这个guide作为一个全面的起点。我提到的两点都在指南中直接触及。虽然指南的起点稍微复杂一些,但思想和概念都很透彻。

展开查看全部
gojuced7

gojuced72#

我无法使Logstash连接到ES
当我的logstash和elasticsearch版本不同步时,我就遇到了这种情况
来自文档:
版本注解:您的Elasticsearch集群必须运行Elasticsearch 1.1.1。如果您使用任何其他版本的Elasticsearch,您应该在此插件中设置protocol => http
如上所述显式设置protocol => http为我修复了它。

rseugnpd

rseugnpd3#

正如Adam所说,问题在于协议设置,所以我只做了测试:

  1. logstash -e 'input { stdin { } } output { elasticsearch { host => localhost protocol => "http" port => "9200" } }'

这似乎是工作的OSX。问题here

bkhjykvo

bkhjykvo4#

以下测试在
ElasticSearch:5.4.0

日志存储:5.4.0
(我在OpenStack上使用了Docker容器)
对于ElasticSearch:
/usr/share/elasticsearch/config/elasticsearch.yml应如下所示-

  1. cluster.name: "docker-cluster"
  2. network.host: 0.0.0.0
  3. discovery.zen.minimum_master_nodes: 1

不需要对/usr/share/elasticsearch/config/的任何其他文件进行更改
使用简单命令运行Elasticsearch-

  1. sudo docker run --name elasticsearch -p 9200:9200 docker.elastic.co/elasticsearch/elasticsearch:5.4.0

对于日志存储:
/usr/share/logstash/config/logstash.yml应如下所示-

  1. http.host: "0.0.0.0"
  2. path.config: /usr/share/logstash/pipeline
  3. # http://111.*.*.11:9200 is the IP & Port of Elasticsearch's server
  4. xpack.monitoring.elasticsearch.url: http://111.*.*.11:9200
  5. # "elastic" is the user name of Elasticsearch's account
  6. xpack.monitoring.elasticsearch.username: elastic
  7. # "changeme" is the password of Elasticsearch's "elastic" user
  8. xpack.monitoring.elasticsearch.password: changeme

不需要对/usr/share/logstash/config/的任何其他文件进行更改
/usr/share/logstash/pipeline/logstash.conf应如下所示-

  1. input {
  2. file {
  3. path => "/usr/share/logstash/test_i.log"
  4. }
  5. }
  6. output {
  7. elasticsearch {
  8. # http://111.*.*.11:9200 is the IP & Port of Elasticsearch's server
  9. hosts => ["http://111.*.*.11:9200"]
  10. # "elastic" is the user name of Elasticsearch's account
  11. user => "elastic"
  12. # "changeme" is the password of Elasticsearch's "elastic" user
  13. password => "changeme"
  14. }
  15. }

使用简单命令运行Logstash-

  1. sudo docker run --name logstash --expose 25826 -p 25826:25826 docker.elastic.co/logstash/logstash:5.4.0 --debug

注意:在运行Docker容器之前不需要做任何配置。首先使用上面提到的简单命令运行容器。然后转到相应的目录,进行所需的更改,保存,退出容器并重新启动容器,更改将得到反映。

展开查看全部
b4wnujal

b4wnujal5#

我也收到了同样的错误消息,我花了一段时间才在elasticsearch发现过程的TRACE日志中发现logstash使用的IP地址不正确。
我有几个ip地址,logstash用错了。之后,一切都很顺利。

qcbq4gxm

qcbq4gxm6#

首先,您不需要在ES中创建索引。
因为,你不需要在ElasticSearch中创建“索引”;当logstash分配索引时,将自动创建索引。
顺便说一下,如果您没有设置索引值,它将被设置为默认值“logstash-%{+YYYY.MM.dd}”

(you可以在logstash offcial guide中检查此内容)~
第二,你可以保持你的“弹性类型”与你的“输入类型”相同的类型;您还可以像这样编写输出:

  1. output {
  2. stdout { }
  3. elasticsearch{
  4. embedded => false
  5. host => "192.168.0.23"
  6. port => "9300"
  7. index => "a_new_index"
  8. cluster => "logstash-cluster"
  9. node_name => "logstash"
  10. document_type =>"my-own-type"
  11. }
  12. }

使用“document_type",您可以将日志保存为任何您想要的类型~
最后,如果您不想指定“document_type”;它将被设置为与您的“输入类型”相同
或者甚至你忘记在“所有的配置文件”中分配类型;类型将被设置为默认值logs~
好,好好享受~

展开查看全部
tzxcd3kk

tzxcd3kk7#

我有一个两个节点的elastisearch集群,只有一个用于logstatsh。
此配置适合我:
节点elk 1:

  1. # /etc/elasticsearch/elasticsearch.yml
  2. script.disable_dynamic: true
  3. cluster.name: elk-fibra
  4. node.name: "elk1"
  5. node.master: true
  6. node.data: true
  7. discovery.zen.ping.multicast.enabled: false
  8. discovery.zen.ping.unicast.hosts: ["elk1.lab.fibra"]

根目录@elk1:

  1. # /etc/logstash/conf.d/30-lumberjack-output.conf
  2. output {
  3. elasticsearch { host => localhost protocol => "http" port => "9200" }
  4. stdout { codec => rubydebug }
  5. }

节点elk 2:

  1. # /etc/elasticsearch/elasticsearch.yml
  2. script.disable_dynamic: true
  3. cluster.name: elk-fibra
  4. node.name: "elk2"
  5. node.master: false
  6. node.data: true
  7. discovery.zen.ping.multicast.enabled: false
  8. discovery.zen.ping.unicast.hosts: ["elk1.lab.fibra"]
展开查看全部
bzzcjhmw

bzzcjhmw8#

输入=〉日志存储
输出=〉ElasticSearch

  1. input{
  2. http {
  3. port => 5044
  4. response_headers => {
  5. "Access-Control-Allow-Origin" => "*"
  6. "Content-Type" => "text/plain"
  7. "Access-Control-Allow-Headers" => "Origin, X-Requested-With, Content-Type, Accept"
  8. }
  9. }
  10. }
  11. output{
  12. elasticsearch {
  13. hosts => ["http://elasticsearch:9200"]
  14. index => "logstash-%{+YYYY.MM.dd}"
  15. user => elastic
  16. password =>****
  17. }
展开查看全部

相关问题