このトピックでは、Simple Log Serviceを使用して、ログクエリ、関連付け分析、統計分析などのさまざまなシナリオでアプリケーションログをクエリおよび分析する方法について説明します。
背景情報
アプリケーションログには、アプリケーションの操作とメンテナンスに関する重要な統計情報が含まれます。 アプリケーションログには次の特徴があります。
一貫性のないログスタイル。 アプリケーション開発者は、コードを記述するときにスタイルが異なります。 したがって、異なるアプリケーションによって生成されるログのスタイルには一貫性がありません。
データサイズが大きい。 アプリケーションログのサイズは、アクセスログのサイズよりも1桁大きい。
複数のサーバーでの配布。 ほとんどのアプリケーションはステートレスで、クラウドサーバーやコンテナーサービスなど、さまざまなフレームワークで実行されます。 これらのアプリケーションは、数から数千のインスタンスにデプロイすることができます。 したがって、ログ収集のためのクロスサーバーソリューションが必要です。
複雑なランタイム環境。 アプリケーションは異なる環境で実行され、アプリケーションログは異なる環境に保存されます。 たとえば、アプリケーション関連のログはコンテナに保存され、API関連のログはFunction Computeに保存され、古いシステムログはデータセンターに保存され、モバイルアプリのログはモバイル端末に保存され、Webサイトのログはブラウザに保存されます。
完全なログを取得する前に、すべてのアプリケーションログが同じ環境に保存されていることを確認してください。 Simple Log Serviceは、複数のログ収集方法とログ分析機能を提供します。 クエリ文とSQL-92構文を使用して、ログをエンドツーエンドでリアルタイムに分析できます。 クエリ結果をグラフで視覚化することもできます。 このトピックでSimple Log Serviceが提供するクエリおよび分析ソリューションのコストは、オープンソースソリューションの25% のみです。
アプリケーションログの照会
たとえば、アプリで注文エラーやリクエストの待ち時間が発生したとします。 検索文を使用して、テラバイトのデータを含むログを照会し、1秒以内に問題を見つけることができます。 検索文でクエリの時間範囲とキーワードを指定して、より正確な結果を得ることもできます。
次の検索文を実行して、レイテンシが1秒を超えるPOSTリクエストのログを照会できます。
Latency > 1000000 and Method=Post*
次の検索文を実行して、errorキーワードを含むログを照会し、mergeキーワードを除外できます。
error not merge
アプリケーションログに対する関連付け分析の実行
関連解析は、プロセス内関連解析およびクロスプロセス関連解析をサポートする。 2つのタイプには次の違いがあります。
プロセス内関連分析: プロセスのログは同じログファイルに保存されます。 マルチスレッドプロセスでは、スレッドIDでログをフィルタリングできます。
クロスプロセス関連付け分析: デフォルトでは、複数のプロセスを使用してリクエストを処理する場合、クロスプロセス関連付けは不明です。 この場合、TracerIdパラメーターを運ぶリモートプロシージャ呼び出し (RPC) を開始できます。 このパラメーターを使用して、プロセスを関連付けることができます。
プロセス内相関分析
コンテキストクエリを使用して、関連付けられたログを表示できます。 たとえば、キーワードを指定してエラーログを検索できます。 次に、コンテキストビューをクリックして、ログの前後のN個のログを表示します。 詳細については、「コンテキストクエリ」をご参照ください。
次の図は、コンテキストクエリの結果を示しています。
クロスプロセス関連解析
クロスプロセス関連解析は、トレーシングとも呼ばれる。 一般的なトレースツールには、EagleEye、Dapper、Stackdriver Trace、Zipkin、Appdash、X-Rayなどがあります。
この例では、トレースはSimple Log Serviceに基づいて実装されています。 さまざまなモジュールのログに、モジュールログの関連付けに使用できるフィールドが含まれるように設定できます。 フィールドには、Request_idとOrderIdが含まれます。 さまざまなログストアで関連ログを照会できます。
SDKを使用して、フロントエンドサーバー、バックエンドサーバー、支払いシステム、注文システムなどのさまざまなモジュールから収集されたログを照会できます。 クエリ結果を取得したら、結果を関連付けるフロントエンドページを作成できます。
アプリケーションログの統計分析を実行する
ログを照会して取得した後、ログの統計分析を実行できます。
次のクエリステートメントを実行して、すべてのエラーの種類と場所別のすべてのエラーの分布を分析できます。
__level__:error | select __file__, __line__, count(*) as c group by __file__, __line__ order by c desc
次のステップ
ログのバックアップ
取得したログは、Object Storage Service (OSS) やMaxComputeなどの他のクラウドサービスにバックアップできます。
アラートの設定
権限の付与
開発環境と本番環境を分離する権限をRAMユーザーに付与できます。