network() Destination Driver

The network() destination driver can send syslog messages conforming to RFC3164 from the network using the TCP, TLS, and UDP networking protocols.

Status

UDP

x86_64

Works

UDP

ARM

Works

TCP

x86_64

Works

TCP

ARM

Works

Note The network destination driver also includes TCP transmission on a TLS-encrypted channel, however, this is tested and verified in a separate post dealing with TLS-encryption with syslog-ng here.

How to Test

Configuration Files Used

To test the network destination driver, we will run two instances of syslog-ng. One where we are transmitting data using the network destination driver that needs to be tested. And another that will listen for the data on the network pipeline established. The network source driver used in the latter has been tested, click here to read that.

Destination Config File

#Detination 
@version: 3.31
@include "scl.conf"

options {
    stats-freq(10);
    time-reopen(10);
};

source custom
{
    example-msg-generator(
        num(1)
        template("Syslog-ng instance transmitting data is live.")
    );
    example-msg-generator(
        num(20)
        freq(5)
        template("Message to TCP Destination using Network Driver")
    );
    example-msg-generator(
        num(20)
        freq(5)
        template("Message to UDP Destination using Network Driver")
    );
};

destination d_tcp {
    network(
        "127.0.0.1"
        port(1999)
        transport(tcp)
    );
};

destination d_udp {
    network(
        "127.0.0.1"
        port(5060)
        transport(udp)
    );
};

destination console{
    file(/dev/stdout);
};

log {
    source(custom);
    if (message("TCP")) {  
        destination(d_tcp);
    } elif (message("UDP")) {
        destination(d_udp);
    } else {
        destination(console);
    };
};

Source Config File

#Source
@version: 3.31
@include "scl.conf"

options {
    stats-freq(10);
    time-reopen(10);
};

source s_tcp {
    network(port(1999) transport("tcp"));
};

source s_udp {
    network(port(5060) transport("udp"));
};

destination console{
    file(/dev/stdout);
};

log {
    source(s_tcp);
    source(s_udp);
    destination(console);
};

(Note: For more information on how to do conditional destination routing and using template function, click here.)

Proof

Last updated