Yahi is een veelzijdige log parser het verstrekken van standaard afzuigkappen voor apache / lighttpd.
Command line gebruik
Voorbeeld van gegevens ontleed met Yahi: http://wwwstat.julbox.fr/
Eenvoudigste gebruik is:
speed_shoot -g / usr / local / data / geoip / var / www / apache / toegang * log
het zal een json terug in de vorm:
{
& 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; "onbekend": 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; "onbekend": 11
& Nbsp;},
& Nbsp; "week_browser": {
& Nbsp; "3": {
& Nbsp; "onbekend": 11
& Nbsp;}
& Nbsp;},
& Nbsp; "by_referer": {
& Nbsp; "-": 11
& Nbsp;},
& Nbsp; "by_browser": {
& Nbsp; "onbekend": 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; Ubuntu, Linux x86_64; rv: 12,0) Gecko / 20100101 Firefox / 12,0, gzip (GFE) (via translate.google.com)": 1,
& Nbsp; "Mozilla / 5.0 (X11; Ubuntu, Linux x86_64; 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;}
}
Als u gebruik maken van:
speed_shoot -f csv -g / usr / local / data / geoip / var / www / apache / toegang * log
Uw resultaat is:
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, onbekend, 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, onbekend, 11
week_browser, 3, onbekend, 11
by_referer, -, 11
by_browser, onbekend, 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; Ubuntu, Linux x86_64; rv: 12,0) Gecko / 20100101 Firefox / 12,0, gzip (GFE) (via translate.google.com)", 1
by_agent, Mozilla / 5.0 (X11; Ubuntu, Linux x86_64; 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, VS, 1
Nou ik denk dat, het werkt niet, want je moet eerst naar geoip gegevensbestand te halen:
wget -O "http://www.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz" | zcat> /usr/local/data/GeoIP.dat
Natuurlijk, dit is de GeoLite databank, ik heb niet de gegevens op te nemen in het pakket sinds geoip vaak moeten worden bijgewerkt om accuraat te blijven.
Standaard pad voor geoip is data / GeoIP.dat
Gebruik als een script
snelheid shoot is in feite een matrijs hoe Yahi als een module:
#! / Usr / bin / env python
van archery.bow import Hankyu als _dict
van Yahi import notch, schieten
uit datetime import datetime
context = inkeping ()
date_formater = lambda dt: "% s-% s-% s"% (dt.year, dt.month, dt.day)
context.output (
& Nbsp; te schieten (
& Nbsp; context,
& Nbsp; lambda gegevens: _dict ({
& Nbsp; 'by_country': _dict ({data ['_ land']: 1}),
& Nbsp; 'by_date': _dict ({date_formater (data ['_ datetime']): 1}),
& Nbsp; 'by_hour': _dict ({. Data ['_ datetime'] uur: 1}),
& Nbsp; 'by_os': _dict ({data ['_ naam besturingssysteem']: 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 ({data ['uri']: 1}),
& Nbsp; 'by_agent': _dict ({data ['middel']: 1}),
& Nbsp; 'by_referer': _dict ({data ['referer']: 1}),
& Nbsp; 'ip_by_url': _dict ({data ['uri']: _dict ({data ['ip']: 1})}),
& Nbsp; 'bytes_by_ip': _dict ({data ['ip']: int (data ['bytes'])}),
& Nbsp; 'week_browser':. _dict ({Data ['_ datetime'] weekdag ():
& Nbsp; _dict ({data ['_ BROWSER_NAME "]: 1})}),
& Nbsp; 'total_line': 1,
& Nbsp;}),
& Nbsp;),
)
installatie
eenvoudig:
pip Yahi installeren
of:
easy_install Yahi
Aanbevolen onderdeel gebruik
- Voor basis log aggregatie, ik beveel het gebruik van command line;
- Voor een schot metrics Ik adviseer een interactieve console (bpython of ipython);
. - Voor specifieke metrieken of uitgebreide filters Ik zou aanraden met behulp van de API
Eisen
- Python
Reacties niet gevonden