## Memo
- OSSは[[Observability Volume Management]]
## Memo with LLM
https://claude.ai/chat/6db22f9d-638f-46ce-9800-141576a5d9ee
```
# プログラマブルなメトリクスフローの実現
IBM Research Indiaの研究者らによる論文「Enabling Programmable Metric Flows」の要約です。
## 概要
この論文は、クラウドコンピューティング環境向けの新しいメトリクス処理システム「Programmable Metric Flows (PMF)」を提案しています。多くの企業が複数クラウドや分散環境に移行する中で、従来の静的な監視アプローチでは効率的なデータ転送や拡張性の確保が困難になっています。PMFは軽量なSQL基づくメトリクスプロセッサであり、リソース可用性やアプリケーション要件に応じてメトリクスの変換を動的に最適化します。
## 主な特徴と機能
1. PMFは軽量で、既存のメトリクス収集スタックと互換性があります。
2. SQLベースの設計により、多様なメトリクス変換をプログラム可能にしています。
3. 主な変換タイプとして、頻度調整、フィルタリング、集約、適応型変換をサポートしています。
4. 変換はDAG(有向非巡回グラフ)としてモデル化され、複雑な処理パイプラインを構築できます。
5. 動的な構成変更が可能で、リアルタイムの要件変化に対応できます。
## 最適化アプローチ
PMFはメトリクスの重要度に基づいてサンプリング頻度を最適化するアプローチを採用しています。研究では、異なるメトリクスが異常検出などの下流タスクに対して不均等な重要度を持つことが示されています。この知見を活用し、帯域幅制限などのリソース制約を考慮しながら、重要なメトリクスにより高い頻度を割り当てます。
## 評価結果
1. PMFは最大200Kのメトリクスまでスケールし、約40Kメトリクス/秒のスループットを実現しています。
2. リソース使用量は低く、CPUは約2.5%、メモリは300MB程度しか消費しません。
3. 同等の処理能力を持つOpenTelemetryと比較して、PMFは10倍少ないCPUリソースで動作します。
4. エッジクラウド環境でメトリクス頻度を動的に調整する実験では、従来の30秒間隔の固定方式と比較して、重要な情報の損失を約600分の1に削減しました。
PMFは軽量で柔軟なプログラム可能性を提供し、特にリソース制約のあるエッジ環境において効率的なメトリクス管理を実現します。オープンソースで提供されており、github.com/observ-vol-mgt/PMFから入手可能です。
```
```
# Programmable Metric Flows (PMF) システムの詳細解説
## 1. PMF の概要とアーキテクチャ
PMF(Programmable Metric Flows)は、メトリクスを処理するための軽量かつプログラム可能なシステムです。このシステムは特に分散クラウド環境やエッジコンピューティングにおいて、メトリクスの効率的な管理を実現します。
PMF のアーキテクチャは以下の主要コンポーネントで構成されています:
- **レシーバー**:メトリクスデータを受信し、処理用の形式にデコードします。例えば、Prometheus Remote Write プロトコルで送信されたメトリクスを変換します。
- **エグゼキューター**:メトリクスの変換処理を実行する中核コンポーネントです。SQL クエリを使用してメトリクスを処理します。
- **トランスミッター**:処理されたメトリクスを適切な形式にエンコードして転送します。
- **コントローラー**:ユーザーインターフェースとして機能し、メトリクス処理フローの作成や更新を行います。
- **コンフィギュレーター**:YAML形式の変換仕様をメトリクスデータに適用できるSQL変換クエリに変換します。
PMF は SQLite をベースとした内部データベースを利用しており、メトリクスは「メトリクステーブル」と「ラベルテーブル」の2つのテーブルで管理されます。メトリクステーブルには時間、値、エクスポートフラグなどが格納され、ラベルテーブルにはメトリクスのメタデータが格納されます。
## 2. PMF の主要な変換タイプ
PMF は以下の変換タイプをサポートしています:
### 頻度変換(Frequency Transform)
メトリクスのサンプリング頻度を制御します。例えば、10秒ごとに収集されているメトリクスを5分に1回だけ送信するように設定できます。メトリクスの重要度や利用可能な帯域幅に基づいて動的に頻度を調整することが可能です。
### フィルター変換(Filter Transform)
特定のラベル条件に一致するメトリクスをドロップします。これにより送信されるデータ量を大幅に削減できます。例えば、特定の名前空間に関連するすべてのメトリクスをフィルタリングできます。
### 適応変換(Adaptive Transform)
メトリクスの値に基づいて選択的に転送を行います。例えば、前回の値から大きく変化した場合(標準偏差の2倍以上など)にのみデータポイントを転送することで、小さな更新の不要な転送を回避します。
### 集約変換(Aggregate Transform)
複数のメトリクスを少数の派生メトリクスにまとめます。例えば、10秒ごとに収集されるメトリクスから、1分間の平均値を1つだけ送信するといった処理が可能です。
### No-Op 変換
変換が指定されていないメトリクスに対して適用される変換で、処理せずにそのまま転送します。これはデフォルトの動作であり、指定されていないメトリクスが誤って削除されることを防ぎます。
## 3. 変換 DAG(Directed Acyclic Graph)
PMF ではメトリクス変換を DAG(有向非巡回グラフ)としてモデル化しています。これにより、複数の変換を組み合わせた複雑な処理パイプラインを構築できます。
DAG の各ノードは変換ユニットであり、入力メトリクスの一部を選択して処理し、その結果を子ノードに渡します。各子ノードはこの入力セットに対して独自の処理を行い、最終的にエグゼキューターはリーフノードで選択されたすべての行をエクスポートします。
例えば、エッジクラウド環境では以下のような DAG を構成できます:
1. エンリッチメント変換でメタデータを追加
2. フィルター変換で関連するメトリクスのみを選択
3. 頻度変換でグローバル分析用のメトリクスを1分ごとに送信
4. 適応変換でローカルアラート用のメトリクスを処理
5. 集約変換で監査用のメトリクスをローカルに保存
## 4. 動的性と再構成能力
PMF の重要な特徴の一つは、動的な再構成能力です。これには2つの形態があります:
1. **パラメータ更新**:変換ユニットのパラメータ(セレクターや変数)を更新する場合。例えば、帯域幅の変化に応じてメトリクスの収集頻度を1分から5分に変更する場合など。
2. **DAG 構造の変更**:DAG の構造自体を変更する場合。例えば、帯域幅の制限が発生した際に、特定のインスタンスのメトリクスをフィルタリングするための新しいノードを追加する場合など。
PMF コントローラーは北向き API からの DAG 更新リクエストを受け取り、変数の変更、状態のリセット、子ノードの追加や削除など、DAG の関連部分のみを再プログラムします。次のバッチ処理では更新された DAG が使用され、操作の中断を最小限に抑えます。
## 5. 動的頻度最適化
PMF の主要なユースケースの一つは、メトリクスの動的頻度最適化です。これは、以下のようにモデル化されています:
### 最適化モデル
- 各クラスタは異なるタイプのメトリクスを生成し、これらはローカルに保存され、定期的に中央コントローラーに送信されます。
- 各メトリクスには収集頻度とデータポイントサイズがあり、帯域幅制約を満たす必要があります。
- メトリクスはさまざまな異常検出目的に使用され、それぞれの異常は特定のメトリクスセットに影響します。
- 異常とメトリクスには重みが割り当てられ、その重要度を示します。
### 目標関数
最適化の目標は以下の3つです:
1. 帯域幅消費の最小化
2. 異常検出の平均検出時間の最小化
3. 重要なメトリクスの鮮度指数(Freshness Index)の最大化
これらの目標を線形最適化問題として定式化し、Gurobi オプティマイザーを使用して解決します。
## 6. 実装と性能
PMF は Go 言語で実装されており、678行のコードから成ります。エグゼキューターは組み込みの SQLite 上に構築され、インメモリモードで実行されます。
性能評価では以下のような結果が示されています:
- 200K メトリクスまでスケールし、約40K メトリクス/秒のスループットを実現
- CPU 使用率は約2.5-3%と低く、メモリ使用量はバッチあたり約300MB
- コントロールプレーンのレイテンシは非常に低く、DAG 作成時間は複雑な順次 DAG でも288μs 程度
- 同等の機能を持つ [[OpenTelemetry]] と比較して、PMF は10倍少ない CPU リソースで動作可能
- 動的頻度最適化の適用により、同じ帯域幅でも重要な情報の損失を約600倍削減
PMF はオープンソースプロジェクトとして公開されており、github.com/observ-vol-mgt/PMF から入手可能です。
## 7. まとめ
PMF は、軽量で汎用的、プログラム可能なメトリクス処理システムとして、特に複数クラウドやエッジ環境におけるメトリクス管理の効率化に貢献します。SQL ベースの設計により柔軟な変換が可能であり、DAG モデルを通じて複雑な処理パイプラインを構築できます。動的な再構成能力と頻度最適化により、リソース制約を考慮しながら効果的なメトリクス管理を実現します。
```
## Abstract
概要:集中型クラウドからマルチクラウド、エッジへと進化するコンピューティング環境では、適応可能な[[Observability|可観測性]]の必要性がますます重要になってきている。従来の静的モニタリングアプローチは、非効率的なデータ転送、限られたスケーラビリティ、異種環境、硬直的なメトリック処理パイプラインに取り組んでいる。本稿では、ダイナミズムの原理に根ざした新しいメトリック処理システム、プログラマブル・メトリック・フロー(PMF)を紹介する。PMFは他に類を見ない、軽量なSQLベースのメトリクス処理システムである。PMFは、進化するリソースの可用性とアプリケーションの要件に合わせて、最適化駆動型のメトリクス変換を可能にします。本論文では、PMFが動的できめ細かなメトリクス収集のための様々な変換をどのように可能にするかを示す。また、エッジ環境においてWANコストを削減するために、PMFがメトリクスの頻度を動的に調整できることを紹介します。我々の実験によると、PMFはメトリック処理能力において、最先端の技術と同等であり、リソース使用量は10倍少ない。我々は、PMFが観測可能なプラットフォームの軽量プログラマビリティの時代を切り開くことを想定している。PMFはオープンソースであり、 https://github.com/observ-vol-mgt/PMF で利用可能である。