Integrazione di Logstash con Magento

integrazione logstash magento

Da alcuni mesi in ideato abbiamo iniziato a lavorare ad un nuovo progetto molto interessante sia dal punto di vista applicativo che da quello sistemistico.
Il progetto ha mostrato fin da subito interessanti prospettive: con un numero di utenti in costante crescita, una delle prime esigenze è stata di gestire le performance e la scalabilità del progetto.

Dopo aver lavorato sull’implementazione di un nuovo frontend e una macchina che gestisse le sessioni, è nata la problematica riguardante l’ ubicazione dei log applicativi.

Come mantenere e gestire i log applicativi su più frontend?

Possibili soluzioni:

  • Splunk, estremamente potente e costoso,
  • servizi Logging as a Service( Loggly, PaperTrail),
  • servizi Open source ( Graylog2, Fluentd, Logstash).

Perché abbiamo scelto di implementare Logstash con Magento?

ideato ha da sempre un forte interesse verso l’open source, nonostante utilizzi anche suite enterprise.
Ragionando sulle diverse alternative, ci siamo resi conto che Splunk è un servizio enterprise estremamente potente che – in questo caso – superava le nostre necessità mentre il vantaggio di Loggly e Papertrail è che sono servizi LAAS e non richiedono da parte dell’utente alcun tipo di infrastruttura.
Nel panormama dell’open source vi sono numerosi servizi quali: Logstash, GrayLog2, Fluentd.
La scelta è ricaduta su Logstash non solo per la sua fama nei sistemi di provisioning quali Ansible, Puppet, Salt, ma anche per il pieno supporto a Elasticsearch usato come backend. Inoltre Logstash fornisce un’ interfaccia web chiamata Kibana per un’ agevole consultazione e query dei log.

Infrastruttura implementata

elkjpg

Il tipo di infrastruttura, in gergo ELK stack (Elasticsearch Logstash Kibana), è ben nota e per questo mi piacerebbe soffermarmi sull’integrazione di Magento: in fondo troverai tutti i link per costruire tutta l’infrastruttura.
Tramite Logstash è possibile fornire in input i file di log all’interno della web folder di Magento. Attraverso un componente chiamato Grok già integrato in Logstash si possono prendere i dati sfusi e trasformarli in una struttura ben definita.
In particolare, qui di seguito vedrai un log di Magento che rappresenta la data in formato ISO8601 in aggiunta a una stringa di lunghezza non definita mappabile attraverso Grok come :

  • %{TIMESTAMP_ISO8601:timestamp}
  • %{DATA:magento_log}

filter-grok

Il codice è disponibile all’indirizzo:
https://github.com/ideatosrl/logstash-magento-filter

Ed ecco il risultato su Kibana!

Schermata 2014-12-02 alle 12.10.43

http://www.elasticsearch.org/
http://www.elasticsearch.org/guide/
http://www.elasticsearch.org/overview/elkdownloads/
http://logstash.net/
http://www.elasticsearch.org/overview/logstash/
http://www.elasticsearch.org/overview/kibana/