BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Apache-Logdateien mit SQL auswerten

Mit Hilfe von asql können Apache-Logdateien mit Hilfe von SQL ausgewertet werden. Im FreeBSD-Portbaum findet man asql unter www/asql:

# cd /usr/ports/www/asql && make install clean

Startet man asql muss zuerst die Apache-Logdatei mit Hilfe des load Kommandos geladen werden:

# asql
asql v1.6 - type 'help' for help.
asql> load /var/log/httpd-access.log                                                                                                     
Loading: /var/log/httpd-access.log

Durch das show Kommandos werden die Spalten angezeigt welche angefragt werden können:

# asql> show                                                                                                                                  

   The table 'log' table has the following columns:

  id      - ID of the request
  source  - IP, or hostname, which made the request.
  request - The HTTP request
  status  - The HTTP status-code returned
  size    - The size of the response served, in bytes.
  method  - The HTTP method invoked (GET, PUT, POST etc).
  referer - The HTTP referer (sic).
  agent   - The User-Agent which made the request.
  version - The HTTP version used by this client.
  date    - The date and time at which the request was made.
  label   - Any label applied when the logfile was read.
  user    - The remote (authenticated) user, if any.

Nun kann mit SQL zum Beispiel die Anzahl Logzeilen abgefragt werden:

# asql> SELECT COUNT(id) FROM logs                                                                                                            
11824

Im folgenden Beispiel wird abgefragt welche 10 IP Adressen am meisten Inhalte heruntergeladen haben und wieviele Bytes im Total:

# asql> SELECT source,SUM ( size ) AS Number FROM logs GROUP BY source ORDER BY Number DESC, source LIMIT 10                                  
xxx.xxx.144.25 27051285778
xxx.xxx.170.131 14517940587
xxx.xxx.191.155 13897162645
xxx.xxx.35.202 7229313024
xxx.xxx.208.198 6773282128
xxx.xxx.115.44 6044618675
xxx.xxx.160.156 5183653049
xxx.xxx.253.241 4906880739
xxx.xxx.7.52 4906749542
xxx.xxx.7.104 4906746880
asql> exit

Mit Hilfe des exit Kommandos wird asql wieder beendet. Mehr Informationen zu asql erhält man mit der --manual Option von asql.

 Permalink