2012-08-30 15 views
6

私はFOSRestBundleを使用して、Symfony2でRESTfulサービスを構築しています。 Googleアナリティクスを使用してウェブクライアントでページの使用状況をトラッキングできます。しかし、これはHTML以外のクライアントによる要求に対しては明らかに機能しません。Symfony2でAPIの使用状況をどのように追跡できますか?

私はRedis、書き込みサービス、イベントディスパッチャなどのインストールに着手する前に、この問題は既に解決されていますか?パフォーマンスに重大な影響を与えないソリューションはありますか?

私が置き換えているプロジェクトの統計に基づいて、ブラウザからのトラフィックの90%で約1,000件のヒットが予想されます。 HTML以外のクライアントを管理することはできないため、追跡を追加することはオプションではありません。

誰もが分析データを必要とするのと同じ理由で、かなりのグラフを作成し、開発リソースをどこに集中させるべきかに関する定量的な証拠を得るためにデータが必要です。

+4

アクセスログを分析するものを検索することもできます(パフォーマンスへの影響はありません) – greg0ire

+0

悪い考えではありません。私はApacheについてよく知らないですが、どのように要求ごとに 'Accept'ヘッダーを記録するように指示できますか? –

+0

ログ形式をカスタマイズすることができます。 [LogFormat](http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#logformat)指示文を参照してください。 – greg0ire

答えて

1

いくつかのオプションがあり、必要な情報の量によって異なります。基本的なアクティビティ(各Webサービスへの呼び出し回数、ソースIP、ユーザエージェント)を知りたいだけなら、Apacheログにはすでにすべての情報が含まれています。 CustomLogを使用して、必要なフィールドを追加します。例えば。それは、GET、POST、PUT、などである場合

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

% rの部分に含まれています。あなたは次のように追加することができAcceptヘッダーを、言及しました。

POSTまたはPUTデータに実際に何が含まれているかを知りたい場合は、それは難しくなります。極端な解決策は、mod_dumpioモジュールを使用することです。これは、すべてのクライアント入力(すべてのヘッダー、すべてのCookie、すべてのPOSTデータ)を記録します。ユーザーがREST APIを使用して画像をアップロードした場合、良いか悪いかに関わらず、ログに完全な画像が表示されます。それは非常に大きくなる可能性があります。

私が好むソリューションは、PHPからログインすることです:カスタムログのいずれかにPHPスクリプトの先頭に、またはあなたが要求を処理するとき。次に、ログするもの、解析する最も簡単なフォーマットを完全に制御し、コンテキスト(ログ・テキスト・データなど、イメージ・バイトをロギングしない)に入れることもできます。開発や小規模なサイトでは、これをApacheロギングと並行して行います。 ApacheのCPU使用量が多すぎる場合は、Apacheのログを無効にするか、Apacheを完全にバイパスしてください。 (私は現在built-in webserver in php 5.4を評価中です - ルーティングのサポートがあるのでウェブサービスには非常に適しています)

最近、Googleアナリティクスと並行してサーバーログを分析するとよいでしょう。それぞれの。

関連する問題