# VictoriaMetrics vs Prometheus
[[Jorijn Schrijvershof]](オランダのDevOps・Webコンサルタント)による実務家視点の比較記事。**新規モニタリングスタックにはVictoriaMetricsをデフォルト推奨**。Prometheusは特定の条件下でのみ正当化される、という立場で書かれている。
> [!key-insight] 核心的主張
> 「良いインフラは退屈 (boring) であることが最高の賞賛」——運用負荷を最小化できるシステムを選ぶべきであり、それが新規スタックではVictoriaMetricsになる。
## リソース効率
100万アクティブシリーズあたりのメモリ使用量比較:
| システム | RAM目安 |
|--------|--------|
| Prometheus | 数GB(ヘッドで3–4 KB/シリーズ) |
| VictoriaMetrics | 約1 GB |
### 独立した検証ケース
**[[Criteo]]**: 約10億アクティブシリーズで「1バイト/データポイント」を達成。バックエンドを226計算+156ストレージノードから15計算+46ストレージに削減しながら15倍のデータ保存を実現。
**Prezi**: 500万シリーズの移行でストレージ70%削減・メモリ60%削減・CPU30%削減・重いクエリが30秒以上から3–7秒に短縮。
なお、著者は「古い7倍ディスク・5倍メモリ」という2020年ベンチマークの拡大解釈を批判。現在も差は存在するが、数値は文脈依存。
## MetricsQL: PromQL互換性の現実
[[MetricsQL]]は[[Prometheus]]の[[PromQL]]とは意図的に異なるスーパーセット。[[PromLabs]]の準拠スイートでは**74%のPromQL互換性**と評価(Prometheusの代替ツールは100%)。
既存PromQLクエリとGrafanaダッシュボードは変更なしで動作するが、複数バックエンド間でPromQLを移植する環境では長期的に負債化するリスクがある。
## HA構成の比較
| 項目 | Prometheus | VictoriaMetrics |
| ----- | ----------------------- | ------------------------------------- |
| HA方式 | レプリカペア+Alertmanagerゴシップ | `-replicationFactor`フラグ+クエリ時重複排除 |
| 重複排除 | Thanos/Mimir必須 | `vmselect`の`-dedup.minScrapeInterval` |
| 運用複雑性 | 複雑(複数コンポーネント) | シンプル(単一フラグ) |
注意: `vmstorage`ノード障害時のルーティング急増が残存ノードのOOMを誘発するリスクが残る。
## カーディナリティとグレースフルデグラデーション
### Prometheusの弱点
高カーディナリティ時にOOM→プロセス強制終了という段階的な劣化なし。著名な事例:
- **Cloudflare**: 916インスタンス×49億シリーズでカスタムパッチ(グローバルシリーズ制限)が必須
- **PingCAP**: 96コア768GB単一インスタンスでもOOM。WALリプレイに40分超
- **英国法務省** (2024年4月): 大規模WALリプレイが再起動ループ→3時間21分監視喪失
### VictoriaMetricsのグレースフルデグラデーション
- メモリキャッシュオーバーフロー時に「スローインサート」へ移行(クラッシュせず)
- `-search.maxUniqueTimeseries`フラグで単一クエリのシリーズ数を制限(Apache 2.0フリー版に含まれる)
- `vm_slow_row_inserts_total`監視で「5%を10分超過で増強判断」のアラート設定推奨
→ [[Prometheusシリーズチャーン]]参照(Prometheusのシリーズ管理問題の詳細)
## 長期データ保持
### Prometheusのオプション
- **Thanos**: CNCF Incubating、S3互換ストレージ
- **Cortex**: メンテナンス継続
- **Grafana Mimir**: 2022年OSS化、v3.0(2025年11月)でKafkaベース書き込みを採用
### VictoriaMetrics
ローカル圧縮+長期保持が統合。外部オブジェクトストレージ不要でシンプルに運用可能。Prezi事例では「S3よりブロックストレージが安価・高速」。
> [!gap] 重大な落とし穴
> VictoriaMetrics単一ノードのデフォルト保持期間は**30日**で無声のデータ喪失が発生。GitHubイシューで指摘されたが「未計画」として却下。**初日に`-retentionPeriod`の明示設定必須**。
## 判断基準
### VictoriaMetrics選択
- 新規スタック構築
- 100万以上のアクティブシリーズ
- 複数年保持
- RAM制約環境
- [[Prometheusシリーズチャーン]]が多い環境
### Prometheus留置・選択
- 既に安定稼働中(移行不要・「boring is best」)
- ベンダー中立・[[CNCF]]統治が厳命
- PromQL移植性必須(複数バックエンド・大規模ルールベース)
## ガバナンスリスク
**[[Prometheus]]**: [[CNCF]]卒業(2番目の卒業プロジェクト)。Grafana Labs・Red Hat・G-Research・Polar Signals等の多企業体制。
**[[VictoriaMetrics]]**: CLA不採用(貢献者が著作権保持)→既存Apache 2.0コードの再ライセンスが構造的に不可能。MinIO(2025年コンソール削除)、HashiCorp・Redis(2023–2024 BSL転換)といった先例とは異なる保護構造。
## Kubernetes移行パターン
段階的移行フロー:
1. 既存Prometheusにリモート書き込みターゲット追加
2. vmagent + VictoriaMetrics並行稼働
3. VictoriaMetrics Operatorで自動CRD変換(`ServiceMonitor`→`VMServiceScrape`、`PrometheusRule`→`VMRule`)
4. `vmctl`でHistoricalデータ移行
移行時の注意点: `rate()`/`increase()`の動作差異によるアラート閾値再調整、単一ノード vs クラスタの選択(オンディスク形式非互換)、`vmalert`の`for:`タイマーリセット問題。
## クラウド管理サービスコスト比較
| サービス | 課金方式 |
|--------|--------|
| AWS Managed Prometheus | /サンプル($0.90–0.16/10M)。スクレイプ頻度2倍=費用2倍 |
| Google Cloud | /サンプル。同規模でAWSの約4倍 |
| Azure Monitor | 定額$0.016/M(18ヶ月保持含)。中規模で最安 |
| Grafana Cloud | /アクティブシリーズ($6.50/1K)+DPM乗数。15秒→60秒スクレイプで約4倍 |
| VictoriaMetrics Cloud | 固定計算層(500Kシリーズ:$202/月)。カーディナリティ急増でも課金不変 |
## 関連
- エンティティ: [[VictoriaMetrics]] / [[Prometheus]] / [[Jorijn Schrijvershof]] / [[CNCF]] / [[PromLabs]]
- 概念: [[MetricsQL]] / [[Prometheusシリーズチャーン]] / [[Prometheus TSDB]] / [[時系列データベース]]
- 関連ソース: [[@2026__SREcon26Americas__Unlock High-Frequency Deployments without Blowing Up Prometheus]] / [[@2022__Cloudflare-Blog__Monitoring-our-Monitoring]]