過去の十年の大部分のために、可観測性は不快な秘密を持った:観察できるものへの主な制約は技術的ではなく経済的だった。チーム は Elasticsearch クラスタを実行し、ストレージ請求はトラフィックより速く成長し、標準応答は データを投げることだった — 保持を90日から7日に切り、ログを10パーセントでサンプル、デバッグ出力を完全にドロップ。次に、必然的に、インシデント は隙間に着地。それを説明する データ 生存していた が、メモリのポストモーテム アクション項目の保持を増やす」という読みながら、誰も 資金がない。
経済は ツール の新世代 が高価な ローカル ディスク から安いオブジェクト ストレージ — S3、GCS、Azure Blob. に ログ ストレージ を移動したため変わった。ストレージ コストが桁少ないとき、保持はもう予算交渉ではない。このガイド は そのシフト をカバー:なぜ古い アーキテクチャ が高かったのか、オブジェクト ストレージ モデルがどのように機能するか、およびツール がそれを実装する — Quickwit 検索可能なログとトレース保持のため、OpenObserve 完全可観測性プラットフォームとして、Vector それらを供給するパイプライン として。
なぜ古い アーキテクチャ は高かった
Elasticsearch とそれの上に構築されたスタック は 要求的用例のため設計 : インタラクティブ フルテキスト 検索 データを変更する 上で、ミリ秒 で結果。配信するために、彼らは インデックス を保つ高速ローカル ディスク に常に実行 ノード をアタッチ、再現の複製 はすべてのシャード のため耐久性と可用性、そしてメモリ で実質 インデックス 構造 を保持。これらのそれぞれ選択 は 検索 のため理性的で、そのすべて は高い。
費用 は 驚く チーム の方法 で複合。ストレージ が規定された — 満杯かどうか ディスク のため支払い、そして アウト を実行 するのは 計画停止 ため過度 — ので 規定。複製 がそれを 2 または 3 倍にする。ノード は継続的に実行しなければならず、ほとんどの ログ その後 読まれたことはない。そしてスケーリング 結合 :より多く ストレージ が必要なことは、ノード を追加するということは、CPU とメモリ のため支払うということを必要としなかった。結果 は 保持 と共に陡峭に上がる 費用 曲線で、それは「保持を削減」が 標準 費用 制御 レバー なった 理由。
さらに深い 不一致 はログ の作業負荷が Elasticsearch のために最適化された ではない。ログ データ は追加専用 — 書き込み 1 回、更新なし。それは圧倒的に 冷たい : 大多数 は クエリ されることなく、small 分数は インシデント 中にクエリ されること、その場所で 数 秒 レイテンシ は 完全 に 受け入れられる。ミリ秒 インタラクティブ 検索 を払い、変更不可能なドキュメント 機械 が ペタバイト の 誰も読まない 書き込み 1 回 データ は アーキテクチャル エラー 下 請求書である。
オブジェクト ストレージ モデル
新しい アーキテクチャ は それらの プロパティ から 開始。データ が追加専用 およびほぼ 冷たい 場合、 それをオブジェクト ストレージ に保存 — これは ザクザク テラバイト 当たり ローカル ディスク より 桁 安い、事実上 無限、およびレプリケーション を管理する必要なく デフォルト によって耐久。次にコンピュート をストレージから 分離 : オン デマンド オブジェクト ストレージ から読み込む クエリー ノードを実行し、どのくらい データ を保持するかから独立してスケール。別年 のログ を保存 ストレージ のみ費用 、より多くのノード ではない。
キャッチ、もちろん、のは オブジェクト ストレージ は ローカル ディスク に相対的に 遅い — すべて 読み込み は 意味 のあるレイテンシ を持つ ネットワーク リクエスト。エンジニアリング インサイト が それが 機能 する は形式とインデックスで補う できる。データ は 圧縮 列 形式 (Parquet は 一般的 ) と組み合わせて 書き込まれるインデックス 構造は、クエリ を許可 に フェッチ のみ バイト 範囲 それが 実際に必要ながむしろ スキャン すべてのもの。積極的なキャッシング は ホット データ を 近く に 保持。結果 は 返す クエリ は秒 ローカル ディスク インデックス ができる ユーザー対面 検索 ボックス のため ミリ秒 ではなく — この 完全に 受け入れられる 用例 の ため 最適でなく ログ 検索 、これは 正確に なぜ このアーキテクチャ 可観測性 で 合い、一般的な 検索 でない。
何 これ buys、お金 の 向こう、は 動作 の 変更。保持 が安い ときは、前もって データ を破棄するのを停止し、次 インシデント への 答えがまだ 存在 する可能性 が高い。その のは 本当の ペイオフ : より小さい 請求書ではなく、より少なく 調査 が データ が削除 されたため 行き止まりなり。
Quickwit : ログとトレース用に構築 された検索
Quickwit は アイデア の 純粋 な式。それ は Rust 検索 エンジン はじめから 追加 専用 データ のため 設計 オブジェクト ストレージ 上 —ローカル ディスク をされない のために インデックス とクラスター 状態 マシン のため それら、インデックス は S3 で 不変スプリット として 住むため。それは 提供 本当の フルテキスト 検索 (単に ラベル フィルター ではなく) , さらす Elasticsearch 互換 検索 API 移行 を容易にする、そしてサーブ として、ネイティブ Jaeger バックエンド トレースのために、どの OpenTelemetry を既に実行しているチーム のために 自然 フィット になる。
Quickwit の 甘い スポット は 安い、検索可能、ログとトレース のための長期保持 検索 能力 が必要。保持 管理 が 単に なる — 期限切れ 古い データ は 単に 古い スプリット を削除 — そのフォーカス スコープのリソースは 機能 : 検索 エンジン、シンプルではなく 完全 可観測性 プラットフォーム,そのための あなた は あなた が連れてくる ダッシュボード (Grafana)、あなたが連れてくる 警告、あなたが連れてくる メトリクス スタック。 チーム はすでに それらの部分を 持ってやすい と 特に ストレージ コスト のための修正が必要とする、そのフォーカス は 機能 。
OpenObserve : バッテリー内蔵 プラットフォーム
OpenObserve は 同じ ストレージ の洞察 を取得し、完全 プラットフォーム をその周りに ラップ。それ は ハンドルログ、メトリクス、トレース 1 つのシステム で、オブジェクト ストレージ に 圧縮 Parquet として データ を保存し、提供 組み込み UI、SQL クエリ、ダッシュボード、警告 エンジン — すべて single Rust バイナリ は 本当に 立ち上げ が 簡単。それは OpenTelemetry をネイティブ に取り込み、Prometheus リモート書き込み をサポートするため、既存のインストルメンテーション にスロット。
呼び訴え は 統合。すべての 1 つのもの を実行するか、搜索 エンジン + Grafana + 警告 スタック + 分離 メトリクス ストレージ の代わりに ときは 各々追加 コンポーネント の品質 更新する あるもの デバッグ 3 AM. の そして設定 と。小 と メディアム チーム 特に、操作 実行 できる削減 モノリシック コアコンポーネント より モジュール のための トレードオフを比較 — より少なく 柔軟性 とエコシステム Grafana または Elastic と世界 より 若い。統合 の場合 が操作 単純性 より見合う モジュール選択 するトリッガー。
Vector : マイグレーション セーフ にする パイプライン
どちらか バックエンド は データを得 ることができない 場合 重要 , そしてこれは場所 Vector になる 静かな リンピン。Vector は高 パフォーマンス、ベンダー 非依存 パイプライン : ログ、メトリクス、トレース を任意にソース から 収集し、トランスフォーム を通じて VRL で再形成 , そして任意 のシンク に配信。Rust で書く、それ は Logstash または Fluentd のほんの一部 リソース を使用 — プローブ がコアノード で実行 される 場合 重要 。
それの 戦略的 値 は それ がアプリケーション と バックエンド の インストルメンテーション を分離。アプリケーション とエージェント を Vector にシップ データ;Vector がどこに行くかを決定。マイグレーション が フリート全体 再インストルメンテーション プロジェクト から 構成 変更 に なり — そして、決定的に、それ を許可デュアル書き込み トランジション 中 既存 スタック と 新しい 1 つ への同じ データ を送信 ができる 置き換え 検証 ができる 本当 トラフィック 上 で切り越す前。Vector の トランスフォーム も コスト カット ソース:デバッグ ログの 削除、サンプル 高い容量 イベント、そして保存 前に PII をマスク すべての削減 すべてのもの を支払う。バックエンド 変更 するつもり のない チーム も多く , 単に Vector ボリューム 削減 で自分を支払う。
これなしで採用 危険な マイグレーション
感覚的 経路 増分 , そして Vector はそれ セーフ にする。スタート バイ パイプライン を前に置く 既存スタック に。 デプロイ Vector、その ソースー をポイント, そして 持 っ で あるもの 転送 に 今日。ナッシング 機能的 変更、だが あなた が得ている コントロール ポイント — そして あなた が 即座に 使用できる 変換 をノイズを削除 と 現在 コストをカット。
その後 デュアル 書き込み候補 バックエンド に。 別 シンク をポイント Quickwit または OpenObserve する を追加し、本当 本番 データ フロー 両方 に。今 あなた が誠実に 評価可能 :クエリ が十分に 高速 か? 検索 シンタックス が カバー ニーズ か? ストレージ はどのくらい 実際に コスト ボリュー ムで ? これは 遠く ベター 根拠 のダッシュボードより 気をつけ, そして それ トランジション 中 新しいバックエンド のストレージのみ コスト。
ホット クエリー にシフトする 前に 保持 をシフト。 低リスク 中間 状態 は 保つ 短保持 ホット データ あるような場所ながら ロング保持 データ を送信 オブジェクト ストレージ に。コスト勝 取得 (長保持 のうち高価 部分) ずに 賭け インシデント 応答 未慣れ システム 上で。**次に クエリー を取得 段階的に移行 , 使用 を開始 非緊急 分析 とそれが 動き インシデント 応答 へと チーム 信頼 がしまった。保持 スイッチ 古い 実行 まで 少なくとも を通じた リアル インシデント には新しい 上 — 発見 時間 それが 働くことはできるか サプライズ が時間 あなた 最小 まず望んだ。
あなたが与える 何 , 誠実に
すべてのアーキテクチャ の何 をトレード、そしてそれ が 明示的 マイグレーション をして 情報さて 誘い 知識 ない 下 オブジェクト ストレージ へ 費用 かの 価値があるもの。
クエリー レイテンシ。 オブジェクト ストレージ から の読み込みは ネットワーク リクエスト、クエリー 返す 秒 温かい 代わり ローカル ディスク インデックス ができる サブ秒 応答。インシデント 中 ログ 検索 のため これは 本当に微調整 — あなたが 結果を 読む、あなた がタイプ 正しい ように — あり、 が構築 ワークフロー が即座 インタラクティブ フィルター または ダッシュボード にしろ すべてのリフレッシュ の上で 打つ火 彼ら は 遅い と感じる。 テスト クエリー パターン 本当 ベンチマーク 合成 代わりに。
エコシステム 成熟。 Elasticsearch には 年の 無数 統合 , チュートリアル , Stack Overflow 答え , 既に スケール で それを 走る エンジニア。新しい ツール は 小さい コミュニティ , 薄い ドキュメンテーション エッジ 場合 のため, より少なく 人 あなた が雇用 得ることができた これを スケール で。いつ 不便 な時間 で 何 か 壊れる, その差 は 本当の。Elasticsearch 互換 API は マイグレーション をやわらげるが ナッシング そのギャップをなくす。
機能 サーフェス。 Elasticsearch は 遠く その先に ログ 検索 で、 複雑 集約、 マシンラーニング 仕事, 関連性 微調整, 豊かな クエリ DSL。目的構築 ログ エンジン 意図的 に より少なく をしてください。依頼 そてない 能力, 検証 等価物 が存在 してもマイグレーション をコミット した前 むしろ 知ら 未知 の。
操作 不慣れ。 あなたの ランブック, 警告, およびいただきました 直感 は 現在 スタック に キャリブレーション。新しい バックエンド と手段 新しい 失敗 mode と期間 チーム は より遅い その 問題 を診断。これ は 非常に 強い 議論 デュアル 書き込み アプローチ のためと 保つ 古い スタック 実行 少なくとも に本当 インシデント 経由 — あなた は 学習 曲線 が起こって いますが 依然として は フォールバック。
これらの のいずれも アウトウエイ 桁 のコスト 削減 ほとんど チーム, 特に のため が削除 データ が 持てるはずでしたを現在 あり。だが 彼ら は 理由 のため マイグレーション 一度にすべて ではなく 慎重に。
底線
可観測性 が劇的に 安くなった 理由 ツール化 やっと 作業負荷 にマッチ。ログ は追加 専用 およびほぼ 冷たい、 あるから ストレージ彼ら上 レプリケーション、常時オン ローカル ディスク ミリ秒 変更不可能 検索 のために最適化 されて の大きな 恐怖 を支払う だった プロパティー データ は 不要。 オブジェクト 移動 ストレージ を ビットと 列 フォーマット すると スマート インデックス ミリ秒 分 トレード — ロゴ 検索 のため完全に受け入れられます — とストレージ コスト 削減 桁。 Quickwit が配信 フォーカス、検索可能なログとトレース ストレージ Jaeger バックエンドを持つと ; OpenObserve配信 UI ダッシュボード , 警告 を持つ統合 プラットフォーム としてと組み込み ; Vector インストルメンテーション は既に そのいずれから分離 パイプライン, 採用 を置き換え フェイズ 変更 デュアル 書き込み ムする。最初 パイプラインを置き、デュアル書き込み にして本当のトラフィックで評価して、ホット クエリ 移動 前に保持をシフトして、古い スタックを実行し続ける 少なくとも 本当の インシデント を通じた — インシデント を説明する データ を削除するのを停止するとそれを分かった。
参考文献とリソース
ツール
背景と分析
関連 1337skills チートシート