Yahi é um analisador de log versátil proporcionando extratores padrão para apache / lighttpd.
uso de linha de comando
Exemplo de dados analisados com Yahi: http://wwwstat.julbox.fr/
Uso mais simples é:
speed_shoot -g / usr / local de dados GeoIP var www apache log / / / / / / acesso *
ele irá retornar um JSON no formulário:
{
& Nbsp; "by_date": {
& Nbsp; "2012/05/03": 11
& Nbsp;},
& Nbsp; "total_line": 11,
& Nbsp; "ip_by_url": {
& Nbsp; "/ favicon.ico": {
& Nbsp; "192.168.0.254": 2,
& nbsp; "192.168.0.35": 2
& Nbsp;},
& Nbsp; "/": {
& Nbsp; "74.125.18.162": 1,
& Nbsp; "192.168.0.254": 1,
& nbsp; "192.168.0.35": 5
& Nbsp;}
& Nbsp;},
& Nbsp; "by_status": {
& Nbsp; "200": 7,
& Nbsp; "404": 4
& Nbsp;},
& Nbsp; "by_dist": {
& Nbsp; "desconhecido": 11
& Nbsp;},
& Nbsp; "bytes_by_ip": {
& Nbsp; "74.125.18.162": 151,
& Nbsp; "192.168.0.254": 489,
& Nbsp; "192.168.0.35": 1093
& Nbsp;},
& Nbsp; "by_url": {
& Nbsp; "/ favicon.ico": 4,
& Nbsp; "/": 7
& Nbsp;},
& nbsp; "by_os": {
& Nbsp; "desconhecido": 11
& Nbsp;},
& Nbsp; "week_browser": {
& Nbsp; "3": {
& Nbsp; "desconhecido": 11
& Nbsp;}
& Nbsp;},
& Nbsp; "by_referer": {
& Nbsp; "-": 11
& Nbsp;},
& Nbsp; "by_browser": {
& Nbsp; "desconhecido": 11
& Nbsp;},
& Nbsp; "by_ip": {
& Nbsp; "74.125.18.162": 1,
& Nbsp; "192.168.0.254": 3,
& nbsp; "192.168.0.35": 7
& Nbsp;},
& Nbsp; "by_agent": {
& Nbsp; "Mozilla / 5.0 (X11; x86_64 Linux;; Ubuntu rv: 12.0) Gecko / 20100101 Firefox / 12,0, gzip (GFE) (via translate.google.com)": 1,
& Nbsp; "Mozilla / 5.0 (X11; x86_64 Linux;; Ubuntu rv: 12.0) Gecko / 20100101 Firefox / 12.0": 10
& Nbsp;},
& Nbsp; "by_hour": {
& Nbsp; "9": 3,
& Nbsp; "10": 4,
& Nbsp; "11": 1,
& Nbsp; "12": 3
& Nbsp;},
& Nbsp; "by_country": {
& Nbsp; "": 10,
& Nbsp; "US": 1
& Nbsp;}
}
Se você usar:
speed_shoot -f CSV -g / usr / local de dados GeoIP var www apache log / / / / / / acesso *
Seu resultado é:
by_date, 2012-5-3,11
total_line, 11
ip_by_url, / favicon.ico, 192.168.0.254,2
ip_by_url, / favicon.ico, 192.168.0.35,2
ip_by_url, /, 74.125.18.162,1
ip_by_url, /, 192.168.0.254,1
ip_by_url, /, 192.168.0.35,5
by_status, 200,7
by_status, 404,4
by_dist, desconhecido, 11
bytes_by_ip, 74.125.18.162,151
bytes_by_ip, 192.168.0.254,489
bytes_by_ip, 192.168.0.35,1093
by_url, / favicon.ico, 4
by_url, /, 7
by_os, desconhecido, 11
week_browser, 3, desconhecido, 11
by_referer, -, 11
by_browser, desconhecido, 11
by_ip, 74.125.18.162,1
by_ip, 192.168.0.254,3
by_ip, 192.168.0.35,7
by_agent, "Mozilla / 5.0 (X11; x86_64 Linux;; Ubuntu rv: 12.0) Gecko / 20100101 Firefox / 12,0, gzip (GFE) (via translate.google.com)", 1
by_agent, Mozilla / 5.0 (X11; x86_64 Linux;; Ubuntu rv: 12.0) Gecko / 20100101 Firefox / 12.0,10
by_hour, 9,3
by_hour, 10,4
by_hour, 11,1
by_hour, 12,3
by_country ,, 10
by_country, EUA, 1
Bem, eu acho, ele não funciona porque você primeiro precisa buscar arquivo de dados GeoIP:
wget -O- "http://www.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz" | zcat> /usr/local/data/GeoIP.dat
Claro, este é o banco de dados GeoLite, eu não incluem os dados no pacote desde geoip deve ser atualizado com freqüência para ficar exato.
Caminho padrão para geoip é data / GeoIP.dat
Use como um script
filmagem velocidade é de facto um modelo de como usar Yahi como um módulo:
#! / Usr / bin / env python
de importação archery.bow Hankyu como _dict
de Yahi importação notch, disparar
de datetime import datetime
context = notch ()
date_formater = lambda dt: "% s-% s-% s"% (dt.year, dt.month, dt.day)
context.output (
& Nbsp; disparar (
& Nbsp; contexto,
& Nbsp; dados lambda: _dict ({
& Nbsp; "by_country ': _dict ({data [' _ país ']: 1}),
& Nbsp; "by_date ': _dict ({date_formater (data [' _ datetime ']): 1}),
& Nbsp; "by_hour ': _dict ({. Data [' _ datetime '] horas: 1}),
& Nbsp; 'by_os': _dict ({data ['_ nome_do_SO']: 1}),
& Nbsp; 'by_dist': _dict ({data ['_ dist_name']: 1}),
& Nbsp; "by_browser ': _dict ({data [' _ BROWSER_NAME ']: 1}),
& Nbsp; "by_ip ': _dict ({data [' ip ']: 1}),
& nbsp; "by_status ': _dict ({data [' status ']: 1}),
& Nbsp; "by_url ': _dict ({dados [' uri ']: 1}),
& Nbsp; "by_agent ': _dict ({data [' agente ']: 1}),
& Nbsp; 'by_referer': _dict ({data ['referer']: 1}),
& Nbsp; "ip_by_url ': _dict ({dados [' uri ']: _dict ({data [' IP ']: 1})}),
& Nbsp; "bytes_by_ip ': _dict ({data [' IP ']: int (dados [' bytes '])}),
& Nbsp; "week_browser ':. _dict ({Data [' _ datetime '] nos dias úteis ():
& Nbsp; _dict ({dados ["_ BROWSER_NAME"]: 1})}),
& Nbsp; "total_line ': 1,
& Nbsp;}),
& Nbsp;),
)
Instalação
fácil como:
pip instalar Yahi
ou:
easy_install Yahi
uso Recommanded
- Para a agregação log básico, eu recomendo o uso da linha de comando;
- Para um métricas tiro Eu recomendo um console interativo (bpython ou ipython);
. - Para métricas específicas ou filtros elaborados Eu recomendo usar a API
Requisitos :
- Python
Comentários não encontrado