ますます複雑化するデジタル時代においては、最新のソフトウェア システムを管理する上で可観測性が主な鍵となります。可観測性の最も重要な柱の 1 つはロギングです。ロギングがなぜそれほど重要なのか、そしてそれを最適に活用する方法を見てみましょう。
ロギングは、システム内のアクティビティやイベントを記録するプロセスです。これには、エラー メッセージ、ユーザー アクティビティからシステム パフォーマンスまで、さまざまな情報が含まれます。ログをシステムの飛行機の「ブラック ボックス」と考えてください。何が起こっているかを常に記録し、必要なときに洞察を提供できるようにします。
ログが重要である理由として考えられるいくつかの点を次に示します。
より迅速な問題解決
適切なログがあれば、開発チームは推測に頼らずに根本原因を特定できます。虫を探すときは宝の地図を持っているようなものです!
セキュリティの改善
ログは、不審なアクティビティを検出するための「スパイ」となる可能性があります。セキュリティ チームは、消防署を常に待機させるなど、脅威に対してより迅速に対応できます。
パフォーマンス分析
ログを通じて、システム内のボトルネックを特定できます。アプリの健康状態を診断してくれる主治医がいるようなものです。
ユーザーの行動を理解する
ユーザー アクティビティ ログは、製品がどのように使用されているかについての貴重な洞察を提供します。これは、顧客の好みを常に観察して報告するパーソナル アシスタントがいるようなものです。
ロギングの利点を最大限に活用するために、以下に実行できるベスト プラクティスをいくつか示します。
これらの適切なログ レベルを使用すると、ログを緊急度で並べ替えるなど、情報を迅速にフィルタリングするのに役立ちます。
以下は、Golang 言語を使用してさまざまなレベルのログを表示する例です。ここではログラスを使用します。
package main import ( "github.com/sirupsen/logrus" ) func main() { log := logrus.New() log.SetLevel(logrus.DebugLevel) log.Debug("Starting app..") log.Info("User has successfully logged in") log.Warn("CPU usage exceeds 80%") log.Error("Failed to save data to database") log.Fatal("A critical error occurs, the application will stop") }
以下は、上記のいくつかのログ レベルの説明です:
各ログ エントリは、何が起こったのかを理解するのに十分なコンテキストを提供する必要があります。これには以下が含まれます:
これは、追跡に役立つコンテキスト情報を含むログを出力するときのコードの例です。
package main import ( "github.com/sirupsen/logrus" "time" ) type UserAction struct { UserID int Action string Timestamp time.Time } func main() { log := logrus.New() log.SetLevel(logrus.DebugLevel) // Use format json log.SetFormatter(&logrus.JSONFormatter{}) // Dummy data action := UserAction{ UserID: 12345, Action: "checkout", Timestamp: time.Now(), } // Print log log.WithFields(logrus.Fields{ "user_id": action.UserID, "action": action.Action, "timestamp": time.Now().Format(time.RFC3339), "session_id": generateSessionID(), "module": "payment_processor", "ip_address": "192.168.1.100", }).Error("Payment failed") } func generateSessionID() string { return "sess_abc123" }
将来のトレースの実行を容易にするコンテキスト情報のいくつかの要素が含まれていることがわかります。問題の利便性とは何ですか。つまり、レベルに基づいてログを検索できます。たとえば、上記のコード例のエラー レベルだけでなく、入力した情報に基づいて時間などにも基づいてログを検索できます。
一貫したログ形式により、特に自動ツールを使用する場合、解析と分析が容易になります (ツールについては後述します)。また、書式設定により、ログ レベル、メッセージ、時間などの条件に基づいてログを検索することも容易になります。形式の例:
[TIMESTAMP] [LEVEL] [MODULE] [MESSAGE]
または、上記のコード例の結果のように、簡単に解析できる JSON 形式:
{ "action": "checkout", "ip_address": "192.168.1.100", "level": "error", "module": "payment_processor", "msg": "Payment failed", "session_id": "sess_abc123", "time": "2024-06-26T20:59:02+07:00", "timestamp": "2024-06-26T20:59:02+07:00", "user_id": 12345 }
ログのローテーションにより、ログ ファイルが大きくなりすぎて管理が困難になるのを防ぎます。これには以下が含まれます:
ログ ファイルのサイズを制限します。
新しいログ ファイルを定期的に (例: 毎日または毎週) 作成します。
古いログ ファイルをアーカイブまたは削除します。
Linux 上の logrotate などのツール、またはローテーションをサポートするロギング フレームワークを使用します。
セキュリティとプライバシーはログ記録において非常に重要です:
パスワードやクレジット カード情報などの機密データをログに記録しないでください。
必要に応じて、個人データをマスクまたは暗号化します。
ログ ファイルへのアクセスが許可された担当者のみに制限されていることを確認します。
会社のポリシーと規制に従って古いログを削除する保持ポリシーを実装します。
システムの複雑さが増すにつれて、ログを監視および分析するための高度なツールの必要性もますます重要になります。可観測性とログ分析に役立つ一般的なツールをいくつか紹介します:
グラファナ
Grafana は、ログ データを視覚化するためのオープンソース プラットフォームです。これらのツールは、ログを含むさまざまなデータ ソースに統合できます。カスタマイズされたインタラクティブなダッシュボードの作成が可能になります。メトリクスとログのリアルタイム視覚化に適しています。
ニューレリック
New Relic は、オールインワンの可観測性プラットフォームです
ログ分析、トレース、メトリクスを 1 か所で提供します。異常を検出し、問題を関連付けるための AI 機能もあります。
大規模なアプリケーションやインフラストラクチャの監視に適しています。
ロキ
Loki は、軽量でコスト効率の高いログ集約システムです。 Loki は Grafana とうまく連携するように設計されています
Prometheus
と同様に、ラベルベースのインデックスを使用します。
すでに Prometheus と Grafana を使用している組織に最適です。
AWS CloudWatch Logs インサイト
AWS のこの統合ログ分析サービスを使用すると、AWS のさまざまなサービスからのログのクエリと分析が可能になります。
RDS およびその他のデータベース サービスでの遅いクエリを検出する機能
他の AWS サービスとの簡単な統合。
ロギングは単なる追加機能ではなく、信頼性の高いシステムを構築する上で不可欠なコンポーネントです。適切に実装すると、ロギングがスーパーセンサーとなり、システム動作を完全に可視化し、問題が発生する前に防止し、問題が発生した場合の迅速な解決に役立ちます。
それでは、今日から適切な伐採実践への投資を始めましょう。複雑なテクノロジーの世界では、良い丸太が嵐の真っただ中で道しるべとなることを忘れないでください!
追加情報がある場合は、下のコメント欄にご入力ください。
Github リポジトリ
アプリケーションログとその重要性
ログ管理はなぜ重要ですか?
2024 年の 10 の可観測性ツール: 機能、市場シェア、最適なものを選択してください
トップ 20 のベスト ログ分析ツールとログ アナライザー (長所と短所)
以上が可観測性 - ロギングが重要な理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。