サポートエンジニアの視点: ログの収集と活用のベストプラクティス

サポートで必須となる、ログの取得と分析について詳しく説明していきたいと思います。

ログの重要性

アプリケーションのエラーを解決するためには、問題発生時の動作を理解することが不可欠です。このためにはエラーログだけでなく、エラーが発生する前後のログも重要となります。エラーが発生した瞬間だけでなく、アプリケーションの起動からエラーが解消するまでの全体的な流れを把握することで、エラーの原因と解決策を見つけていきます。

ログの種類と取得方法

ログは大きく「通常出力されるもの」と「設定して追加出力されるもの」があります。

通常出力されるログ

  • アプリケーションログ: アプリケーションの起動シーケンスや停止シーケンス、各種インフォメーション、エラー発生時にはエラーログが出力されます。これは調査の主力となるログです。

  • アクセスログ: クライアントからのアクセス時刻やIPアドレス、URL、HTTPレスポンスコードなどの情報が出力されます。エラーの発生トリガーや、分間アクセス数といったシステム過負荷の確認に利用されます。

  • コンソールログ: バッチやシェルで起動するアプリケーションが出力する標準出力や標準エラー出力の情報が含まれます。これらのログにはアプリケーションログには含まれない情報が出力されることがあります。無いと解決できない場合が多いので、リダイレクトしておくと良いです。

設定して追加出力されるもの

  • デバッグログ・トレースログ: アプリケーションの詳細な動作がロギングされます。これらのログはエラーログだけでは、エラーに至った経緯がわからない場合に必要となります。ただし、ログのボリュームが多くなるため、ディスク容量やパフォーマンスの問題に注意しながら使用する必要があります。

ログ収集のポイント

  • 抜粋せず全て提供すること: 通常出力されるログが欠けていると、それが異常によるものなのかサポートには判断がつかず、調査が混乱します。

  • エラー発生時刻を含むこと: 発生時刻を含んでいないログでは意味がありません。ログがローテーションで流れてしまう可能性があるため、問題発生時点でログディレクトリをコピーして証拠を保全することが重要です。

  • アプリケーションプロセスの起動時からログを全て提供すること: エラー発生時に問題が起きているわけではなく、その過程に重要なポイントがある場合が多いです。途中からのログでは、ポイントが含まれていない可能性があります。

  • OSの時刻を同期すること: システム間でログを比較分析するためには、各システムのOSの時刻が同期されていることが重要です。

  • ログの採取源を伝えること: 冗長化構成の場合、どのマシン、ノードから採取したログなのかを示す情報を提供することも重要です。ログのパスや、どのノードのものか第三者に証明できるよう伝えましょう。

ログは問題解析になくてはならない物です。これらのポイントを心に留めて、効果的なログ収集と分析を行いましょう。

いいなと思ったら応援しよう!