如何设置logstash以将日志转发到另一个logstash?

时间:2016-05-16 04:24:41

标签: logstash

我有几个安装了logstash的Web服务器,我有一个日志服务器,它也安装了logstash。

我希望使用logstash将Web服务器/var/log/nginx/*log中的正向日志记录到日志服务器。有可能吗?

网络服务器:

input {
  file {
    path => "/var/log/nginx/*log"
  }
}
output {
  tcp {
    host => "log.server.ip"
    port => 12345
  }
}

日志服务器:

input {
  tcp {
    port => 12345
  }
}
output {
  stdout {
    codec => "rubydebug"
  }
}

但没有转发日志。

1 个答案:

答案 0 :(得分:4)

执行此操作的正确方法是在Web服务器上使用logstash-forwarder或最好使用最新的Filebeat(logstash-forwarder替换)工具,并在日志服务器上使用beats input plugin使用Logstash

因此,Web服务器上的Filebeat配置应如下所示:

filebeat:
  # List of prospectors to fetch data.
  prospectors:
    # Each - is a prospector. Below are the prospector specific configurations
    -
      paths:
        - "/var/log/nginx/*.log"
      document_type: weblog 
      fields:
        service: nginx

output:
  logstash:
    # The Logstash hosts. 
    hosts:
      - log.server.ip:12345

日志服务器上的Logstash配置如下所示

input {
  beats {
    port => 12345
  }
}
output {
  stdout {
    codec => "rubydebug"
  }
}

如果您不想在Web服务器上安装Filebeat,因为您想利用现有的Logstash,那么也可以。 Web服务器上的Logstash配置需要使用lumberjack output,如下所示:

input {
  file {
    path => "/var/log/nginx/*log"
  }
}
output {
  lumberjack {
    hosts => "log.server.ip"
    port => 12345
    ssl_certificate => "/path/to/certificate.pub"
  }
}

在您的日志服务器上,您需要使用lumberjack input

input {
  lumberjack {
    port => 12345
    ssl_certificate => "/path/to/certificate.cer"
    ssl_key => "/path/to/certificate.key"
  }
}
output {
  stdout {
    codec => "rubydebug"
  }
}