Invio della stringa dell'oggetto Json come messaggio syslog in Python

Oct 28 2020

Sto usando questo strumento per ottenere le metriche sull'appliance.

Lo script utilizza i socket per inviare il messaggio syslog e sto tentando di convincerlo a inviare il messaggio utilizzando le funzioni syslog native.

Ho aggiunto il codice seguente ma non riesco a farlo funzionare.

def sendSyslog2(jsonObj):
if (logHostAvailable["syslog"]==True):
    logging.info("SYSLOG REQUEST: "+json.dumps(jsonObj))
    try:
        syslog.openlog(facility=syslog.LOG_LOCAL5)
        syslog.syslog(syslog.LOG_INFO, json.dumps(jsonObj))
    except:
        logging.error("syslog failed")

Anche l'utilizzo di script di test non riesce. Non sono esperto in Python o nella programmazione, ma posso cavarmela con qualche riferimento, qualsiasi suggerimento nella giusta direzione è apprezzato.

Risposte

sarvesh.lad Dec 15 2020 at 21:57

A partire dal: https://stackoverflow.com/a/38929289/1033927

È possibile utilizzare un server syslog remoto: rsyslog o il pacchetto python loggerglue implementa il protocollo syslog come descritto in rfc5424 e rfc5425. . Quando si utilizza una porta superiore a 1024, è possibile eseguirla come utente non root.

All'interno del modulo di registrazione di python hai un SyslogHandler che supporta anche la registrazione remota di syslog.

import logging
import logging.handlers

my_logger = logging.getLogger('MyLogger')
my_logger.setLevel(logging.DEBUG)

handler = logging.handlers.SysLogHandler(address = ('127.0.0.1',514))

my_logger.addHandler(handler)

my_logger.debug('this is debug')
my_logger.critical('this is critical')