Question

YQL SHOW TABLES est au format CSV et HTML. . Qu'en est-il d'une table pour les journaux d'accès Apache?

Était-ce utile?

La solution

Il y a maintenant une table de regex

http://developer.yahoo.com/yql/console/?q= sélectionnez% 20 *% 20de% 20regex% 20where% 20expression% 20% 3D% 20% 22 (. *)% 22% 20et% 20text% 3D% 22test% 22 & env = http% 3A% 2F% 2Fdatatables.org% 2Fallatables .env

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)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top