Web logs: Collecting and analysing - Nikola Krgovic

52
Nikola Krgović Analiza Web Logova

Transcript of Web logs: Collecting and analysing - Nikola Krgovic

Page 1: Web logs: Collecting and analysing - Nikola Krgovic

Nikola Krgović

Analiza Web Logova

Page 2: Web logs: Collecting and analysing - Nikola Krgovic

Analiza Web LogovaNikola Krgovic

Page 3: Web logs: Collecting and analysing - Nikola Krgovic

Sajt: kupindo.com

Posete: ~30-40M PageViews/Month* limundo.com: ~60-70M PageViews/Month*

*Izvor: audience.rs (Gemius)

Page 4: Web logs: Collecting and analysing - Nikola Krgovic

Kupindo

Kupindo

Page 5: Web logs: Collecting and analysing - Nikola Krgovic

Limundo

Limundo (Pretraga)

Page 6: Web logs: Collecting and analysing - Nikola Krgovic

Arhitektura

Page 7: Web logs: Collecting and analysing - Nikola Krgovic

Tradicionalne metode:

• Webalyzer • Piwik • …

Page 8: Web logs: Collecting and analysing - Nikola Krgovic

Piwik

Page 9: Web logs: Collecting and analysing - Nikola Krgovic

Prednosti tradicionalnih metoda:

• Laka instalacija • Laka integracija • Standardizovani izveštaji • Brza kriva učenja

Page 10: Web logs: Collecting and analysing - Nikola Krgovic

Mane tradicionalnih metoda:

• Storage u relacionoj bazi • Relativno slozena integracija kompleksnih

pracenja • Ne čuvaju se kompletni logovi već samo izveštaji

Page 11: Web logs: Collecting and analysing - Nikola Krgovic

ELK Stack:

LogStash Daemon ElasticSearch Storage

Kibana Front-End

Page 12: Web logs: Collecting and analysing - Nikola Krgovic

LogStash

• Daemon sa client-server arhitekturom • Prikuplja logove raznih formata • Mogućnost da radi normalizaciju logova • Mogućnost dodavanja pluginova • Ima agent koji se vrti na svakom serveru

Page 13: Web logs: Collecting and analysing - Nikola Krgovic

ElasticSearch

• Lucene-based • Full-text search sistem • Schema-free JSON document engine • HTTP Interfejs • RESTfull API

Page 14: Web logs: Collecting and analysing - Nikola Krgovic

Kibana

• Platforma za vizuelizaciju • Real-time grafici • ElasticSearch Back-end integracija • Generisanje izvestaja

Page 15: Web logs: Collecting and analysing - Nikola Krgovic

Kibana ScreenShot

Page 16: Web logs: Collecting and analysing - Nikola Krgovic

Sakupljanje logova:

Moguće je skupljati logove na Load Balanceru, ili na Web (aplikativnom) serveru, koji izvršava samu php

aplikaciju. Svaka strana pristupa ima prednosti i mane.

Page 17: Web logs: Collecting and analysing - Nikola Krgovic

Load Balanser:

• Svi zahtevi su po redu

• Nema pristup API pozivima untar samog servera

Web Server:

• Razlike reda veličine 1ms mogu dovesti do razlike u redosledu

• Ima sve interne API pozive

Page 18: Web logs: Collecting and analysing - Nikola Krgovic

Load Balancer:

NginX Log Format:

log_format kupindo '$remote_addr [$time_local] "$request" $status $body_bytes_sent $request_time

$upstream_response_time $cookie_PHPSESSID "$http_referer" "$http_user_agent"';

Page 19: Web logs: Collecting and analysing - Nikola Krgovic

Prednosti:

• Velika baza korisnika • Poznat Google-Like RegExp način upita • Par minuta do dashboard-a tipa “koliko je

cipela prodato na sajtu?” • Čuvaju se log entries

Page 20: Web logs: Collecting and analysing - Nikola Krgovic

Mane:

• Zahteva otvaranje posebnih portova, ako želite remote skupljanje logova

• Agent na svakom web serveru, koji zauzima neke resurse

• Za skaliranje preko odredjene granice zahteva da ElasticSearch radi na Hadoop back-endu.

• Analitike zahtevaju pisanje de-facto sofvera, što nije prirodan način rada analitičarima naviklim na SQL okruženje.

Page 21: Web logs: Collecting and analysing - Nikola Krgovic

Alternative: StreamSets + Cloudera

Page 22: Web logs: Collecting and analysing - Nikola Krgovic

Cloudera CDH:

Naš izbor za sveobuhvatnu Hadoop distribuciju

Page 23: Web logs: Collecting and analysing - Nikola Krgovic
Page 24: Web logs: Collecting and analysing - Nikola Krgovic

Prednosti CDH Distribucije:

• Integracija svih komponenti • Jednostavan installer • Podrzan Yarn • Hue kao interfejs za korisnike • Hive i HBase • Impala, kao Cloudera rešenje • Spark i Sqoop instaliran u paketu

Page 25: Web logs: Collecting and analysing - Nikola Krgovic
Page 26: Web logs: Collecting and analysing - Nikola Krgovic

Stream Sets

Nezavisna aplikacija, koja, osim kao stand-alone software, može da radi i kao integrisani deo

CDH-a. Ima više različitih načina na koje može da skuplja logove, kao i načina na koje može da

ih dalje procesira i distribuira.

Page 27: Web logs: Collecting and analysing - Nikola Krgovic

Stream Sets Instalacija

Page 28: Web logs: Collecting and analysing - Nikola Krgovic

StreamSets integrisan u Cloudera Manager

Page 29: Web logs: Collecting and analysing - Nikola Krgovic

Stream Sets Komponente

Page 30: Web logs: Collecting and analysing - Nikola Krgovic

Ulazni ekran

Page 31: Web logs: Collecting and analysing - Nikola Krgovic

Vizuelni editor za izbor i prikupljanje podataka

Page 32: Web logs: Collecting and analysing - Nikola Krgovic

Input moduli

Page 33: Web logs: Collecting and analysing - Nikola Krgovic

Procesori

Page 34: Web logs: Collecting and analysing - Nikola Krgovic

Izlazni Moduli

Page 35: Web logs: Collecting and analysing - Nikola Krgovic

Mogućnost različitih filtera, različitih tipova za ulaz i različitih tipova izlaza.

Dodatno, postoji mogućnost da izlaz ide u dva različita pipeline-a, tako da logovi posle procesiranja idu na dva sistema obrade.

Page 36: Web logs: Collecting and analysing - Nikola Krgovic

Pocetak Rada

Page 37: Web logs: Collecting and analysing - Nikola Krgovic

Izbor: Hive ili HBase

Page 38: Web logs: Collecting and analysing - Nikola Krgovic

Hive vs HBase

• Rad sa prostim tab-separated fajlovima

• Niže performanse

• Dobro podnosi promenu ulaznih podataka

• Columnar-based storage engine

• Visoke performanse

• Zahteva složenije rekonfiguracije u slučaju promene formata

Page 39: Web logs: Collecting and analysing - Nikola Krgovic

Inicijalni import logova, u Tab-separated fajl

Page 40: Web logs: Collecting and analysing - Nikola Krgovic

MetaStore Properties:

Definisanje kolona u skladu sa formatem Log-ova

Page 41: Web logs: Collecting and analysing - Nikola Krgovic

Rezultat:

Mogućnost da se kroz SQL-like upit zada generisanje izveštaja koji, za neki SessionID, daje kompletan ClickStream log kretanja korisnika po sajtu.

Page 42: Web logs: Collecting and analysing - Nikola Krgovic

Dodatne mogućnost:

• Uvoz logova iz svih log fajlova na NFS serveru • Više paralelnih pipeline-ova za obradu

različitih logova, uz podelu po imenu log fajla

Page 43: Web logs: Collecting and analysing - Nikola Krgovic

Konačna primena:

• Uvoz logova sa Load Balancer-a u ElasticSearch, za Kibana dashboard.

• Mogućnost paralelnog uvoza u dve ElasticSearch baze, kao vid particionisanja po datumu.

• Uvoz istih tih logova, paralelno i u Hive-kompatibilne Tab-separated fajlove

• Paralelno, iz istog direktorijuma na NFS serveru, uvoz i logova sa svih Web servera, za potrebe debug-a. Opciono, uz Sticky cookie generisan na Load Balanceru.

Page 44: Web logs: Collecting and analysing - Nikola Krgovic

Dodatne izmene

• Zakljucavanje korisnika na jedan applikativni server (sticky cookie)

• Prikupljanje dodatnih error logova • Logovanje vremena izvršavanja

Page 45: Web logs: Collecting and analysing - Nikola Krgovic

Konfiguracija

NginX Sticky plugin: upstream kupindo_sticky {

sticky name=KID domain=.kupindo.com path=/ ;

NginX Log format: log_format kupindo '$remote_addr [$time_local]

"$request" $status $body_ bytes_sent $request_time $upstream_response_time

$cookie_KID $cookie_PHPSESSID " $http_referer" “$http_user_agent"';

Apache Log format: LogFormat "%{X-Forwarded-For}i %h %t %T \”%r\"

\"%f%q\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\" " detailed

Page 46: Web logs: Collecting and analysing - Nikola Krgovic

Upotreba:

• Klasična analiza logova • Debug logovi za aplikaciju • Paralele izmedju error i access logova kroz istoriju • Clickstream analiza • Analiza rada mreže i debug na osnovu

upoređivanja vremena odziva na LB-u i vremena izvršavanja na apache-u

Page 47: Web logs: Collecting and analysing - Nikola Krgovic

Problemi konačne implementacije:

Veličina logova: 5GB Dnevno Kupindo

12GB Dnevno ceo LimundoGrad

4T Godišnje Kupindo 9TB Godišnje ceo LimundoGrad

Cena Implementacije: 3 Servera:

• Rack-Mount • 256GB RAM • 4x6TB Hard Disk

~30,000 EUR za ceo cluster

Page 48: Web logs: Collecting and analysing - Nikola Krgovic

Buduće primene:

• UX analiza • Recommendation Engine • Fraud prevention

Page 49: Web logs: Collecting and analysing - Nikola Krgovic
Page 50: Web logs: Collecting and analysing - Nikola Krgovic
Page 51: Web logs: Collecting and analysing - Nikola Krgovic

Buduće primene:

• UX analiza • Recommendation Engine • Fraud Prevention • Biometrics

Page 52: Web logs: Collecting and analysing - Nikola Krgovic

Pitanja?