Table YQL pour les journaux d'accès Apache
Question
YQL SHOW TABLES est au format CSV et HTML. . Qu'en est-il d'une table pour les journaux d'accès Apache?
La solution
Il y a maintenant une table de regex
Si vous avez une expression rationnelle pour votre format de journal, vous pouvez utiliser cette table pour l'analyser.
Autres conseils
Les journaux Apache ont en fait un format personnalisable, donc je suppose que vous parlez du format de journal commun ou de l’une des valeurs par défaut. Si nous ajoutons quelque chose comme cela, ce sera probablement avec un lecteur de ligne basé sur regex que vous pourrez ensuite appliquer aux journaux Apache. Merci pour la suggestion.
Voici le début d'une table d'analyse de journal commune. Le code tel quel sera divisé aveuglément sur des espaces vides, ce qui n'est pas précis, mais c'est un début. Vous voudrez probablement transmettre l'URL du fichier journal, diviser les entrées sur une nouvelle ligne, puis analyser chaque ligne.
<?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>
Vous pouvez le lancer comme ceci: utilisez " http: // {votre domaine} /table.xml" comme table; sélectionnez * du tableau
Vous pouvez ensuite l’étendre pour rechercher des données géographiques par ip: utilisez " http: // {votre domaine} /table.xml" comme table; sélectionnez * dans pidgets.geoip où ip in (sélectionnez IP dans le tableau)