仅使用Logstash从不同的远程服务器收集日志

vbkedwbf  于 2022-09-20  发布在  Logstash
关注(0)|答案(1)|浏览(351)

是否可以仅使用logstash(无文件节拍)将日志从不同的远程机器发送到ElasticSearch?如果是这样的话,我是否要在所有机器上的所有conf.d文件中定义相同的索引?我希望所有的日志都在同一个索引中。

我是否要使用logs-%{+YYYY.MM.dd}作为所有配置文件的索引,以便将它们索引到同一文件夹中?

input {
  file {
    part => /home/ubuntu/logs/data.log
  }
}
output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index =>"logs-%{+YYYY.MM.dd}"
  }
}
vfh0ocws

vfh0ocws1#

你所做的是可以的,它会奏效的。我要纠正的一件事是,您应该简单地写入数据流,而不必关心索引名和ILM问题(展期、保留等),如下所示:

input {
  file {
    part => /home/ubuntu/logs/data.log
  }
}
output {
  elasticsearch {
    hosts => ["localhost:9200"]
    data_stream => "true"
    data_stream_type => "logs"
    data_stream_dataset => "ubuntu"
    data_stream_namespace => "prod"
  }
}

数据流名称将为logs-ubuntu-prod,您可以根据自己的喜好更改后两者。

不过,请确保首先正确设置data stream,但要有足够的Index Lifecycle Management policy

另一方面,在所有远程机器上安装Logstash是一种资源浪费,而Logstash本应作为集中式流媒体引擎工作。你肯定应该使用FileBeat,或者现在更好的是Elastic Agent,它可以通过Kibana的Fleet完全管理。你应该去看看。

相关问题