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による監視プラットフォームは、典型的には次のツールの組み合わせで構成される。- 監視対象ホスト上で実行され、メトリクスを提供するExporter- メトリクスを定期的に要求（プル）し、一元化して管理するPrometheus- メトリクスと設定条件に基づいてアラートを通知するAlertmanager- メトリクスをダッシュボードにグラフ表示するGrafana- アラート通知やグラフ表示に使用されるクエリ言語PromQL

**データ格納形式**
Prometheusが扱う時系列データはメトリクスという形で保存され、各メトリクスには参照用の名前がついている。さらに各メトリクスは、任意の数のキー・バリューの組（ラベル）でドリルダウンすることが可能である。このラベルには、データソース（データがどのサーバーから送られてくるか）の情報や、HTTPステータスコード（HTTP応答に関連するメトリクス用）、HTTPクエリーメソッド（GETとPOST）、エンドポイントURLなど、アプリケーション固有のブレークダウン情報を含めることができる。これらのラベルを組み合わせてクエリーを実行できることから、Prometheusのデータは多次元データモデルと呼ばれる。

**データ収集**
Prometheusは、Exporterと呼ばれるデータソースに特定のポーリング頻度で問い合わせを行う（プル方式）。各Exporterは、Prometheusが問い合わせたエンドポイントにそのデータソースの現在値メトリクスを提供する。Prometheusは、こうして集めたメトリクスを集約して保管する。なおPrometheusには、Exporterを自動的に発見するためのメカニズムがいくつか用意されている。

**PromQL**
Prometheusはデータの選択と集計のため、独自のクエリー言語PromQL（Prometheus Query Language）を備えている。PromQLは時系列データベースに適合するよう設計されており、時間に関連した問い合わせ機能も豊富に用意されている。Prometheusには次の4つのメトリック型が定義されている。
 Counter
 値が増加する一方の単調な値
 Gauge
 自由に増減する値
 Histogram
 度数分布を収集し、ヒストグラムとして視覚的に処理できるようにする
 Summary
 Histogramと同様に度数分布が記録され、すべての観測値の数と合計も記録される

**監視とアラート**
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を採用している。

**出典**

**参考文献**
 date = 2015-12-15- Cite book|title=KUBERNETES FOR DEVELOPERS use kubernetes to develop, test, and deploy your applications with the help of containers;use kubernetes to develop|last=JOSEPH.|first=HECK|date=2018|publisher=PACKT PUBLISHING|isbn=978-1788830607|location=S.l.|oclc=1031909876- date = 2018-02-20- oclc=1020029257- date = 2018-02-23- isbn=978-1786469755