最终还是直接用mytcp和myudp(这两个一起,一个tcp,一个udp)

用logstash的syslog的不是很好(host他识别有问题)

1.先看nginx的配置

stream {
    upstream mytcp {
         hash $remote_addr consistent;
         server 192.168.1.51:4560;
    }

    server {
        listen 1514;
        proxy_pass mytcp;
        proxy_protocol on;
     }


    upstream myudp {
         hash $remote_addr consistent;
         server 192.168.1.51:4560;
    }
    
    server {
        listen 1514 udp;
        proxy_pass myudp;
        proxy_protocol on;
     }


    upstream mysyslog {
         hash $remote_addr consistent;
         server 192.168.1.51:2514;
    }
    
    server {
        listen 3514;
        proxy_pass mysyslog;
        proxy_protocol on;
     }
    server {
        listen 3514 udp;
        proxy_pass mysyslog;
        proxy_protocol on;
     }
}

 

2.logstash.conf 配置

input {
    tcp {
        port => "4560"
        mode => "server"
        type => "log4j2"
        proxy_protocol => true
    }

    udp {
        port => "4560"
        type => "log4j2UDP"
    }

     syslog {
        port => "2514"
        type => "syslog"
        proxy_protocol => true
    }

}

output {
    stdout {
        codec => rubydebug
    }
}

3.rsyslog客户端配置

cat /etc/rsyslog.d/linux-log.conf 
$template BiglogFormatLinux,"%fromhost-ip% %msg%\n"
*.*  @192.168.1.51:3514;BiglogFormatLinux

这个客户端这里设置这个,到syslog模式方式接收能在message里面看到真实ip。
但是host的话是代理机器的ip

@192.168.1.51:3514  接收的ip和@@可以根据上面logstash测试

发表评论

邮箱地址不会被公开。 必填项已用*标注