1

Catalyst Web アプリケーションからのアクセス ログを分析する作業を行っています。データは、Web ファームの前にあるロード バランサーからのもので、1 日あたり合計約 35Gb です。これはHadoop HDFS ファイルシステムに保存されており、 MapReduce を ( Dumbo経由で、これはすばらしい) 使用して数値を処理します。

分析の目的は、キャパシティ プランニング、最適化、およびシステムを監視するためのしきい値。Analog のような従来のツールは、最も要求の多い URL や最も使用されているブラウザーを教えてくれますが、どれも役に立ちません。/controller/foo?id=1984それが最も人気のある URL であることを知る必要はありません。へのすべてのヒットのヒット率と応答時間を知る必要が/controller/fooあるため、最適化またはキャッシュの余地があるかどうかを確認し、このアクションのヒットが突然 2 倍になった場合に何が起こるかを見積もることができます。

MapReduce を使用して、データを期間ごとのアクションごとのリクエストに簡単に分割できます。問題は、それをわかりやすい形式で表示し、重要な傾向や異常を見つけ出すことです。私の出力は次の形式です。

('2009-12-08T08:30', '/ctrl_a/action_a') (2440, 895)
('2009-12-08T08:30', '/ctrl_a/action_b') (2369, 1549)
('2009-12-08T08:30', '/ctrl_b/action_a') (2167, 0)
('2009-12-08T08:30', '/ctrl_b/action_b') (1713, 1184)
('2009-12-08T08:31', '/ctrl_a/action_a') (2317, 790)
('2009-12-08T08:31', '/ctrl_a/action_b') (2254, 1497)
('2009-12-08T08:31', '/ctrl_b/action_a') (2112, 0)
('2009-12-08T08:31', '/ctrl_b/action_b') (1644, 1089)

つまり、キーは期間であり、値は(action, hits, cache hits)期間ごとのタプルです。(これに固執する必要はありません。これは、これまでのところ私が持っているものです。)

約250のアクションがあります。それらを組み合わせて少数のグループにすることはできますが、各アクションのリクエスト数 (または応答時間など) を同じグラフにプロットすることはおそらくうまくいきません。第一に、ノイズが多すぎます。第二に、絶対数はあまり重要ではありません。頻繁に使用される軽量でキャッシュ可能な応答に対するリクエストが 100 リクエスト/分増加することは、100 リクエスト/分増加することよりもはるかに重要ではありません。めったに使用されないが高価な(おそらくDBにヒットする)キャッシュ不可能な応答で。同じグラフでは、ほとんど使用されていないアクションに対する要求の変化は見られません。

静的なレポートはあまり良くありません。膨大な数の表は、消化するのが困難です。時間単位で集計すると、重要な分単位の変化を見逃す可能性があります。

助言がありますか?この問題をどのように処理していますか? 1 つの方法は、リクエストの割合またはアクションごとの応答時間の大幅な変化を強調することだと思います。ローリング平均と標準偏差がこれを示しているかもしれませんが、もっと良いことはできますか?

他にどのような指標や数値を生成できますか?

4

0 に答える 0