{"id":1394,"date":"2020-05-15T13:21:38","date_gmt":"2020-05-15T11:21:38","guid":{"rendered":"https:\/\/blog.besharp.it\/?p=1394"},"modified":"2021-05-21T10:47:03","modified_gmt":"2021-05-21T08:47:03","slug":"best-practice-per-il-logging-su-python-e-come-integrarsi-con-la-dashboard-di-kibana-tramite-aws-kinesis-data-firehose-ed-amazon-elasticsearch-service","status":"publish","type":"post","link":"https:\/\/blog.besharp.it\/it\/best-practice-per-il-logging-su-python-e-come-integrarsi-con-la-dashboard-di-kibana-tramite-aws-kinesis-data-firehose-ed-amazon-elasticsearch-service\/","title":{"rendered":"Parte I: Best practice per il logging su Python e come integrarsi con la dashboard di Kibana tramite AWS Kinesis Data Firehose ed Amazon Elasticsearch Service"},"content":{"rendered":"

Le applicazioni, nel momento in cui passano in produzione, perdono la capacit\u00e0 di fornire direttamente informazioni su cosa sta succedendo dietro le quinte del codice, diventano delle scatole nere e quindi si ha la necessit\u00e0 di tracciare e monitorare efficacemente il loro comportamento. Il logging<\/strong> \u00e8 sicuramente la procedura pi\u00f9 semplice e diretta per approcciare il problema. Siamo infatti in grado di istruire il programma, in fase di sviluppo, ad emettere informazioni durante il suo funzionamento, e queste saranno utili per svolgere attivit\u00e0 di troubleshooting o semplicemente per effettuare analisi.\u00a0<\/span><\/p>\n

Quando si parla di Python<\/strong>, il modulo gi\u00e0 incluso per il logging \u00e8 progettato per funzionare direttamente con una fase di setup veramente minimale. Indipendentemente dal livello di esperienza come sviluppatore e del modulo di logging di Python, lo scopo di questo articolo \u00e8 di essere il pi\u00f9 esauriente possibile e di indagare a fondo le metodologie che permettono di sfruttare il logging al massimo.<\/span><\/p>\n

Una nota a margine: questo articolo si compone di due parti. La seconda parte verter\u00e0 su come approcciarsi ai servizi di AWS, utilizzando una combinazione di AWS Kinesis Data Firehose<\/strong> e AWS ElasticSearch<\/strong> per realizzare un sistema efficace di ricerca ed analisi dei log attraverso la dashboard di Kibana<\/strong> e di permetterne la copia su S3 per mantenere uno storico dei log a portata di mano.<\/span><\/p>\n

Le basi del modulo di logging di Python<\/span><\/h2>\n

Prima di iniziare il nostro viaggio, facciamoci una semplice domanda: che cos\u2019\u00e8 un Logger?<\/strong> In pratica si tratta di un oggetto con cui uno sviluppatore interagisce per permettere la stampa di informazioni. Sono strumenti che utilizziamo per indicare al sistema che governa il programma come e cosa si voglia loggare.<\/span><\/p>\n

Se prendiamo una istanza generica di un logger, possiamo inviare messaggi quando vogliamo senza preoccuparci della sua implementazione sottostante. Ad esempio, se si scrive <\/span>logger.info(“Logging a variable %s”, variable1) <\/span>si va ad indicare la seguente situazione:<\/span><\/p>\n

\"\"<\/p>\n

La <\/span>Libreria standard di Python<\/span><\/a> fornisce un modulo di logging che permette di iniziare ad utilizzarlo senza nessun tipo di installazione aggiuntiva. Per aderire alle best practice<\/strong> che richiedono di evitare la semplice scrittura in console di quello che vogliamo riportare, il modulo di Python per il logging offre diversi vantaggi:<\/span><\/p>\n