本番環境でのロギングとは?
本番環境でのロギングは、実行中のソフトウェアからイベントのタイムスタンプ付き記録を発する実践で、システムが何をしたかの詳細で検索可能な軌跡を与えます。
logs は最も古く、最も柔軟なテレメトリの形式です。優れたロギング戦略は、実行中のシステムを説明可能なものに変えますが、不注意なロギングはノイズ、コスト、さらにはセキュリティリスクを生みます。技巧は、正しいものを、正しいレベルで、正しい形式でログに取ることにあります。
log とは何か
log エントリは離散的なイベントの記録です。リクエストを受信した、支払いが失敗した、job が開始した。各エントリはタイムスタンプとコンテキストを持ちます。フリート全体で収集された logs は、いつ何が起きたかを正確に再構築するために検索できる粒度の細かい履歴を形成します。
構造化 対 非構造化
非構造化ログは自由形式のテキストで、書くのは簡単ですが大規模にクエリするのは困難です。構造化ログは機械可読なキーと値のデータ(多くの場合 JSON)を発するため、正確にフィルタリングして集約できます - たとえば、ある region の一ユーザーのすべてのエラーなど。構造化ロギングは本番システムにとって現代の既定です。
ログレベル
- DEBUG:開発や深い調査のためのきめ細かい詳細。
- INFO:正常で注目に値するイベント。
- WARN:予期しないが回復可能な何か。
- ERROR:注意を必要とする障害。
溺れずにログを取る
logs が多いほど良いわけではありません。過剰なロギングは重要なエントリを埋もれさせ、ストレージコストを膨張させ、システムを遅くします。効果的なチームは意図的にログを取り、大量のパスにはサンプリングを使い、本番環境がデバッグノイズの洪水ではなく有用なシグナルを発するようにレベルを調整します。
セキュリティと機密データ
注意しないと、logs はしばしば secret、token、個人データを漏らします。logs をセキュリティ面として扱いましょう。機密フィールドをスクラブし、認証情報のロギングを避け、アクセスを制御します。password や API key を捉える log は、いつか起きる漏洩です。
重要なポイント
- logs は、実行中のソフトウェアからの離散的なイベントのタイムスタンプ付き記録です。
- 構造化ログは大規模にクエリ可能です。冗長度を制御するには log level を使います。
- 意図的にログを取り、機密データをスクラブします - logs はシグナルであると同時にリスクです。