Tabella YQL per i log di accesso di Apache
Domanda
YQL SHOW TABLES ha CSV e HTML . Che dire di una tabella per i log di accesso di Apache?
Soluzione
Ora c'è una tabella regex
Se hai una regex per il tuo formato di registro, puoi usare quella tabella per analizzarla.
Altri suggerimenti
I registri di Apache hanno in realtà un formato personalizzabile, quindi presumo che tu intenda il formato di registro comune o uno dei valori predefiniti. Se aggiungiamo qualcosa del genere, sarà probabilmente con un lettore di linee basato su regex che potresti applicare ai log di Apache. Grazie per il suggerimento.
Ecco l'inizio di una tabella di analisi dei log comune. Il codice così com'è verrà diviso ciecamente su spazi vuoti, il che non è preciso, ma è un inizio. Probabilmente vorrai passare l'URL del file di registro, dividere le voci su newline e quindi analizzare ogni riga.
<?xml version="1.0" encoding="UTF-8"?>
<table xmlns="http://query.yahooapis.com/v1/schema/table.xsd">
<meta>
<author></author>
<sampleQuery>select * from {table}</sampleQuery>
</meta>
<bindings>
<select itemPath="" produces="XML">
<inputs>
<key id="url" type="xs:string" paramType="variable"/>
</inputs>
<execute><![CDATA[
//http://en.wikipedia.org/wiki/Common_Log_Format
var entry = '208.240.243.170 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326';
var names = ['IP', 'RFC 1413', 'userid', 'date', 'request', 'status', 'size'];
var values = entry.split(' ');
var resp = {};
for (var i in names) {
var name = names[i];
resp[name] = values[i];
}
response.object = resp;
]]></execute>
</select>
</bindings>
</table>
Puoi eseguirlo in questo modo: usa " http: // {il tuo dominio} /table.xml" come tavolo; seleziona * dalla tabella
È quindi possibile estenderlo cercare i dati geografici tramite ip: usa " http: // {il tuo dominio} /table.xml" come tavolo; seleziona * da pidgets.geoip dove ip (seleziona IP dalla tabella)