一、TCP模式应用场景

tcp模块的使用场景如下: 有一台服务器A只需要收集一个日志,那么我们就可以不需要在这服务器上安装logstash,我们通过在其他logstash上启用tcp模块,监听某个端口,然后我们在这个服务器A把日志通过nc发送到logstash上即可。最直接的例子就是启用类似syslog服务器的功能,收集其他硬件设备,如:服务器、交换机等发来的日志。

二、logstash配置测试

tcp.conf配置文件

input {
    tcp{
        port => "514"      #监听514端口
        mode => "server"   #模式为server
        type => "tcplog"   #类型为tcplog
    }
}

output {
    stdout {
        codec => rubydebug  #rubydebug为直接标准输出测
    }
}

使用以上配置时,需要先停掉本机的rsyslog服务,如果不想停掉,也可以修改上面配置文件的端口。

测试配置文件是否有语法错误:

./logstash -f tcp.conf -t   # -t参数用于测试文件是否正确,不加-t就是直接启用服务了。

使用测试

# 服务器A上启动logstash
./logstash -f /etc/logstash/conf.d/tcp.conf

# 服务器B上启用nc发送
yum install -y nc
echo "From www.361way.com" | nc 192.168.56.12 514
nc 192.168.56.12 514 < /etc/passwd
-----------------------------------------------------
# 或通过配置远端syslog服务器地址,/etc/rsyslog.conf 中增加以下行
*.* @@192.168.1.100:514  #192.168.1.100为服务器A的地址

logstash

三、输出到Elasticsearch

tcp.conf配置文件内容如下,同时输出到Elasticsearch和tmp下的相应文件

input {
        tcp{
                port => "5600"
                mode => "server"
                type => "tcplog"
        }
}

output {
        elasticsearch {
                hosts => ["192.168.56.11:9200"]
                index => "tcptest-%{+YYYY.MM.dd}"   # %{+YYYY.MM.dd}为变量的表示方法,表示以年月日格式生成index文件
        }
        file {
                path => "/tmp/tcptest-%{+YYYY.MM.dd}"
        }
}

donation