概要

Prometheusとは?

Prometheus は、SoundCloudで最初に構築されたオープンソースのシステム監視およびアラートツールキットです。 2012年の開始以来、多くの企業や組織がPrometheusを採用しており、プロジェクトには非常に活発な開発者とユーザーのコミュニティがあります。現在では、スタンドアロンのオープンソースプロジェクトであり、どの企業からも独立して保守されています。これを強調し、プロジェクトのガバナンス構造を明確にするために、Prometheusは2016年にKubernetesに次ぐ2番目のホストプロジェクトとしてCloud Native Computing Foundationに参加しました。

Prometheusは、メトリックを時系列データとして収集および保存します。つまり、メトリック情報は、記録されたタイムスタンプとともに、ラベルと呼ばれるオプションのキーと値のペアと共に保存されます。

Prometheusのより詳細な概要については、メディアセクションからリンクされているリソースを参照してください。

機能

Prometheusの主な機能は次のとおりです。

  • メトリック名とキー/値のペアで識別される時系列データを使用した多次元データモデル
  • この次元を活用するための柔軟なクエリ言語であるPromQL
  • 分散ストレージに依存しません。単一サーバーノードは自律的です。
  • 時系列の収集は、HTTPを介したプルモデルによって行われます。
  • 仲介ゲートウェイを介して時系列のプッシュがサポートされています。
  • ターゲットは、サービスディスカバリまたは静的構成によって検出されます。
  • グラフ化とダッシュボードの複数のモードをサポート

メトリックとは?

メトリックとは、一般的に言うと数値による測定値です。時系列とは、時間の経過に伴う変化の記録を指します。ユーザーが何を測定したいかは、アプリケーションによって異なります。Webサーバーの場合、リクエスト時間である可能性があります。データベースの場合、アクティブな接続数またはアクティブなクエリ数などである可能性があります。

メトリックは、アプリケーションが特定の方法で動作している理由を理解する上で重要な役割を果たします。Webアプリケーションを実行していて、動作が遅いことがわかったとします。アプリケーションで何が起こっているかを調べるには、いくつかの情報が必要です。たとえば、リクエスト数が多い場合、アプリケーションの動作が遅くなる可能性があります。リクエストカウントメトリックがあれば、原因を特定し、負荷を処理するためにサーバーの数を増やすことができます。

コンポーネント

Prometheusエコシステムは、多くの場合オプションである複数のコンポーネントで構成されています。

ほとんどのPrometheusコンポーネントはGoで記述されているため、静的バイナリとして簡単にビルドおよびデプロイできます。

アーキテクチャ

この図は、Prometheusとそのエコシステムコンポーネントのアーキテクチャを示しています。

Prometheus architecture

Prometheusは、インストゥルメントされたジョブから、直接、または短命のジョブの場合は仲介プッシュゲートウェイを介してメトリックをスクレイプします。スクレイプされたすべてのサンプルをローカルに保存し、このデータに対してルールを実行して、既存のデータから新しい時系列を集約および記録するか、アラートを生成します。Grafanaまたは他のAPIコンシューマーを使用して、収集されたデータを可視化できます。

Prometheusが適しているケース

Prometheusは、純粋に数値の時系列を記録するのに適しています。マシン中心の監視と、動的なサービス指向アーキテクチャの監視の両方に適合します。マイクロサービスの世界では、多次元データの収集とクエリに対するサポートは特に強力です。

Prometheusは信頼性のために設計されており、障害発生時に問題を迅速に診断するために使用するシステムです。各Prometheusサーバーはスタンドアロンであり、ネットワークストレージや他のリモートサービスに依存しません。インフラストラクチャの他の部分が壊れている場合でも、Prometheusに依存できます。また、Prometheusを使用するために広範なインフラストラクチャをセットアップする必要はありません。

Prometheusが適していないケース

Prometheusは信頼性を重視しています。障害状態でも、システムに関する統計情報をいつでも表示できます。リクエストごとの課金など、100%の精度が必要な場合、Prometheusは適切な選択肢ではありません。収集されたデータは、詳細で完全ではない可能性が高いためです。そのような場合は、他のシステムを使用して課金データを収集および分析し、残りの監視にはPrometheusを使用することをお勧めします。

このドキュメントはオープンソースです。問題の報告またはプルリクエストを送信して、改善にご協力ください。