Web logs: Collecting and analysing - Nikola Krgovic

Post on 07-Jan-2017

147 views 5 download

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?