サポートエンジニアの視点: ログの収集と活用のベストプラクティス
サポートで必須となる、ログの取得と分析について詳しく説明していきたいと思います。
ログの重要性
アプリケーションのエラーを解決するためには、問題発生時の動作を理解することが不可欠です。このためにはエラーログだけでなく、エラーが発生する前後のログも重要となります。エラーが発生した瞬間だけでなく、アプリケーションの起動からエラーが解消するまでの全体的な流れを把握することで、エラーの原因と解決策を見つけていきます。
ログの種類と取得方法
ログは大きく「通常出力されるもの」と「設定して追加出力されるもの」があります。
通常出力されるログ
アプリケーションログ: アプリケーションの起動シーケンスや停止シーケンス、各種インフォメーション、エラー発生時にはエラーログが出力されます。これは調査の主力となるログです。
アクセスログ: クライアントからのアクセス時刻やIPアドレス、URL、HTTPレスポンスコードなどの情報が出力されます。エラーの発生トリガーや、分間アクセス数といったシステム過負荷の確認に利用されます。
コンソールログ: バッチやシェルで起動するアプリケーションが出力する標準出力や標準エラー出力の情報が含まれます。これらのログにはアプリケーションログには含まれない情報が出力されることがあります。無いと解決できない場合が多いので、リダイレクトしておくと良いです。
設定して追加出力されるもの
デバッグログ・トレースログ: アプリケーションの詳細な動作がロギングされます。これらのログはエラーログだけでは、エラーに至った経緯がわからない場合に必要となります。ただし、ログのボリュームが多くなるため、ディスク容量やパフォーマンスの問題に注意しながら使用する必要があります。
ログ収集のポイント
抜粋せず全て提供すること: 通常出力されるログが欠けていると、それが異常によるものなのかサポートには判断がつかず、調査が混乱します。
エラー発生時刻を含むこと: 発生時刻を含んでいないログでは意味がありません。ログがローテーションで流れてしまう可能性があるため、問題発生時点でログディレクトリをコピーして証拠を保全することが重要です。
アプリケーションプロセスの起動時からログを全て提供すること: エラー発生時に問題が起きているわけではなく、その過程に重要なポイントがある場合が多いです。途中からのログでは、ポイントが含まれていない可能性があります。
OSの時刻を同期すること: システム間でログを比較分析するためには、各システムのOSの時刻が同期されていることが重要です。
ログの採取源を伝えること: 冗長化構成の場合、どのマシン、ノードから採取したログなのかを示す情報を提供することも重要です。ログのパスや、どのノードのものか第三者に証明できるよう伝えましょう。
ログは問題解析になくてはならない物です。これらのポイントを心に留めて、効果的なログ収集と分析を行いましょう。
この記事が気に入ったらサポートをしてみませんか?