概要
Prometheusとは?
Prometheus は、元々 SoundCloud で開発されたオープンソースのシステム監視およびアラートツールキットです。Prometheus は 2012 年の開始以来、多くの企業や組織で採用され、非常に活発な開発者およびユーザーの コミュニティ を持っています。現在は独立したオープンソース プロジェクトであり、どの企業からも独立して保守されています。これを強調し、プロジェクトのガバナンス構造を明確にするために、Prometheus は 2016 年に Cloud Native Computing Foundation に 2 番目のホスト プロジェクトとして参加しました。これは Kubernetes の後になります。
Prometheus は、メトリクスを時系列データとして収集および保存します。つまり、メトリクス情報は、記録されたタイムスタンプと共に、オプションのキーと値のペア(ラベル)と共に保存されます。
Prometheus のより詳細な概要については、メディア セクションのリンクを参照してください。
機能
Prometheus の主な機能は次のとおりです。
- メトリック名とキー/値ペアによって識別される多次元データモデル
- この次元を活用するための柔軟なクエリ言語であるPromQL
- 分散ストレージへの依存なし。単一サーバーノードは自律的です
- 時系列収集は HTTP を介したプル モデルで行われます
- 中間ゲートウェイを介した時系列のプッシュをサポート
- ターゲットは、サービス検出または静的構成を通じて検出されます
- 複数のグラフ表示およびダッシュボード表示のサポート
メトリクスとは?
メトリクスは、平易な言葉で言えば数値測定値です。時系列という用語は、時間の経過に伴う変化の記録を指します。ユーザーが測定したいものは、アプリケーションごとに異なります。Web サーバーの場合はリクエスト時間、データベースの場合はアクティブな接続数やアクティブなクエリ数などが考えられます。
メトリクスは、アプリケーションが特定の動作をする理由を理解する上で重要な役割を果たします。Web アプリケーションを実行していて、それが遅いことが判明したとしましょう。アプリケーションで何が起こっているかを理解するには、いくつかの情報が必要です。たとえば、リクエスト数が多いと、アプリケーションが遅くなる可能性があります。リクエスト数メトリクスがあれば、原因を特定し、負荷を処理するためにサーバー数を増やすことができます。
コンポーネント
Prometheus エコシステムは複数のコンポーネントで構成されており、その多くはオプションです。
- 時系列データをスクレイプして保存するメインのPrometheus サーバー
- アプリケーション コードのインストルメンテーション用のクライアントライブラリ
- 短命なジョブをサポートするためのプッシュゲートウェイ
- HAProxy、StatsD、Graphite などのサービス用の特殊なエクスポーター
- アラートを処理するためのAlertmanager
- さまざまなサポートツール
ほとんどの Prometheus コンポーネントは Go で記述されており、静的バイナリとして簡単にビルドおよびデプロイできます。
アーキテクチャ
この図は、Prometheus とそのエコシステムコンポーネントの一部を示しています。
Prometheus は、インストルメントされたジョブからメトリクスをスクレイプします。これは直接行うか、短命なジョブの場合は中間プッシュゲートウェイを介して行います。すべてのスクレイプされたサンプルをローカルに保存し、これらのデータに対してルールを実行して、既存のデータから新しい時系列を集計して記録するか、アラートを生成します。Grafana やその他の API コンシューマーを使用して、収集されたデータを可視化できます。
いつ適しているか?
Prometheus は、純粋な数値時系列を記録するのに適しています。これは、マシン中心の監視と、高度に動的なサービス指向アーキテクチャの監視の両方に適しています。マイクロサービスの分野では、多次元データ収集とクエリのサポートが特に強力です。
Prometheus は信頼性を重視して設計されています。障害発生時でも、問題を迅速に診断できるように、システムに関する統計情報を常に確認できます。各 Prometheus サーバーはスタンドアロンであり、ネットワークストレージやその他のリモートサービスに依存しません。インフラストラクチャの他の部分が破損していても、それに依存でき、使用するために広範なインフラストラクチャをセットアップする必要はありません。
いつ適さないか?
Prometheus は信頼性を重視しています。障害時でも、システムに関する統計情報を常に確認できます。100% の精度が必要な場合(たとえば、リクエストごとの課金など)には、Prometheus は適していません。収集されたデータが十分に詳細で完全ではない可能性が高いためです。そのような場合は、課金データの収集と分析には他のシステムを使用し、監視には Prometheus を使用するのが最善です。