CNCF、Prometheus as a ServiceのCortexをサンドボックスプロジェクトとして採用
クラウドネイティブなコンピューティングを実現するためのソフトウェアスタックを推進する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を使って可視化する、というものだ。
CNCFのリリースには、この手書きメモよりも真面目そうな概要図が掲載されているが、理解の容易さでは手書きのメモのほうが優れているように思える。
ここでのポイントは、データを受け取るDistributorはIngesterにデータを送信する際に必ず最低3つのIngesterに送信することで、Ingesterがダウンした時やデータを正常に受け取れなかった場合でもデータの欠損が生じないような設計になっていることだろう。数千数万という規模のサーバーが稼働するクラウド環境において、監視を行うPrometheusも大量のデータを処理することになる。そしてそれを受け取り、タイムシリーズデータにする処理を受け持つバックエンドも、マスター&スレーブという単純な組み合わせではなく、常に稼働し続けることを義務付けられている構造をとっている。これは、実際にクラウドサービスを提供しているWeaveworksの経験からのものだろう。なお、この部分のデザインはAWSのDynamoDBを参考にして設計されたということを明記している辺りに、障害に耐えうるアーキテクチャーを目指しているということが理解できるだろう。
より詳細には以下のブログを参照していただきたい。
また当然ながら、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には注目していきたい。
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- オープンソースの圧縮・解凍ソフト「PeaZip 7.1.1」リリース
- オープンソースの圧縮・解凍ソフト「PeaZip 8.0」リリース
- オープンソースの圧縮・解凍ソフト「PeaZip 7.1.0」リリース
- オープンソースの圧縮・解凍ソフト「PeaZip 9.7.0」リリース
- オープンソースの圧縮・解凍ソフト「PeaZip 8.4.0」リリース、Mac OS版が追加
- オープンソースの圧縮・解凍ソフト「PeaZip 5.9.0」リリース
- オープンソースの電子書籍管理ソフト「Calibre 4.0」リリース
- 「PeaZip」からファイル管理機能だけを取り出したツール「PeaUtils」リリース
- 「Flatpak 1.12.0」リリース
- キヤノンITS、Webブラウザ仮想化ソフト「SecureSoft mamoret」リリース