CNCF、Prometheus as a ServiceのCortexをサンドボックスプロジェクトとして採用

CNCFはWeaveworksが開発を進めるPrometheus as a ServiceのCortexを、サンドボックスプロジェクトとして採用。コンテナ監視のスケールアウトを目指す。

松下 康之 - Yasuyuki Matsushita

2018年10月26日 6:00

クラウドネイティブなコンピューティングを実現するためのソフトウェアスタックを推進するCloud Native Computing Foundation(以下、CNCF)は、マルチテナント型のモニタリングサービスを実現するCortexを、サンドボックスプロジェクトとして採用したことを発表した。

参考:CNCFのリリース:CNCF To Host Cortex in the Sandbox

これはWeaveworksが開発を進めている監視ソリューションであるCortexを、CNCFのプロジェクトとしてホストすることを決定したというものだ。

Weaveworksのブログにあった言葉を用いてシンプルに表現すると、Cortexは「水平にスケールするマルチテナント型のPrometheus as a Service」となる。

Weaveworksのブログ:Weaveworks Cortex - the newest member of the CNCF Sandbox

Cortexは、Project Frankensteinと呼ばれていたオープンソースプロジェクトを源流とするPrometheus as a Serviceである。WeaveworksはKubernetesをベースにしたクラウドサービスのWeave Cloudを提供しているが、その本番環境やGrafanaCloudで、すでにCortexは本番稼働しているという。

Weaveworksが公開しているFrankensteinのデザインドキュメントを読めば、モニタリングについて、当時考えていたであろう複数のニーズが分かる。

  • ユーザーの利用するコンピュータ資源のメトリックスをタイムシリーズデータで保存したい
  • Prometheusを使う
  • ただしユーザーごとにPrometheusのサービスをデプロイしたくない

この3つを実現するために、Project Frankensteinの開発が進められたという。そしてそのFrankensteinがCortexという名称に変更され、今回、CNCFのサンドボックスとして採用されたということになる。

処理の概要をまとめると、まずリモートのクラスターにデプロイされたPrometheusから、Remote Write APIを通じてCortexのクラスターにデータを送信する。ロードバランサーの後段に置かれるDistributorと呼ばれる複数のプロセスがデータを受け取り、タイムスタンプを追加する。ここでタイムシリーズデータとして整形される。それを最低3つのIngesterと呼ばれるプロセスに送信、データはチャンクとしてIngesterのメモリーに保持され、まとまった形で永続的ストレージであるNoSQLのデータストアに保存される。それを必要に応じてPrometheusのクエリー言語であるPromQLを使って可視化する、というものだ。

Weaveworksのブログに描かれたコンセプト図

Weaveworksのブログに描かれたコンセプト図

CNCFのリリースには、この手書きメモよりも真面目そうな概要図が掲載されているが、理解の容易さでは手書きのメモのほうが優れているように思える。

CNCFの使っている概要図

CNCFの使っている概要図

ここでのポイントは、データを受け取るDistributorはIngesterにデータを送信する際に必ず最低3つのIngesterに送信することで、Ingesterがダウンした時やデータを正常に受け取れなかった場合でもデータの欠損が生じないような設計になっていることだろう。数千数万という規模のサーバーが稼働するクラウド環境において、監視を行うPrometheusも大量のデータを処理することになる。そしてそれを受け取り、タイムシリーズデータにする処理を受け持つバックエンドも、マスター&スレーブという単純な組み合わせではなく、常に稼働し続けることを義務付けられている構造をとっている。これは、実際にクラウドサービスを提供しているWeaveworksの経験からのものだろう。なお、この部分のデザインはAWSのDynamoDBを参考にして設計されたということを明記している辺りに、障害に耐えうるアーキテクチャーを目指しているということが理解できるだろう。

より詳細には以下のブログを参照していただきたい。

What is Cortex?

また当然ながら、GitHubにはCortexのリポジトリーが公開されている。

GitHubのリポジトリー:https://github.com/cortexproject/cortex

また少し時期的には古いが、2016年にシアトルで開催されたKubeConのスライドも参考になるだろう。

KubeCon 2016 Seattleのスライド:https://www.slideshare.net/weaveworks/weave-cortex-multitenant-horizontally-scalable-prometheus-as-a-service

サーバーで稼働するPrometheusのようなアプリケーションをas a Serviceとしてクラウド化する際に、Weaveworksが採用した考え方やアーキテクチャーは、これからのデータセンターを考える上で参考になるだろう。24時間、365日稼働を続けるコンピュータシステムを構築する際に必要なのは「落ちない/壊れないシステム」ではなく「落ちる/壊れることを前提として、それでも動き続けるシステム」という発想だ。それはNetflixが開発し、利用しているChaos Monkeyなどにも通じる、どこかが少しずつ壊れても動き続けるインターネットを模したシステムとも言えるだろう。今後もCortexには注目していきたい。

この記事のキーワード :

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30