すべての真実はあなたのログにあります
私の仕事は、2 つの企業の財務システムの運用管理を管理するため、2 つのビジネスシステムは企業内の従業員に向けています。企業には 1 万人以上の従業員がいるため、ログの数はインターネットアプリケーションの数には及びませんが、複数のサーバーと複数のインスタンスがあるため、ログを検索して問題を分析する際には頭を悩ませることがあります。いくつかの経験をまとめ、将来のログ管理作業に役立てます。
要約#
- ログの集約ツールを使用して、複数のノードのログを集約します。
- Logrotate を使用する
- ログのレベルを明確にする(warn、info、debug)
- 外部システムとのやり取りは明確に記録する
- TraceID を使用してイベントを追跡する
ログの集約ツールの使用#
ブラックボックス(black box)は、航空機用の電子記録装置の一つで、航空飛行記録装置とも呼ばれます。飛行データレコーダーとコックピットボイスレコーダーが内部に収められており、飛行機の各機械部品や電子計器にはセンサーが取り付けられています。これにより、飛行機が停止したり事故に巻き込まれる前の 30 分間の技術パラメータやコックピット内の音声を記録することができます。必要に応じて、記録されたパラメータを再生して、飛行実験や事故分析に使用することができます。
ユーザー数が一定数に達し、ビジネスシステムが非常に重要な場合、通常、アプリケーションを複数のノードで実行し、異なるサーバーで実行して高可用性を確保します。このようにすると、ログは異なるサーバーに分散されるため、特定のログを検索するには複数のサーバーで検索する必要があり、非常に面倒です。ログの集約ツールを使用すると、この問題を解決できます。
現在、Graylogを使用して複数のログを集約しています。Graylog にはサーバーがあり、他のアプリケーションは API を介してログを送信します。インターフェースは syslog または graylog が提供するログファイルの読み取りプログラムであるgraylog-collector-sidecarである場合があります。これにより、既存のビジネスアプリケーションを変更する必要はありません。
ログの検索を非常に簡単かつ迅速にするために、ElasticSearch をファイルの保存と検索ツールとして使用しています。ログの検索は非常に簡単で、ログの検索は非常に簡単な作業になります。
Graylog の他にも、ELK スタックもあります。
Logrotate の使用#
ここでの Logrotate は、Linux の logrotate ツールを指し、ログのローテーション方法を指します。アプリケーション内でログのローテーションを簡単に実装でき、ログファイルが指定されたサイズに達するたびにそのログをリネームし、新しいログファイルを作成します。アプリケーションサーバーには一定数のログファイルのみを保持し、過去のログファイルは自動的に削除します。また、Linux サーバーでは、Logrotate コマンドを使用してログファイルを自動的に圧縮することもできます。
ログレベルの使用#
ログを出力する際に、異なるイベントの重要性に応じて異なるログレベルを区別し、Graylog で収集した後、異なるイベントレベルを区別することで、関連する操作にメール通知を送信したり、検索時に迅速に特定することができます。
外部システムとのやり取りの記録#
システムが外部の他のシステムとのやり取りを行う場合、インターフェースは他のシステムとのやり取りの情報を記録する必要があります。リクエストがどのような内容で受信され、レスポンスがどのような内容で返されたかを記録することで、後続のトラブルシューティングで追跡できるようにします。
メンテナンス用の TraceID の作成#
マイクロサービスアーキテクチャが普及するにつれて、イベントはシステムの複数のコンポーネントで処理する必要がある場合があります。そのため、イベントが発生した場合には、一意の TraceID を作成し、ログの収集が完了した後、この TraceID に基づいて異なるコンポーネントでイベントの処理プロセスを特定できます。