2012-08-30 12 views
6

Sto costruendo un servizio RESTful in Symfony2, usando FOSRestBundle. Posso monitorare l'utilizzo della pagina nei client Web utilizzando Google Analytics. Tuttavia, questo ovviamente non funzionerà per richieste da parte di client non HTML.Come posso tracciare l'utilizzo dell'API in Symfony2?

Prima di iniziare l'installazione di Redis, servizi di scrittura, dispatcher di eventi, ecc., Questo problema è già stato risolto? C'è una soluzione che non ha un impatto significativo sulle prestazioni?

In base alle statistiche del progetto che sto sostituendo, mi aspetto circa 1.000 accessi all'ora con il 90% del traffico proveniente dai browser. Non controllerò i client non HTML, quindi aggiungere il monitoraggio non è un'opzione.

Ho bisogno dei dati per la stessa ragione per cui qualcuno ha bisogno di dati di analisi - per creare grafici graziosi e fornire prove quantitative su dove concentrare le risorse di sviluppo.

+4

Forse potresti cercare qualcosa che analizzi il tuo registro di accesso (nessun impatto sulle prestazioni) – greg0ire

+0

Non è una cattiva idea. Non so molto su Apache - come posso dire di registrare l'header 'Accept' per ogni richiesta? –

+0

So che è possibile personalizzare il formato del registro. Vedi la documentazione della direttiva [LogFormat] (http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#logformat). – greg0ire

risposta

1

Ci sono alcune opzioni e dipende esattamente da quante informazioni avete bisogno. Se si desidera solo conoscere l'attività di base (quante chiamate a ciascun servizio Web, quando, IP di origine, agente utente), i registri di apache dispongono già di tutte queste informazioni. Usa CustomLog per aggiungere ulteriori campi di cui hai bisogno. Per esempio. lei ha citato l'intestazione Accept, che può essere aggiunto come questo:

CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" \"%{Accept}i\"" 

Se è GET, POST, PUT, ecc è contenuta nella parte% r.

Se si desidera sapere cosa è effettivamente nei dati POST o PUT, allora è più difficile. La soluzione estrema è utilizzare il modulo mod_dumpio. Questo registra tutto l'input del client (tutte le intestazioni, tutti i cookie, tutti i dati POST). Se le persone utilizzano la tua API REST per caricare immagini, nel bene o nel male, ottieni l'immagine completa nel tuo log. Potrebbe diventare molto grande.

La soluzione che preferisco è quella di accedere da PHP: un log personalizzato nella parte superiore dello script PHP o durante l'elaborazione delle richieste. Hai quindi il pieno controllo su cosa registrare, il formato più semplice da analizzare e puoi anche inserirlo nel contesto (ad esempio, dati di log di log, ma non la registrazione dei byte di immagine). In fase di sviluppo e per siti di piccole dimensioni lo faccio parallelamente alla registrazione di apache. Se Apache sta prendendo troppa CPU, quindi disabilita la registrazione di apache, o evita completamente Apache. (Sto valutando lo built-in webserver in php 5.4 - ha il supporto per il routing, quindi potrebbe essere molto adatto per i servizi web.)

BTW, analizzare i registri del server è buono per fare in parallelo con Google Analytics: ti aiuta ad apprezzare l'accuratezza di ciascun.

Problemi correlati