# Borgmon ## 概要 **Borgmon** は [[Google]] が [[Monarch]] の前に運用していた分散監視システムである。各チームが独自に Borgmon デーモンを管理するプッシュ型・プル型混在のアーキテクチャを採っており、Google SRE の知識として広く文書化された(Ben Treynor Sloss 編「Site Reliability Engineering」等)。[[Monarch]] の設計論文([[@2020__VLDB__Monarch - Google's Planet-Scale In-Memory Time Series Database]])は Borgmon の 4 つの主要な限界を列挙し、それらを解決した後継として Monarch を位置づけている。 ## Borgmon の課題(Monarch 論文より) Monarch 論文(§1)は Borgmon からの教訓として以下 4 点を挙げる: 1. **分散管理の負担**: 各チームが自身の Borgmon インスタンスを運用する必要があり、インフラ管理コストが高い。Monarch はマルチテナントサービスとして中央化することでこの負担を排除した 2. **スキーマなし**: Borgmon は key-value 型の文字列メトリクスのみをサポートし、クエリセマンティクスが曖昧になりがちだった。Monarch はリレーショナルスキーマ(Target schema + Metric schema)を導入した 3. **Distribution 型の欠如**: パーセンタイルレイテンシのような統計的分析に必要な distribution 値型をサポートしない。Monarch は distribution をファーストクラス型として扱い、Exemplar も付加した 4. **手動シャーディング**: 大規模化に伴いユーザーが手動でシャーディングを管理する必要があった。Monarch は辞書順シャーディングにより自動化した ## SRE コミュニティでの位置づけ Borgmon は Google SRE 本(Ben Treynor Sloss 他著)で詳述されており、Prometheus をはじめとするオープンソース監視ツールの設計に大きな影響を与えた。Prometheus は Borgmon の pull 型監視モデルとラベルベースのメトリクス識別を踏襲している。 ## 出典 - [[@2020__VLDB__Monarch - Google's Planet-Scale In-Memory Time Series Database]](Borgmon の課題と Monarch の改善点を論じた一次ソース)