7

FOSRestBundle を使用して、Symfony2 で RESTful サービスを構築しています。Google アナリティクスを使用して、Web クライアントでのページの使用状況を追跡できます。ただし、これは非 HTML クライアントからの要求に対しては明らかに機能しません。

Redis のインストール、サービスの作成、イベント ディスパッチャなどに着手する前に、この問題は既に解決されていますか? パフォーマンスに深刻な影響を与えない解決策はありますか?

私が置き換えようとしているプロジェクトの統計に基づいて、1 時間あたり約 1,000 ヒット、トラフィックの 90% がブラウザーから来ると予想しています。HTML 以外のクライアントを制御することはできないため、そこにトラッキングを追加することはできません。

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

4

1 に答える 1

2

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

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

%rの部分にはGET、POST、PUTなどが含まれます。

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

私が好む解決策は、PHP からログを記録することです。カスタム ログは、PHP スクリプトの先頭か、リクエストを処理するときに作成します。何をログに記録するか、分析するのが最も簡単な形式を完全に制御できます。また、コンテキストに入れることもできます (たとえば、テキスト データをログに記録し、イメージ バイトをログに記録しない)。開発中および小規模なサイトでは、Apache ロギングと並行してこれを行います。Apache が大量の CPU を使用している場合は、Apache のログを無効にするか、Apache を完全にバイパスします。(私は現在、php 5.4 の組み込み Web サーバーを評価しています。これはルーティングをサポートしているため、Web サービスに非常に適している可能性があります。)

ところで、サーバー ログの分析は、Google アナリティクスと並行して行うとよいでしょう。それぞれの精度を評価するのに役立ちます。

于 2012-09-06T00:42:53.113 に答える