Syslog-ng habilita el entramado TCP

Syslog-ng habilita el entramado TCP

Estoy intentando enviar entradas de archivos como mensajes a través de TCP, donde syslog-ng está en un contenedor y se envía a otro contenedor. Tuve dos intentos diferentes, ambos con comportamiento problemático. La primera configuración:

@version: 3.31
source s_file {
    file("/var/log/my_file.json" follow_freq(1) flags(no-parse));
};

template log_template {
    template("MSGSTART${MESSAGE}MSGEND");
};

class SngResolver(object):
    def init(self, options):
        """
        Initializes the parser
        """
        self.counter = 0
        return True
    def parse(self, log_message):
        log_message["SYSUPTIME"] = subprocess.check_output(['cat', '/proc/uptime']).decode('utf-8')
        log_message["SEQUENCEID"] = str(self.counter)
        self.counter += 1
        # return True, other way message is dropped
        return True
};

parser p_resolver {
    python(
        class("SngResolver")
    );
};


# Define the destination for Suricata logs
destination d_container {
    syslog("my_other_container" transport("tcp") port(1234) template(log_template));    
};


# Define the log path for Suricata logs
log {
    source(s_file);
    parser(p_resolver);

    destination(d_container);
};

En este método, a veces el mensaje recibido comenzaba con la cantidad de bytes del mensaje siguiente, por ejemplo 400. otras veces no lo hicieron y fueron directos al mensaje.

Más tarde, cambié el destino para usarlo networken lugar de syslog. Ahora, no hay encuadre.

No me importa si tengo que usar TCP, UDP, lo que sea. Tengo un golang recibido conectado a un socket TCP y quiero que lo lea, un mensaje a la vez, y lo analice. ¿Cómo se puede lograr esto? Gracias

Respuesta1

El destino syslog() utilizaría el formato de trama contado de octetos en transport(tcp) y transport(tls) como se describe en RFC5425. NO utilizará tramas en el transporte (udp), ya que en ese caso el datagrama separa los mensajes utilizando los límites del paquete. El transporte UDP se describe en RFC5426.

información relacionada