エラーログの定義
エラーログは、コンピューターソフトウェアの実行中に発生したエラー状態の詳細な記録を含むファイルです。名前は総称的なものであり、アプリケーションによってエラー以外の種類のメッセージがエラーログに記録されることもあります。ただし、エラーログは、通常は、プログラムによって生成されたエラーメッセージのみを記録することを目的としたものです。これらのプログラムは、サーバーまたはネットワークオペレーティングシステムであることも、サードパーティのアプリケーションであることもあります。この記事では、アプリケーションエラーログのみに焦点を当てています。
アプリケーションに障害またはパフォーマンスの問題が発生した場合、根本原因を見つける最も簡単な方法は、エラーログを探してエラーメッセージを確認することです。高品質のエラーログでは、トラブルシューティングを開始するのに十分な情報が提供されます。エラーログでは、何が起こったのか、いつ起こったのか、どれほど重大だったのか、場合によっては問題のあるモジュールの名前や他のイベントと相関するためのトレースIDを確認できます。
エラーログは、従来型のモニタリングとSIEM(セキュリティ情報およびイベント管理)システムを強化するうえで非常に貴重です。これらのモニタリングソリューションは、ログの重大なエラーを解析して特定し、類似のエラーの傾向の履歴を表示し、セキュリティ関連のインシデントに対してアラートを送信できます。
この記事では、一般的なアプリケーションエラーログに含まれる内容、運用チームをどのようにサポートできるか、およびログから最大限の価値を引き出す方法について説明します。
エラーログに含まれる内容
エラーログには、未処理エラーメッセージとカスタムエラーメッセージの2種類のアプリケーションエラーが含まれます。未処理エラーメッセージは非トラップエラーメッセージとも呼ばれますが、これは、非トラップメッセージが開発者のコードで処理されないためです。場合によっては、アプリケーションのライブラリまたはランタイムによってエラーがスローされます。これらのランタイムは、アプリケーション開発者によって記述されるのではなく、ビルドフェーズ中にコンパイラによって追加されます。このような未処理エラーの例としては、変数型の不一致、ゼロ除算などがあります。
一方、カスタムエラーメッセージは、プログラムコード内の例外ハンドラーによって記録されます。これらのエラー状態は、開発者によって予測されたもので、これに対するコードが記述されています。例えば、銀行取引アプリケーションでは、ユーザーが現在の残高を超えて引き出そうとするとエラーが記録されます。メッセージは、人間が読みやすいものにすることができます。
エラーログが役立つかどうかは、各エラーイベントについて記録される情報のレベルによって決まります。十分な詳細がないと、修復アクションを取ることは困難です。アプリケーションによって、提供されるエラーの詳細は異なりますが、適切に設計されたエラーログエントリは構造化されており、いくつかの共通フィールドがあります。
タイムスタンプ
このフィールドには、エラーの発生日時が表示されます。理想的には、タイムゾーンも含まれている必要があります。このことは分散システムで特に便利です。一般的に採用されている形式はISO 8601規格で、次のようになります。
2022-04-15T14:19:10+00:002022-04-15T14:20:10+00:00
…
重要度レベル
ほとんどのログエントリには、早急な対応が必要かどうかを示す重要度を識別するためのレベルが含まれています。よく使用されるレベルは、TRACE、DEBUG、INFO、WARN、ERROR、およびFATALで、TRACEは最も重要度が低く、FATALは最も重大です。モニタリングシステムは、これらの重要度レベルに基づいてアラートを自動的に送信し、自動アクションをトリガーできます。
例えば、ディスク容量がなくなりそうなボリュームは、WARNレベルでログに記録できます。モニタリングソリューションがこのエラーを検出すると、運用チームにアラートメッセージを送信し、その後にサポートチケットの作成が行われます。一方、ディスク容量が完全に飽和状態になった場合、CRITICALとして記録され、モニタリングソリューションによって自動的にドライブが拡張されます。
ユーザー
このフィールドには、エラーに関連付けられたネットワークユーザー名が表示されます。通常、エラーの原因となったのはシステムユーザーのアクションです。ユーザー名は、トラブルシューティングや履歴分析の実施に役立ちます。例えば、エラーログを分析して、一部のユーザーで他のユーザーよりも多くのエラーが発生しているかどうかを特定できます。ただし、すべてのログイベントにユーザーが関連付けられているわけではありません。
説明
これは、エラーの簡単な説明です。エラーログは時間的制約のある状況でアクセスされることが多いため、エラーの説明は簡潔でありながら必要な情報を提供することが不可欠です。例えば、ユーザーがアプリケーションにアクセスできない場合、「アクセスが拒否されました」のような単純なエラーの説明はあまり役に立ちません。代わりに、「アクセスが拒否されました。権限が不十分です」という説明の方が適切です。
共通フィールドの他に、エラーログによく表示される属性には、次のようなものがあります。
- エラーID:エラーIDは、各タイプのエラーを一意に識別するために使用されます。
- IPアドレス:一部のエラーメッセージには、ソースデバイスと宛先デバイスのIPアドレスが表示されます。
- デバイスまたはサーバー:これは、アプリケーションがエラーをスローしたデバイスのネットワーク名またはIPアドレスです。
エラーログの利点
エラーログは飛行機のブラックボックスのようなものです。これは、ほとんどのサポートエンジニアにとって最初のよりどころです。その利点は次のとおりです。
解決時間の短縮
エラーログは、特に最新のログ管理システムに取り込まれた場合に、IT環境の平均解決時間 (MTTR) を短縮するのに役立ちます。これらのログ管理ソリューションを使用すると、関心のあるエラーのフィルタリング、検索、検出、特定のフィールド値のドリルダウン、複数のエラーログ間のイベントの関連付け、および将来発生する可能性のある問題の予測を行うことができます。これらすべてが、ダウンタイムの可能性をさらに減らすプロアクティブな対策につながる可能性があります。
より容易な意思決定
ダッシュボード、トレンドチャート、重要度別の上位N個のエラー、およびログ管理ソリューションからのさまざまなレポートは、どのエラーが重大であるか、影響を受けたシステムのパフォーマンスはどうなっているか、すぐに確認する価値があるかどうかを特定するのに役立ちます。同様に、エラーログのパターンから隠れた問題がわかるため、チームは迅速かつプロアクティブな措置を講じることで、顧客からの苦情を防ぐことができます。
より良いパフォーマンス
エラーログにより、アプリケーションのパフォーマンスの問題が明らかになります。アプリケーションがハングしたり、メモリの問題が発生したり、スループットが低下したりしたときにそれらを特定できます。ログを経時的に分析すると、パフォーマンスのボトルネックの一般的な状況が明らかになります。例えば、放棄されたショッピングカートイベントを含むエラーログを調べると、ブラックフライデーのセール中にeコマースアプリケーションにパフォーマンスの問題が発生していることがわかることがあります。その場合、その期間中のみインフラストラクチャをスケールアップする必要がある可能性があります。
セキュリティの向上
エラーログは、セキュリティインシデントのトラブルシューティングに不可欠です。セキュリティ関連のエラーの履歴レコードを分析すると、通常の振る舞いと疑わしい振る舞いを区別するのに役立ちます。例えば、あるアプリケーションで、複数のユーザーアカウントにわたってログイン試行が何度も失敗しているという一貫したパターンが見つかった場合、それらのユーザーがまだアクティブであるかどうかを確認し、より安全なパスワードを使用するか、2要素認証を使用するように依頼する必要があります。セキュリティのオーケストレーション、自動化と対応 (SOAR) ツールを使用すると、アカウントを無効にする自動アクションを追加することで、これをさらに進めることができます。
エラーログを最大限に活用する
明らかな利点がありますが、エラーログはしばしば非常に詳細になることがあります。ログ管理システムでは、これらのイベントの多くを取り込んで解析し、インデックスを作成するのに時間がかかる場合があります。そのため、エラーログを最大限に活用するには、いくつかの一般原則に従うのが最善です。
フィルターを使用する
エラーログから不要なイベントをフィルタリングして除外し、関心のあるイベントのみをキャプチャすることが重要です。これを行うには、特定の種類のイベントまたは特定の重要度レベル以上のイベントのみをログに記録するようにアプリケーションを設定します。もう1つのオプションは、関連するイベントのみを除外し、それらをロギングアプリケーションに送信することです。
イベントの処理方法を決める
重要度レベルを使用して、実行するアクションの種類を決定します。例えば、重大なエラーまたは致命的なエラーに対してアラートと自動アクションをトリガーし、警告レベルのものに対して問題チケットを作成します。このようなアクティビティを定義するには、ビジネス所有者とアプリケーション所有者、テクニカルリード、運用チームからのフィードバックが必要です。
関連するチームのみにアラートを送信する
キャプチャするイベントとその処理方法が決まったら、関連するチームがそれらに関するアラートを受け取るようにします。不必要にアラートを全員に送信すると、エラー疲れが発生し、重要なイベントが見逃される可能性があります。例えば、インフラストラクチャチームにはストレージ関連のエラーを送信し、SecOpsチームにはセキュリティ関連のエラーを送信する必要があります。
エラーを経時的に分析する
問題のトラブルシューティングを行わない場合でも、異常に関するエラーの履歴傾向を確認し、過去の同様の期間にわたって比較できます。これらの傾向は、ベースライン化やベンチマークに役立ちます。例えば、CPU使用率が80%を超えた後や、APIクライアントの接続率が毎秒50を超えた後にパフォーマンス関連のエラーが増加するのを確認した場合、それらがベースラインの数値であることがわかります。その後、インフラストラクチャ容量を追加する際にそれらをベンチマークに使用できます。
アラートをアクション可能にする
エラーからトリガーされるアラートには、常に明確で合意されたアクションプランが必要です。RACIマトリクスは、アラートが発生したときに主要な関係者を特定するための重要なツールです。同様に、プレイブックは自動化されたアクションに役立ちます。運用チームは、ログ管理ソリューションの自動化機能を活用して、対応時間を短縮し、サービスの品質を向上させる必要があります。
次世代SIEMおよびログ管理のための世界をリードするAIネイティブプラットフォームをお試しください
SIEMとログ管理のための最高水準のAIネイティブプラットフォーム、CrowdStrike Falcon®プラットフォームでサイバーセキュリティを強化しましょう。ペタバイト規模でのセキュリティログを体験してみてください。クラウドネイティブ型または自己ホスト型での展開が可能です。ボトルネックの生じない、強力でインデックスフリーのアーキテクチャを利用してデータをロギングすれば、1日あたり1PB以上のデータを取り込んで脅威ハンティングに役立てることができます。リアルタイムの検索機能により攻撃者をしのぐスピードで対策を実施できます。複雑なクエリを実行しても、そのレイテンシーは1秒未満です。360度の可視性によりデータを統合してサイロ化を解消し、セキュリティ、IT、DevOpsチームがシームレスに脅威のハンティング、パフォーマンスのモニタリング、コンプライアンスの確保を行うことができます。30億件ものイベントにわたる作業でも1秒未満で実施できます。