ログの一元化
1)ログを一元化する理由
一元管理されたログは、オブザビリティ、監査、コンプライアンスの基盤です。Ones:- 入射ルートの検索を高速化します(request-id/trace-idによる相関)。
- 症状(エラー、異常)のシグナルアラートを構築できます。
- 監査証跡を与える(who/when/what did it);
- 保持および貯蔵の統一による安価。
2)基本原則
1.構造化ログ(JSON/RFC5424)のみ-キーのない「フリーテキスト」はありません。
2.キーのユニフォームスキーム:'s、レベル、サービス、env、地域、テナント、trace_id、 span_id、 request_id、 user_id(マスク)、msg、 kv……'。
3.デフォルトの相関関係:ゲートウェイからバックエンドとログへのtrace_idを反転します。
4.ノイズの最小化:正しいレベル、サンプリング、繰り返し重複排除。
5.設計による安全:PIIのマスキング、RBAC/ABACの不変性。
6.経済:熱い/暖かい/冷たい、圧縮、凝集、TTLおよび水分補給。
3)典型的なアーキテクチャ
EFK/ELK: (Fluent Bit/Fluentd/Filebeat)→(Kafka-опц。)→(Elasticsearch/OpenSearch)→(Kibana/OpenSearchダッシュボード)ユニバーサル検索と集計。
Loki-like (Log indexing by labels): Promtail/Fluent Bit→Loki→Grafana。大容量、強力なラベルフィルター+線形表示のためのより安い。
クラウド:CloudWatch/Cloud Logging/Log Analytics+コールドストレージ(S3/GCS/ADLS)および/またはSIEMにエクスポートします。
Data Lakeアプローチ:荷主→オブジェクトストレージ(寄木細工/氷山)→安価な分析クエリ(Athena/BigQuery/Spark)+最後のN日間のオンライン層(OpenSearch/Loki)。
推薦:水分補給の機能の湖のオンライン層(7-14日の熱い)そしてアーカイブ(月/年)を保つため。
4)ログの図とフォーマット(推奨)
最小JSON形式:json
{
"ts":"2025-11-01T13:45:12.345Z",
"level":"ERROR",
"service":"payments-api",
"env":"prod",
"region":"eu-central",
"tenant":"tr",
"trace_id":"0af7651916cd43dd8448eb211c80319c",
"span_id":"b7ad6b7169203331",
"request_id":"r-7f2c",
"user_id":"", // masked
"route":"/v1/payments/charge",
"code":"PSP_TIMEOUT",
"latency_ms":1200,
"msg":"upstream PSP timeout",
"kv":{"provider":"psp-a","attempt":2,"timeout_ms":800}
}
標準:時間のためのRFC3339、セット'TRACE/DEBUG/INFO/WARN/ERROR/FATAL'からのレベル、snake_caseのキー。
5)ロギングレベルとサンプリング
DEBUG-dev/stage;旗によってそしてTTLとprod。
INFO-リクエスト/イベントのライフサイクル。
WARN-SLOに影響を与えない疑わしい状況。
ERROR/FATAL-リクエスト/ユーザーへの影響。
- 繰り返しエラーのrate-limit (1/sec/keyなど)。
- トレースのテールサンプリング(「悪い」要求に対してのみ完全なログ/トレースを残します)。
- dynamic:エラーの嵐の場合は、詳細を減らし、要約を保存します。
6)ログの配信(エージェントと荷送人)
ノード上で:Fluent Bit/Filebeat/Promtailは、標準出力ファイル/juntrals、解析、マスキング、バッファリングを収集します。
ネットワークキュー:Kafka/NATS:ピーク平滑化、リトレイ、注文のため。
信頼性:バックプレッシャー、ディスクバッファ、配信確認(少なくとも1回)、idempotentインデックス(キーハッシュ)。
エッジでフィルタリング:ネットにぶつかる前に「おしゃべり」と秘密を破棄します。
7)索引付けおよび貯蔵
時間パーティショニング(毎日/毎週)+'env/region/tenant'(インデックステンプレートまたはラベル経由)。
ストレージ・レイヤー:- ホット(SSD、 3-14日):迅速な検索とアラート。
- 暖かい(HDD/フリーザー、 30-90日):時々私達は見ます。
- Cold/Archive(オブジェクト、月/年):コンプライアンスとまれな調査。
- 圧縮と回転:ILM/ISM(ライフサイクルポリシー)、gzip/zstd、ダウンサンプリング(集計テーブル)。
- 水分補給:調査のための「ホット」クラスタへのアーカイブされたバッチの一時的なロード。
8)検索と分析: サンプルクエリ
インシデント:タイムフィルタ× 'service=……'× 'level>=ERROR' × 'trace_id'/'request_id'。
プロバイダ:'code: PSP _'と'kv。provider: psp-a'をリージョンごとにグループ化しました。
異常:メッセージの頻度の増加またはフィールド分布の変化(ML検出器、ルールベース)。
監査:'category: audit'+'actor'/'resource'+result。
9)メトリクスとトレースとの相関
同一の識別子:'trace_id/span_id'すべての3つの信号(メトリック、ログ、トレース)。
グラフからのリンク:p99パネルから'trace_id'によるログへのクリック可能な遷移。
リリースアノテーション:クイックバインディングのためのメトリックとログのバージョン/カナリア。
10)安全性、PIIおよびコンプライアンス
フィールド分類:PII/secrets/finances-入り口でマスクまたは削除(Fluent Bit/Luaフィルタ、Re2)。
RBAC/ABAC: role、 row-/field-level-securityによるインデックス/ラベルアクセス。
監査および規制要件に対する不変性(WORM/追加のみ)。
保持と「忘れる権利」:キーによるTTL/削除、トークン化'user_id'。
署名/ハッシュ:重要なジャーナルの整合性(管理者アクション、支払い)。
11) SLOおよびパイプラインログメトリック
配達:99。ホットレイヤーのイベントの9% ≤ 30〜60秒です。
損失:<0。(参照印によって)24時間の01%。
検索の可用性:≥ 99。28日で9%。
リクエストのレイテンシ:典型的なフィルターでp95 ≤ 2-5秒。
コスト:$/1Mイベントと$/ストレージ/GBレイヤー。
12)ダッシュボード(最小)
パイプラインの健康:荷送人の入口/出口、リトレイ、充填緩衝、カフカラグ。
サービス/コードによるエラー:トップN、トレンド、パーセンタイル'latency_ms'。
監査アクティビティ:管理アクション、プロバイダのエラー、アクセス。
経済学:ボリューム/日、インデックスの成長、レイヤー別の値「、高価な」クエリ。
13)操作とプレイブック
Log storm:エージェントで積極的なサンプリング/レート制限を有効にし、バッファを上げ、ストリームの一部を一時的に暖かく転送します。
スキーマドリフト:新しいキー/タイプの出現を警告し、スキーマカタログネゴシエーションを開始します。
検索が遅い:インデックスの再構築、レプリカの増加、「重い」クエリの分析、古いバッチのアーカイブ。
セキュリティインシデント:即時不変性が有効になっている、オフロードされたアーティファクト、ロールによって制限されたアクセス、RCA。
14) FinOps: ログに壊れて行かない方法
冗長性を削除:マルチラインスタックトレースを'スタック'フィールドに変換し、サンプルリプレイを行います。
TTLを有効にする:'env'/'level'/'category'で異なる。
Loki/archive+on-demand rehydrateを使用して、まれにアクセスできます。
パーティーと圧縮:より大きなパーティーは安価ですが、検索SLAに注意してください。
頻繁な評価(毎日の集計)を実現します。
15)器械の例
Fluent Bit(マスキングとOpenSearchへの送信)
ini
[INPUT]
Name tail
Path /var/log/app/.log
Parser json
Mem_Buf_Limit 256MB
[FILTER]
Name modify
Match
Remove_key credit_card, password
[OUTPUT]
Name es
Host opensearch.svc
Port 9200
Index logs-${tag}-${date}
Logstash_Format On
Suppress_Type_Name On
NginxアクセスログJSON trace_id
nginx log_format json escape=json '{ "ts":"$time_iso8601","remote":"$remote_addr",'
'"method":"$request_method","path":"$uri","status":$status,'
'"bytes":$body_bytes_sent,"ua":"$http_user_agent","trace_id":"$http_trace_id"}';
access_log /var/log/nginx/access.json json;
OpenSearch ILMポリシー(ホット→ウォーム→削除)
json
{
"policy": {
"phases": {
"hot": { "actions": { "rollover": { "max_age": "7d", "max_size": "50gb" } } },
"warm": { "min_age": "7d", "actions": { "forcemerge": { "max_num_segments": 1 } } },
"delete":{ "min_age": "90d", "actions": { "delete": {} } }
}
}
}
16)実装チェックリスト
- 受け入れられたフィールドレイアウトとログレベル;trace/request-id相関が有効になります。
- マスキングとバッファを使用したエージェント(Fluent Bit/Promtail)を構成。
- オンライン層(OpenSearch/Loki/Cloud)とアーカイブ(S3/GCS+寄木細工)を選択。
- ILM/ISM+ホット/ウォーム/コールドリテンションポリシー、水分補給プロセス。
- RBAC/ABAC、監査不変性、アクセスログ。
- パイプラインのダッシュボード、損失アラート/遅延/ディスクバッファ。
- Playbook:ログストーム、スキーマドリフト、遅い検索、セキュリティインシデント。
- 財務上限:$/1Mイベント、「高価な」要求のクォータ。
17)アンチパターン
構造のないテキストログ→フィルターや集計ができない。
INFO→ボリューム爆発で巨大なスタックトレース。
すべてのサービスの相関→「フラッタリング」の欠如。
「すべてを永遠に」→飛行機のようにクラウド請求書を格納します。
ログの秘密/PII→コンプライアンスリスク。
販売→ドリフトと長い検索ダウンタイムの手動インデックス編集。
18)ボトムライン
ログの集中化は、スタックだけではなく、システムです。標準化されたスキーマ、相関関係、安全な荷送人、レイヤードストレージ、および厳格なアクセスポリシーにより、ログはSRE、セキュリティ、および製品向けの強力なツールになります。正しいリテンションとFinOpsは予算を維持し、パイプラインのSLOとプレイブックは調査を迅速かつ再現可能にします。