Elk - Elasticsearch Logstash Kibana stack explained

Post on 14-Aug-2015

118 views 1 download

Transcript of Elk - Elasticsearch Logstash Kibana stack explained

ELKElasticsearch Logstash Kibana

federico.panini@fazland.com - CTO

Federico Panini

CTO @ fazland.comemail : federico.panini@fazland.com

linkedIn : https://uk.linkedin.com/in/federicopaninislides : http://www.slideshare.net/FedericoPanini

Il dominio del nostro problema #1essere in grado di avere informazioni utili dai files di log.

federico.panini@fazland.com - CTO

Il dominio del nostro problema #2essere in grado di avere informazioni utili dai files di log.

federico.panini@fazland.com - CTO

Il dominio del nostro problema #3essere in grado di avere informazioni utili dai files di log.

federico.panini@fazland.com - CTO

In questa semplice infrastruttura sono presenti un buon numero di servizi ed applicativi.

Ogni istanza avrà sicuramente un file syslog ed un auth.log che voglio tenere sotto controllo

HTTP : nginx : access.log error.log

web app: app.log

MongoDB : mongo.log

Memcached : memcached.log

Il dominio del nostro problema #4essere in grado di avere informazioni utili dai files di log.

federico.panini@fazland.com - CTO

Già con pochi servers il numero di logs da dover controllare e gestire è abbastanza elevato

12 file di logs !!!(2 web srv in load balanding)

q

mmmmmmm….

Il dominio del nostro problema #5essere in grado di avere informazioni utili dai files di log.

federico.panini@fazland.com - CTO

In una soluzione scalabile il numero di macchine in parallelo può aumentare… questo implica un aumento repentino del numero di files di log da dover gestire…..

Il dominio del nostro problema Ricapitoliamo

federico.panini@fazland.com - CTO

1. Gestione di un numero elevato di logs 2. Necessità di dover centralizzare la gestione dei log files 3. Rendere i logs più facilmente interpretabili e

comprensibili 1. per i devs 2. e perchè no anche al business

I file di logs sono una miniera inesauribile di informazioni!Ricapitoliamo

federico.panini@fazland.com - CTO

1. Sono dati reali 2. Sono le informazioni sul comportamento della vs

applicazione 3. Sono le informazioni sul comportamento dei vs utenti

DOVETE POTERLI LEGGERE!

Logs ? Cosa sono ? #1

federico.panini@fazland.com - CTO

I file di logs sono tipi di dato strutturati, solitamente in files di testo. Sono utilizzati per poter registrare le azioni di un applicazione, un servizio, un elemento di rete.

Il vero problema dei logs è la loro natura del tutto eterogenea tra loro. A seconda del servizio il file di conterrà dati spesso molto differenti tra loro….

Logs ? Cosa sono ? #2

federico.panini@fazland.com - CTO

[15/Jun/2015:15:00:29 +0000] "GET / HTTP/1.1" 301 178 "-" "Mozilla/5.0 (Windows NT 6.1; WOW..

TIME TEXT

federico.panini@fazland.com - CTO

A cosa servono ?

federico.panini@fazland.com - CTO

Log è un termine comunemente usato nell'informatica, specie in ambito sistemistico, per indicare:

1) la registrazione sequenziale e cronologica delle operazioni effettuate, da un utente, un amministratore o automatizzate, man mano che vengono eseguite dal sistema o applicazione;

2) il file o insieme di file su cui tali registrazioni sono memorizzate ed eventualmente accedute in fase di analisi dei dati, detto anche registro eventi.

logs : quali vantaggi ?

federico.panini@fazland.com - CTO

1.Registrare eventi2.Registrare eventi informativi / errori

1.eventi informativi : flusso normale applicativo

2.eventi negativi : errori

Tipi di logs : Logs di sistema

federico.panini@fazland.com - CTO

generati dal sistema operativo… auth.log, syslog etc…

Tipi di logs : logs applicativi

federico.panini@fazland.com - CTO

generati dallo stack del proprio applicativo o dall’applicativo stesso : nginx, apache, mysql, tomcat, framework come symfony, ruby on rails, php …. etc.

cosa fare ???

federico.panini@fazland.com - CTO

TAIL ?!?!?

federico.panini@fazland.com - CTO

Siete sicuri !?!?

Sicuri Sicuri ???????

federico.panini@fazland.com - CTO

Sicuri Sicuri ???????

Questo approccio non è SCALABILE !!

federico.panini@fazland.com - CTO

e poi provate a sentire cosa ne pensano quelli del marketing….

NAGIOS

federico.panini@fazland.com - CTO

Nagios è un ottima soluzione open source, che permette di controllare la propria infrastruttura IT e di definire delle soglie di alert per poter intervenire in tempo nel caso si verifichino errori.

NAGIOS

federico.panini@fazland.com - CTO

cosa può fare :

• Monitor servizi di rete (SMTP, POP3, HTTP, NNTP, ICMP, SNMP, FTP, SSH)• Monitor risorse host (carico CPU, utilizzo disco, system logs)• Monitor temperatura della cpu , allarmi di sistema.• Monitoring via remotely run scripts via Nagios Remote Plugin Executor• Remote monitoring sfruttando SSH o SSL tunneling• Facilità di implementare plugin custom in moltissimi linguaggi di programmazione• Plugins per la generazione di grafici• Servizi di alert via SMS, Email

MONIT

federico.panini@fazland.com - CTO

Monit è un tool open source per gestire e monitorare sistemi Unix.

Una delle feature interessanti di Monit è che può essere configurato per “reagire” al verificare di certi eventi e cercare di correggere un comportamento erroneo di un servizio Unix.

Esempio : Se sendmail non risponde Monit può eseguirne il restart.

Se Apache è sta usando troppe risorse potrebbe essere in corso un attacco DDOS: Monit può riavviare i l se rv i z i o e “bannare ” l ’ IP dell’ipotetico attacker.

GRAYLOG 2

federico.panini@fazland.com - CTO

Graylog2 è una soluzione di altissimo livello e forse l’unica tra quelle citate a competere direttamente con Kibana. Allo stesso modo di Kibana+Logstash , Graylog2 è in grado di utilizzare Elasticsearch per indicizzare i dati e questo è certamente un plus rispetto ad altri concorrenti.

Rispetto a Kibana è più veloce nella gestione dei log e su grossi moli di dati questo, vi renderete conto, è un bel vantaggio. Logstash risulta di gran lunga più potente nel parsing dei file e permette maggiori margini di “manovra”. Allo stesso tempo Logstash risulta essere più lento.

GRAYLOG 2 #2

federico.panini@fazland.com - CTO

Vantaggi Graylog vs Kibana:- autenticazione multiutente- alert pro-attivi per determinati tipi di evento.

Molto altro

federico.panini@fazland.com - CTO

- Collectd- statsd- ganglia- Fluentd- e molte altre soluzioni…

ELKRobusto / Open source / accessibile

federico.panini@fazland.com - CTO

Elasticsearchfull text search engine

federico.panini@fazland.com - CTO

1. full text search engine 2. Basato Apache Lucene 3. Veloce 4. Java 5. Open Source

Logstashaggrega, normalizza log files

federico.panini@fazland.com - CTO

1. Aggregatore di logs. 2. Normalizza tipi di dato e logs. 3. Facilmente personalizzabile. 4. Possibilità di creare plugins per i

propri dati.

Kibanavisualizza i tuoi dati

federico.panini@fazland.com - CTO

1. Effettua ricerche sui file di log velocemente.

2. Organizza i risultati delle ricerche in oggetti

3. Inserisci i tuoi oggetti in dashboards.

Kibana #1visualizza i tuoi dati

federico.panini@fazland.com - CTO

Kibana #2visualizza i tuoi dati

federico.panini@fazland.com - CTO

Logstash

federico.panini@fazland.com - CTO

1. Leggi i files di logs 2. Normalizza i dati 3. Esporta i dati normalizzati in una sorgente dati

Logstash

federico.panini@fazland.com - CTO

Il segreto dello stack ELK risiede in buona parte in Logstash: questo tool è fondamentale per poter manipolare, normalizzare ed importare in Elasticsearch i file di log.

Logstash

federico.panini@fazland.com - CTO

Logstash è spesso paragonato ad una Pipeline unix

Input —> Filter —> Output

LogstashInput : generano gli eventi

federico.panini@fazland.com - CTO

couchdb_changes drupal_dblog elasticsearch exec eventlog file ganglia gelf generator graphite github heartbeat heroku irc imap jmx

kafka log4j lumberjack meetup pipe puppet_facter relp rss rackspace rabbitmq redis snmptrap stdin sqlite s3 sqs

stomp syslog tcp twitter unix udp varnishlog wmi websocket xmpp zenoss zeromq

44 INPUTS

LogstashFilters : manipolano eventi generati in input

federico.panini@fazland.com - CTO

alter anonymize collate csv cidr clone cipher checksum date dns drop elasticsearch extractnumbers environment elapsed fingerprint geoip grok

i18n json json_encode kv mutate metrics multiline metaevent prune punct ruby range syslog_pri sleep split throttle translate uuid

urldecode useragent xml zeromq

40 FILTERS

LogstashOutput : manipolano eventi generati in input

federico.panini@fazland.com - CTO

54 OUTPUT

boundary circonus csv cloudwatch datadog datadog_metrics email elasticsearch exec file google_bigquery google_cloud_storage ganglia gelf graphtastic graphite hipchat http irc

websocket xmpp zabbix zeromq influxdb juggernaut jira kafka lumberjack librato loggly mongodb metriccatcher nagios null nagios_nsca opentsdb pagerduty pipe

riemann redmine rackspace rabbitmq redis riak s3 sqs stomp statsd solr_http

sns syslog stdout tcp udp

Logstashconfigurazione

federico.panini@fazland.com - CTO

input {

—> definisce l’input per i files di logs}

filter {

—> definisce come normalizzare i logs}

output {

—> esporta i logs normalizzati in una sorgente}

LogstashINPUT

federico.panini@fazland.com - CTO

input {

—> definisce l’input per i files di logs}

LogstashFILTERS

federico.panini@fazland.com - CTO

filter {

—> definisce l’input per i files di logs}

LogstashOUTPUT

federico.panini@fazland.com - CTO

output {

—> definisce l’input per i files di logs}

Logstashretention dei dati

federico.panini@fazland.com - CTO

I filtri di output possono essere molteplici :

export su elasticsearchexport su AWS S3

E’ possibile utilizzare elasticsearch con i dati degli ultimi n mesi ed allo

stesso tempo averli tutti quanti salvati in un altro repository come per

esempio S3.

Logstash

federico.panini@fazland.com - CTO

ELK

federico.panini@fazland.com - CTO

DEMO TIME !

Logstash - Plus

federico.panini@fazland.com - CTO

https://moz.com/blog/technical-seo-log-analysis

References• Monit : https://mmonit.com/monit/• Nagios : https://www.nagios.org/• statsd : https://codeascraft.com/2011/02/15/measure-anything-

measure-everything/• collectd : https://collectd.org/• ganglia : http://ganglia.sourceforge.net/• fluentd: http://www.fluentd.org/• graylog2 : https://www.graylog.org/ • ELK :

• elasticsearch: https://www.elastic.co/• kibana: https://www.elastic.co/products/kibana • logstash: https://www.elastic.co/products/logstash

• https://www.youtube.com/watch?v=RuUFnog29M4

federico.panini@fazland.com - CTO