|
|
Questo articolo è disponibile in: English Castellano Deutsch Francais Italiano Nederlands Portugues Turkce |
Egon Willighagen <egonw(at)logreport.org> L'autore: Oltre a collaborare con il progetto LinuxFocus, Egon lavora per la Stichting Logreport Foundation dal primo Novembre di quest'anno. Tra gli obiettivi della fondazione vi è la creazione di un software per l'analisi dei log sotto licenza GPL. Tradotto in Italiano da: Kikko <kikkoxyz(at)yahoo.it> Contenuto:
|
Premessa:
Questo è il secondo articolo della serie : l'uso di Lire nell'analisi dei files di log delle applicazioni degli internet servers. Questo articolo intende mostrare come si può personalizzare la generazione dei reports. Il primo articolo di questa serie ha spiegato come va installato Lire.
Questo articolo si riferisce all'ultima release di Lire: lire-20011017. Bisogna stare attenti al fatto che la configurazione è cambiata un pò dall'ultima versione, e che, fondamentalmente, il primo articolo di questa serie è già antiquato. Comunque l'idea generale del lr_config non ha subito modifiche.
Oltre questo, le altre caratteristiche di questa release sono: due nuovi super-servizi (FTP e firewall), molti nuovi reports disponibili (in totale diventano 68), nuovi formati di output (XHTML e RTF) e molti bug son stati eliminati. Ma il cambiamento più importante riguarda l'engine (NDT la parte del software che si occupa dei dati in modo specifico). Il processo di generazione dei reports è stato completamente riscritto utilizzando la tecnologia dell'XML.
Quest'articolo presenterà uno dei formati XML usati in Lire, e come viene usato per stabilire i reports. Non si tratta di un tutorial di come creare nuovi reports, ma si vuole mostrare come modificare dei reports predefiniti. Innanzitutto, quest'articolo intende spiegare come si può dire a Lire di generare dei report e come settarne i parametri.
Ciascun super servizio (per esempio `email' è un super servizio, e i servizi di `postfix' e `sendmail' appartengono a questo super servizio) ha un numero di report variabile, dal quale estrae delle informazioni dai log. Il super-servizio WWW ha, per esempio, 31 reports diversi. Non tutti i reports potrebbero interessarci. Di default, molti di questi reports son selezionati, ma sarebbe meglio personalizzare questo aspetto.
I files usati per la creazione dei reports si trovano nel file <prefix>/etc/lire/<superservice>.cfg (supponendo che Lire sia installato nella directory <prefix>). Per esempio, la configurazione per l'FTP apparirà grosso modo così:
# Report configuration for the FTP super service
# Top X reports
top-remote-host hosts_to_show=10
#top-files files_to_show=10
top-files-in files_to_show=10
top-files-out files_to_show=10
top-users users_to_show=10
# By day reports
bytes-by-day
# Transfers by X reports
transfers-by-direction
transfers-by-type
Il super-servizio FTP ha dunque otto reports definiti e son selezionati tutti tranne uno (#top-files files_to_show=10). Decommentando la linea si selezionerà anche quel report.
Notare che non tutte le linee che iniziano per "#" son dei report. In questa configurazione le linee "Report configuration for the FTP super service", "Top X reports", "By day reports" e "Transfers by X reports" son dei semplici commenti. Lo stesso valga anche per gli altri files di configurazione.
La loro classificazione è molto semplice. L'ordine delle linee dei report come appaiono nel file di configurazione è anche l'ordine in cui i reports saranno restituiti. Ad una modifica dell'ordine delle linee corrisponderà una modifica dell'ordine in cui i reports saranno forniti all'output. Per esempio, nell'esempio di sopra, transfers-by-type sarà l'ultimo report ad essere fornito nell'output.
La maggior parte dei reports può essere parzialmente personalizzata con i files di configurazione, come spiegato nella precedente sezione. Ad esempio osserviamo la configurazione del super-servizio DNS:
# Report configuration for the DNS super service
# Top reports
top-requesting-hosts hosts_to_show=10
top-requesting-hosts-by-method hosts_to_show=10 method='recurs'
top-requesting-hosts-by-method hosts_to_show=10 method='nonrec'
top-requested-names names_to_show=10
top-requested-names-by-method names_to_show=10 method='recurs'
top-requested-names-by-method names_to_show=10 method='nonrec'
requesttype-distribution
requesttype-distribution-by-method method='recurs'
requesttype-distribution-by-method method='nonrec'
# By Day reports
requests-by-period period=1d
requests-by-period-by-method period=1d method='recurs'
requests-by-period-by-method period=1d method='nonrec'
# By Hour reports
requests-by-period period=1h
requests-by-period-by-method period=1h method='recurs'
requests-by-period-by-method period=1h method='nonrec'
Tutti e 50 i reports son selezionati, ma in più per i reports che hanno un Top X il numero X può essere definito Nella configurazione qui sopra il report top-requesting-hosts will ha un Top 10, (NDT_ ovvero mostrerà solo i 10 host che si son connessi più frequentemente).
Questi reports son generati a partire da otto specificazioni di report. Ciò è reso possibile dal'utilizzo dei parametri (period, method, hosts_to_show, e names_to_show) . E' una delle nuove caratteristiche del nuovo motore basato sulla tecnologia XML.
Importante: tutte le definizioni di una variabile vanno inserite sulla stessa linea del nome del report!
Un esempio più esplicito è tratto dal file di configurazione del super-servizio WWW:
top-referers-by-page referer_to_show=5 page_to_show=10 referer_exclusion='^-$'
In questo esempio viene usata una espressione regolare in Perl come contenuto per la variabile referer_exclusion. Questa espressione corrisponde a tutti i riferimenti "-". Tali riferimenti si trovano nel file di log nel caso in cui ad esempio l'URL della vostra web page è stata visitata dal client di un utente. (Quando un utente visita una vostra web page essendovi stato rimandato da un qualche link su un sito, la pagina in cui è contenuto il link alla vostra web page la si ritroverà nel campo riguardante "refer"). Tutti i "refer" (riferimenti) che corrisponderanno a "-" saranno esclusi dall'analisi.
Con questa nuova release è stato introdotta nuova sezione all'interno di Lire. La creazione dei reports e la lista dei processi è stata completamente riscritta per l'utilizzo della tecnologia XML. i Reports son definiti in XML, ma la definizione delle variabili è fatta in ASCII. Lespecifiche del precedente report erano uno script Perl che doveva riconoscere sia il formato dell'input che quello dell'output. Con il nuovo formato XML, l'implementazione è distinta dalle specifiche, e non è più necessario conoscere il formato di input e di output; solo le informazioni che dovranno essere trattate.
Di conseguenza, per personalizzare i reports in low level, dovremmo conoscere almeno un pò di XML. Di seguito un esempio di report tratto dalla directory <prefix>/share/lire/reports/firewall :
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE lire:report-spec PUBLIC
"-//LogReport.ORG//DTD Lire Report Specification Markup Language V1.0//EN"
"http://www.logreport.org/LRSML/1.0/lrsml.dtd">
<lire:report-spec xmlns:lire="http://www.logreport.org/LRSML/"
superservice="firewall" id="bytesperfrom" charttype="bars">
<lire:title>Top Bytes per From-IP Report</lire:title>
<lire:description>
<para>
This report lists the IP addresses sending the highest data volume.
</para>
</lire:description>
<lire:param-spec>
<lire:param name="ips_to_show" type="int" default="10">
<lire:description>
<para>This parameter controls the number of sending IP adresses to
display in the report.
</para>
</lire:description>
</lire:param>
</lire:param-spec>
<lire:display-spec>
<lire:title>Volume per sending IP, Top $ips_to_show</lire:title>
</lire:display-spec>
<lire:report-calc-spec>
<lire:group sort="-rcvd_volume" limit="$ips_to_show">
<lire:field name="from_ip"/>
<lire:sum name="rcvd_volume" field="length"/>
</lire:group>
</lire:report-calc-spec>
</lire:report-spec>
La prima cosa che dovreste aver notato è che pressochè ogni elemento XML contenuto in questo report inizia con lire:. questo in modo da assegnare un namespace a quell'elemento. Ogni elemento che contiene il namespace lire è definito in XML DTD http://www.logreport.org/LRSML/1.0/lrsml.dtd (link mancante!), che può essere trovato in http://www.logreport.org/pub/docs/dtd/lrsml/.
Tutti gli altri elementi si suppone appartengano al DocBook XML 4.2 DTD. Come l'elemento <para> nella nona linea dell'esempio.
Se si vuol cambiare il titolo che compare nei report, si deve cambiare <lire:title> in <lire:display-spec>. Ricorda che le linee che iniziano per "$" sono delle variabili Perl, in cui il nome corrisponde a uno dei parametri specificati nella sezione <lire:param-spec>.
Una cosa delicata è apportare delle modifiche all'elemento <lire:title>. Necessiterete dell'elemento contenuto nel "node" <lire:display-spec> . Quest'ultimo elemento contiene le informazioni da visualizzare nell'output del report. Il primo elemento <lire:title> contiene il titolo del report com'è usato nella documentazione del software Lire.
Nel prossimo esempio si vede un frammento delle specifiche del report requests-by-result WWW . Adesso si può vedere che <lire:display-spec> non solo contiene un titolo ma anche altre spiegazioni. Notare che ogni elemento senza <lire:description> non sta usando il namespace lire, e quindi ha un contenuto di tipo DocBook.
<lire:display-spec>
<lire:title>Requests By HTTP Result</lire:title>
<lire:description>
<para>
The most common HTTP status codes are given below:
<variablelist>
<varlistentry>
<term>200</term>
<listitem>
<para>OK (The request has succeeded.)</para>
</listitem>
</varlistentry>
<!-- rest is cut out -->
</variablelist>
</para>
</lire:description>
</lire:display-spec>
Il risultato mostrato dal report sarà qualcosa di questo tipo (qui è mostrata solo la parte iniziale):
Requests By HTTP Result
The most common HTTP status codes are given below:
200 OK (The request has succeeded.)
201 Created (The request has been fulfilled and resulted in a new resource being created.)
206 Partial Content (The server has fulfilled the
La maggior parte dei report sono associati ad una veste grafica. Queste immagini generate dai dati e dalle specifiche del report definiscono, inoltre il formato in cui saranno tracciati i grafici. Prendiamo ad esempio la seguente immagine prodotta dal report dell'FTP transfers-by-type.
Per questo report i dati vengono visualizzati con un grafico a torta come si può capire dagli attributi del @charttype contenuti nel suddetto codice. Il risultato sarà:
Cambiando il tipo di grafico in bars ('charttype="bars"') il risultato che avremo sarà:
Si deve fare attenzione al fatto che il report title contiene un bug. Questo bug, tuttavia è già stato reso noto.
Ulteriori dettagli per quanto riguarda il linguaggio XML usato per le specifiche dei reports potranno trovarsi nel sito LogReport. Si potrà notare che questo linguaggio è piuttosto esteso, e per ora suggerirei di utilizzare le specifiche dei reports disponibili nella distribuzione come guida principale.
Gli elementi che non son stati trattati in questo articolo, ma che son utilizzati nei reports, son destinati alla specificazione dei parametri(<lire:param-spec>) e al calcolo dei risultati (<lire:report-calc-spec>). Specialmente quest'ultimo ha molteplici opzioni e utilizza una conoscenza fondamentale del formato interno (chiamato DLF) nel quale vengono memorizzati i dati dei log. Ma questo discorso verrà approfondito nel prossimo articolo.
Quest'articolo ha introdotto il discorso sul motore di generazione dei report basato sull'XML e ha mostrato come si può personalizzare i report ottenuti. Maggiori informazioni si possono trovare nel sito di LogReport: http://www.logreport.org/.
Se vi voleste mettere in contatto col team di LogReport, potrete farlo tramite IRC. I programmatori chattano nella room #logreport nel server IRC OpenProjects.org IRC network. Domande, commenti e aiuti son i benvenuti. Se si preferisce il mezzo dell'e-mail, potrete contattare il team nella mailing list pubblica [email protected].
|
Webpages maintained by the LinuxFocus Editor team
© Egon Willighagen, FDL LinuxFocus.org Click here to report a fault or send a comment to LinuxFocus |
Translation information:
|
2001-12-22, generated by lfparser version 2.23