2016-05-16 787 views
0

我有几台安装了logstash的web服务器,我有一台安装了logstash的日志服务器。如何设置logstash将日志转发到另一个logstash?

我想在Web服务器/var/log/nginx/*log中使用logstash登录服务器的日志转发。可能吗?

Web服务器:

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

日志服务器:

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

但没有日志转发。

回答

2

这样做的正确方法是在日志服务器上使用logstash-forwarder或优选使用最新的Filebeat(logstash-forwarder替换)工具,在Logstash上使用beats input plugin

所以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" 
    } 
}