Prometheus (ソフトウェア)

Prometheus（プロメテウス）は、イベント監視とアラート通知に利用される無料のアプリケーション・ソフトウェアである。時系列データベースをHTTPプル方式でリアルタイムに構築し、柔軟なクエリーとアラート機能を提供する。
PrometheusはGoで書かれ、Apache License 2.0の下でライセンスされ、ソースコードはGitHubで公開されており、KubernetesやEnvoyとともにCloud Native Computing Foundationの卒業プロジェクトとなっている。
歴史.
Prometheusは、2012年にSoundCloud社で開発された。同社は、既存のメトリクスおよび監視ソリューション（StatsDとGraphiteを使用）が同社の目的に不十分であると気づいた。そこで、多次元データモデル、運用のシンプルさ、スケーラブルなデータ収集、強力なクエリー言語など満たすべき目標を定め、Googleの監視ツールBorgmonを参考に単独のツールで実現すべく開発を始めた。このプロジェクトは当初からオープンソースであり、明確にアナウンスされていないにもかかわらず、BoxeverやDockerのユーザーにも利用され始めた。
2013年、SoundCloudの自社システム監視にPrometheusが導入された。それが正式に公示されたのは2015年1月である。
2016年5月、Cloud Native Computing Foundation（以下CNCF）は、Kubernetesに次ぐ2番目のインキュベートプロジェクトとしてPrometheusを受け入れた。発表記事には、DigitalOcean、Ericsson、CoreOS、Weaveworks、Red Hat、Googleなど多くの企業でPrometheusが利用されていることが記されている。
2016年7月、Prometheus 1.0がリリースされた。
2018年8月、CNCFは、Prometheusプロジェクトが“卒業”（graduated）したことを発表した。
アーキテクチャー.
Prometheusによる監視プラットフォームは、典型的には次のツールの組み合わせで構成される。
データ格納形式.
Prometheusが扱う時系列データはメトリクスという形で保存され、各メトリクスには参照用の名前がついている。さらに各メトリクスは、任意の数のキー・バリューの組（ラベル）でドリルダウンすることが可能である。このラベルには、データソース（データがどのサーバーから送られてくるか）の情報や、HTTPステータスコード（HTTP応答に関連するメトリクス用）、HTTPクエリーメソッド（GETとPOST）、エンドポイントURLなど、アプリケーション固有のブレークダウン情報を含めることができる。これらのラベルを組み合わせてクエリーを実行できることから、Prometheusのデータは多次元データモデルと呼ばれる。
データ収集.
Prometheusは、Exporterと呼ばれるデータソースに特定のポーリング頻度で問い合わせを行う（プル方式）。各Exporterは、Prometheusが問い合わせたエンドポイントにそのデータソースの現在値メトリクスを提供する。Prometheusは、こうして集めたメトリクスを集約して保管する。なおPrometheusには、Exporterを自動的に発見するためのメカニズムがいくつか用意されている。
PromQL.
Prometheusはデータの選択と集計のため、独自のクエリー言語"PromQL"（Prometheus Query Language）を備えている。PromQLは時系列データベースに適合するよう設計されており、時間に関連した問い合わせ機能も豊富に用意されている。Prometheusには次の4つのメトリック型が定義されている。
監視とアラート.
Prometheusでは、閾値や期間の条件によるアラート通知の設定を行うことができる。発行されたアラートはAlertmanagerに転送される。Alertmanagerには、アラートを制限したり、メール、Slack、PagerDutyなどに転送したりするロジックを含めることができる。Microsoft Teamsのような他のメッセージングシステムも、外部統合のためのメカニズム「Alertmanager Webhook Receiver」を経由して利用することができる。
ダッシュボード.
Prometheusは、ダッシュボードソリューションとしては設計されていない。特定のクエリーを簡易的にグラフ化することはできるものの、本格的なダッシュボードを生成するにはGrafanaなどと連携させる必要がある。
相互運用性.
Prometheusはホワイトボックス監視を推奨しており、アプリケーションには内部メトリクスを提供するExporterの公開が望まれている。実際、すでにさまざまなアプリケーションのエクスポーターが公式・非公式に用意されている。Prometheusは、移行時の相互運用を可能にするために、いくつかの監視・管理プロトコルをサポートしている（Graphite、StatsD、SNMP、JMX、CollectD等）。
Prometheusは、プラットフォームの可用性と基本的な操作に重点を置いている。メトリクスは通常数週間保存されるが、リモートストレージを利用することでより長期的かつ安全に保存することもできる。
OpenMetricsへの標準化.
Prometheusのメトリクス形式を「OpenMetrics」と呼ばれる標準として普及させる取り組みがある。InfluxDataのTICKスイート、InfluxDB、Google Cloud Platform、Datadogなど、すでにこの形式を採用した製品も存在する。
採用.
Prometheusは前述のとおり、開発元であるSoundCloud社の自社システム監視に初めて使用された。またCNCFには、デジタルホスティングサービスDigitalOcean、デジタルフェスティバルDreamHack、連絡先移行サービスShuttleCloudなど、Prometheusを利用する企業の事例が多数掲載されている。ほかにもデータパイプライン監Pandora Radio、リポジトリマネージャーGitLabなどがPrometheusを採用している。