使用 logstash 使用文件输入插件从远程机器读取日志文件

Read log file from a remote machine with file input plugin using logstash

目前我的日志和 logstash 运行 在同一台机器上,所以我使用此配置(使用拉模型)读取了放置在本地机器上的日志

input {     
    file {
        path => "/home/Desktop/Logstash-Input/**/*_log"
        start_position => "beginning"
    }
}

现在,我们在另一台机器上有 logstash 运行 并且想要读取远程机器的日志。

有没有办法在配置文件的文件输入中设置ip?

编辑: 我设法用 logstash-forwarder 做到这一点,它是一个推送模型(log shipper/logstash-forwarder 将日志发送到 logstash 索引服务器)但我仍然在寻找没有托运人的拉模型,logstash 索引服务器将去那里直接联系到远程主机。

Logstash 不包含任何从其他计算机的文件系统读取文件的魔法(这可能是一件好事)。您要么必须挂载包含您感兴趣的日志的远程文件系统,要么必须在远程计算机上安装日志传送器(例如 Logstash)并将其配置为将数据发送到您当前的 Logstash 实例(或 Redis、RabbitMQ 或 Kafka 等中间代理)。

您还可以使用 syslog 守护程序(可能已经安装在机器上)通过 syslog 协议传送日志,但请记住,不能保证每条消息的最大允许长度。

您可以在路径中添加远程系统IP,并从远程机器访问日志。

input {     
file {
    path => "\IP address/home/Desktop/Logstash-Input/**/*_log"
    start_position => "beginning"
}}

查看 FileBeat:https://www.elastic.co/products/beats/filebeat

它不是拉模型,但它似乎是比 logstash-forwarder 更好的选择。

它监控日志文件并将它们转发到 Logstash 或 Elasticsearch。它还保持日志文件的状态,并保证事件将至少传递一次(取决于日志循环速度)。配置真的很容易:

输入配置:

input_type: log
paths:
- /opt/app/logs

输出配置

output.logstash:
  hosts: ["remote_host:5044"]
  index: filebeat_logs

在 logstash 端,您必须安装和配置 Beats 输入插件:

input {
  beats {
    port => 5044
  }
}