私は1992年にテクノロジーを始めて以来(30年以上前に!),私は「より少ないことによりより多くを成し遂げる」と期待されていた無数のシナリオに遭遇しました。 クラウドの近代化プロジェクトにおけるバックエンドアーキテクチャとしての私の経験から一つがわかります。 —logging that we relied heavily on for debugging and incident analysis. The decision was driven by the high cost of log ingestion on our observability platform. この決定は、私たちの観察可能なプラットフォーム上のログの摂取の高コストによって引き起こされました。 minimize or eliminate service-level logging これが効いた(それが起きるまで) 本当に、あの日記は必要でした! 避けられないほど、予期せぬ問題が発生し、私たちは欠けているログを必要としていました. 彼らは根源の原因を特定する唯一の方法であることが判明しました. 彼らなしでは、解決策なしで数時間経過し、不確実性が増加し、不安がチーム全体に従った。 // Sample (but not the real) log line removed during our cost-cutting { "timestamp": "2025-03-21T14:05:03Z", "service": "preference-engine", "level": "ERROR", "message": "Worker queue overflow: unable to dispatch to worker pool", "requestId": "abc123", "userId": "admin_42" } 私たちがそれを保持していたら、単純な構造化されたエラーログ(上記のような)は、単純なログクエリ(下記のような)でログプラットフォームで簡単にフィルタリングされ、問題を理解し、診断し、修正することができました。 _sourceCategory=prod/preference-engine "Worker queue overflow" | count by userId, requestId 木材の採掘を劇的に減らすよう言われると、プロジェクト全体が脆弱な状態に陥る。 Lean Doesn't Mean Hungry for Resources リソースに飢えているという意味ではありません。 明確に言えば、「より多くを減らす」という考え方は、本質的に悪いものではありません。多くのスタートアップは、重要な優先事項に焦点を当て、軽量で効率的なソフトウェアを活用することで繁栄します。 しかし、これは「良い」タイプの lean ではありませんでした。そして、クラウドに移行するための私たちの期限は固定されました。我々はブラウザの削減日に対抗していました。これは、サービスをクラウドネイティブの設計に再書き換え、クライアントチームと連携し、圧力の下で提供することを意味しました。 予想外のシナリオの根本原因を特定するのに役立ちました。最初は大丈夫でしたが、それぞれの方法で作業している間に必要なログを挿入しました。 we relied on logs to resolve our issues しかし、収納が削減されたとき、チームは暴露され、私たちの主な安全網は消えました。 ROOT CAUSE WITHOUT A NET 内部テストは順調に進み、生産が近づくと、私たちは新しいクラウドベースのアーキテクチャに自信を感じました。 しかし、私たちはすぐに私たちの信頼が間違っていて、私たちのテストカバーが欠けていたことに気づきました。 私たちが生産中にあり、実際の顧客がプラットフォームを使用していたとき、予想外のエッジケースが現れました。そしてもちろん、詳細なログや十分な観測性がなければ、問題を調査する方法がありませんでした。 バックエンドテストとフロントエンドの生産クライアントの両方のログがあれば、何が起きているかを知り、チーム(そしてユーザー)に警告を与えることができたでしょう。 _sourceCategory=prod/preference-engine OR prod/frontend error | join ( _sourceCategory=prod/tester-feedback “queue error” ) on requestId | fields requestId, _sourceCategory, message しかし、記録がなければ、現地での出来事の再現はほぼ不可能でした. 実際の使用事例にはあまりにも多様性がありました. 我々は部分的な記録を再起動しようと試みたが,これは,実行可能な洞察を提供することなく,私たちが削減するよう求められた摂取コストの増加につながっただけでした. それは困難な立場である:ユーザーに影響を与える問題があることを知り、それを説明できないこと。 MTTR対信号品質 もう一つの問題は、私たちの事件のリトルスピクティブでは、回復までの時間を意味するということでした( )はタイトルメトリックとして扱われていたが、MTTRはほとんどの場合、根本原因ではなく症状であることが判明した。 MTTR 業界のベンチマークは、通常、エリートチームが1時間以内にMTTRを達成していることを示していますが、私たちが気づいたのは、スピードは自動化だけではありません。 一般的な 500 エラーや累積メトリックからの遅延警告などの低信頼性の信号は、本当に役に立ちません。 high-fidelity signals 対照的に、 userId、requestId、および service trace を含む構造化されたログなどの詳細な文脈的なシグナルは、根本原因に直接カットします。 あなたのログがこれらの質問に答えていない場合、MTTRはチームの速度ではなく、信号の明確性の問題です。 Sumo Logicのモデルが日を救った方法 では、私のクラウドの近代化プロジェクトの間、何が異なり、より良いものになっていたのでしょうか。 まず、私たちはより良いログアナリティクスとアプリケーションパフォーマンスモニタリング(APM)を持っていたら良かったと思います。そして、APM、ログ管理、サービスモニタ、アラート、および定義されたメトリクスは、機能的成功または失敗と密接に一致していました。 わたしは、わたしの前世に戻りたい」と語った。 「I explored how Pay-per-analysis モデルを提供することで、観測スペースを妨げました. Logs can be ingested continuously, but you only pay when you need to query or analyze them. Logs can be ingested continuously. Logs can be ingested continuously, but you only pay when you need to query or analyze them. DevSecOps: it's time to pay for your demand, not ingestion. あなたの要求ではなく、摂取のために支払う時間です。 SUMO 論理 あなたは完全なユニットテストカバーがないチームですか? リアルタイムの警告や細かいメトリックの欠如に苦しんでいますか? 狭い予算で? ログの欠如で苦しんでいますか? ゼロコストの完全な摂取により、チームは心配せずに必要に応じてログできます。そして、その出来事がようやく起こった時(そして起こる時)、分析は、顧客の影響やビジネスの継続性に直接関連する合理的なコストで、要求に応じて起動することができます。 このアプローチはコントロールを回復し、チームが最も重要なときに徹底的に調査する権限を持つため、不安を低下させます。 But Wait: You Also Need Machine-Assisted Triage to Clear Up Your Queries (あなたもあなたの質問をクリアするために機械支援トライアルが必要です) 現代の観察性は、すべての素晴らしいログデータを持つことだけでなく、そのデータをどこで見るべきかを知ることでもあります。 . high-fidelity signals あなたが無制限の摂取量を持っているとき、あなたは多くのデータを持っています。そしてあなたが情報を探し始めるとき、あなたは始める場所が必要です。 単一のクエリを書く前に、異常な振る舞いを自動的にグループ化し、外観を検出し、サービス間で関連する信号を表面化します。 machine-assisted triage tools 舞台裏では、Sumo Logicは統計アルゴリズムと機械学習を使用して、 Cluster logs by similarity (even if phrased differently across nodes) (クラスターのログは類似性によって作成されます。 メトリックやログ(例えば、サービス、地域、またはユーザーコホートごとにエラーピーク)の外見を検出します。 異常をメタデータ(例えば、AWS タグ、Kubernetes pod info、デプロイマーカー)で豊かにします。 Natural language processing clusters logs by semantic similarity, not just string matching. 自然言語処理のクラスターは、文字列の類似性ではなく、単に文字列の合致によってログを記録します。 これは、無制限の摂取量の高い環境で特に有用です. 何万人ものログラインをシフトする代わりに、関連するイベントのグループを表す「ログ署名」 - 凝縮パターンを取得します。 ワークフローの例 _sourceCategory=prod/* error | logreduce この単一コマンドは、騒々しいログデータを、以下のような動作可能なバケットにクラスターします。 Error: Worker queue overflow Error: Auth token expired for user * Error: Timeout in service * クラスター化すると、チームはより深い文脈に転換することができます。 | where message matches "Auth token expired*" | count by userId, region 結果? より少ない盲目検索、より速い意思決定経路、事故の際の不安を減らす。 結論 「より多くを減らす」という哲学は、エンジニアリングチームを不利な立場に置く必要はありませんが、適切なツールが伴う必要があります。 私の読者は私の個人的な使命の宣言を思い出せますが、これはIT専門家に適用できると思います。 「知的財産の価値を拡大する機能/機能を提供することに時間を集中してください. Leverage frameworks, products, and services for everything else." - J. Vester 「知的財産の価値を拡大する機能/機能を提供することに時間を集中してください. Leverage frameworks, products, and services for everything else." - J. Vester この記事では、ゼロコスト摂取モデルがこのミッションにどのように一致するかを調べました. それはチームが根本原因を迅速に特定し、停止時間を減らし、ストレスレベルを下げるのに役立ちます。 本当に素晴らしい一日を!