Web logs: Collecting and analysing - Nikola Krgovic
-
Upload
institute-of-contemporary-sciences -
Category
Data & Analytics
-
view
147 -
download
5
Transcript of Web logs: Collecting and analysing - Nikola Krgovic
Nikola Krgović
Analiza Web Logova
Analiza Web LogovaNikola Krgovic
Sajt: kupindo.com
Posete: ~30-40M PageViews/Month* limundo.com: ~60-70M PageViews/Month*
*Izvor: audience.rs (Gemius)
Kupindo
Kupindo
Limundo
Limundo (Pretraga)
Arhitektura
Tradicionalne metode:
• Webalyzer • Piwik • …
Piwik
Prednosti tradicionalnih metoda:
• Laka instalacija • Laka integracija • Standardizovani izveštaji • Brza kriva učenja
Mane tradicionalnih metoda:
• Storage u relacionoj bazi • Relativno slozena integracija kompleksnih
pracenja • Ne čuvaju se kompletni logovi već samo izveštaji
ELK Stack:
LogStash Daemon ElasticSearch Storage
Kibana Front-End
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
ElasticSearch
• Lucene-based • Full-text search sistem • Schema-free JSON document engine • HTTP Interfejs • RESTfull API
Kibana
• Platforma za vizuelizaciju • Real-time grafici • ElasticSearch Back-end integracija • Generisanje izvestaja
Kibana ScreenShot
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.
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
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"';
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
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.
Alternative: StreamSets + Cloudera
Cloudera CDH:
Naš izbor za sveobuhvatnu Hadoop distribuciju
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
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.
Stream Sets Instalacija
StreamSets integrisan u Cloudera Manager
Stream Sets Komponente
Ulazni ekran
Vizuelni editor za izbor i prikupljanje podataka
Input moduli
Procesori
Izlazni Moduli
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.
Pocetak Rada
Izbor: Hive ili HBase
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
Inicijalni import logova, u Tab-separated fajl
MetaStore Properties:
Definisanje kolona u skladu sa formatem Log-ova
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.
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
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.
Dodatne izmene
• Zakljucavanje korisnika na jedan applikativni server (sticky cookie)
• Prikupljanje dodatnih error logova • Logovanje vremena izvršavanja
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
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
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
Buduće primene:
• UX analiza • Recommendation Engine • Fraud prevention
Buduće primene:
• UX analiza • Recommendation Engine • Fraud Prevention • Biometrics
Pitanja?