Invio della stringa dell'oggetto Json come messaggio syslog in Python
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
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')