オープンソースプロジェクト
prometheus/prometheus avatar
prometheus/prometheus

Prometheus のプル型監視を導入前に分解する

Prometheus は監視システム兼時系列データベース。HTTP プルモデルでメトリクスを収集し、PromQL のルール式を評価して、指定条件が満たされたときにアラートを発生させる。

スター 66,069フォーク 10,841GoApache-2.0

ひと目でわかる

これは何?
独自クエリ言語、プル型収集、アラート、ビルド手順を、README が明記する範囲に絞って確認します。
誰に向いている?
Prometheus はメトリクスを収集し、クエリとアラートを組み立てる監視担当者向けの独立バイナリです。採用前には scrape 設定、サービスディスカバリ、保存期間、リモートライトの送信先、アラート通知の構成を実際の負荷で確認してください。
商用利用できる?
できます。Apache-2.0 は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 1 日前です。
何の言語で書かれている?
主に Go です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月14日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

独自のクエリ言語を持つプルベースの監視システム

Prometheusはシステムおよびサービス監視システムであり、Cloud Native Computing Foundationのプロジェクトです。設定されたターゲットから一定間隔でメトリクスを収集し、ルール式を評価し、結果を表示し、指定された条件が観測されたときにアラートをトリガーできます。READMEにはいくつかの特徴が列挙されています:メトリック名とキー/バリューの次元セットで定義される時系列を持つ多次元データモデル、クエリ言語としてのPromQL、分散ストレージに依存しない自律的な単一サーバーノード、時系列収集のためのHTTPプルモデル、バッチジョブ用の中間ゲートウェイを介した時系列のプッシュサポート、サービスディスカバリまたは静的設定によるターゲット発見、複数のグラフ化およびダッシュボードオプション、階層的および水平フェデレーションのサポート。アーキテクチャの概要はリポジトリ内の図として提示されていますが、READMEはその図の内容をテキストで説明していません。

プリコンパイル済みバイナリ、コンテナ、またはソースからのインストール

READMEには3つのインストール方法が記載されています。リリース版のプリコンパイル済みバイナリはprometheus.ioのダウンロードセクションで入手でき、最新の本番リリースバイナリを使用することが推奨されています。DockerイメージはQuay.ioとDocker Hubで公開されており、READMEにはコンテナを起動するための1行コマンドがあります:docker run --name prometheus -d -p 127.0.0.1:9090:9090 prom/prometheus、その後サービスはhttp://localhost:9090/でアクセス可能です。ソースからビルドする場合の前提条件は、go.modで指定されたバージョン以上のGo、web/ui/.nvmrcで指定されたバージョン以上のNodeJS、およびnpmバージョン10以上です。READMEは正確なバージョン番号を提供していないため、必要なバージョンを確認するにはそれらのファイルを調べる必要があります。

ソースからのビルド:go install、make build、Webアセット

リポジトリをクローンした後、goツールを使用してprometheusおよびpromtoolバイナリをビルドできます:go install github.com/prometheus/prometheus/cmd/...、そしてprometheus --config.file=your_config.ymlを実行します。ただしREADMEは、go installを使用する場合、Prometheusがweb/ui/static以下のローカルファイルシステムディレクトリからWebアセットを読み取ることを期待するため、クローンしたリポジトリのルートから実行する必要があると警告しています。そのディレクトリには、make assetsまたはmake buildで明示的にビルドされない限り、React UIは含まれません。どこからでも実行できるバイナリを生成するには、READMEはmake buildを推奨しており、これによりWebアセットがバイナリにコンパイルされます。リストされているMakefileターゲットは、build、test、test-short、format、vet、assetsで、buildは両方のバイナリをビルドしWebアセットを含みます。サンプル設定ファイルはdocumentation/examplesディレクトリにリンクされています。

サービスディスカバリプラグインとビルド時のカスタマイズ

Prometheusには多くのサービスディスカバリプラグインがバンドルされています。READMEでは、Goのビルドタグを使用してビルドに含めるサービスディスカバリをカスタマイズできると説明しています。make buildの場合、.promu.ymlファイルのbuild.tags.allにタグを追加します。例ではall: netgo, builtinassets, remove_all_sd, enable_kubernetes_sdが示されており、これはすべてのオプションのサービスディスカバリを除外し、Kubernetesのみを再度有効にします。利用可能なビルドタグは、remove_all_sd(file_sd、static_sd、http_sdを保持しながらすべてのオプションのサービスディスカバリを除外)と、特定のものを再度有効にするenable_<name>_sdです。go buildを直接使用する場合、-tags "remove_all_sd,enable_kubernetes_sd" ./cmd/prometheusのようにタグを渡すことができます。READMEはまた、ツリー外プラグインの追加は現時点では推奨されておらず、go.modおよびgo.sumファイルの調整が必要になる可能性があると述べています。どのサービスディスカバリがデフォルトでオプションと見なされるかはリストされておらず、その情報はREADMEにはありません。

Goライブラリとしてのリポジトリ:制限とリモートライトprotobuf

READMEは、prometheus/prometheusリポジトリがスタンドアロンプログラムをビルドし、ライブラリとしての使用を意図していないことを明示しています。作者は人々がその一部をライブラリとして使用していることを認識していますが、その役割でうまく機能させるための配慮はされておらず、ライブラリとして使用した場合にのみエラーが表面化する可能性があります。prometheus/commonやprometheus/client-golangなどのリポジトリは再利用可能なライブラリとして設計されています。リモートライトプロトコルについては、プロジェクトはbuf.buildでリモートライトprotobufを独立して公開しており、READMEにはgo getコマンドが示されています:go get buf.build/gen/go/prometheus/prometheus/protocolbuffers/go@latest。これは実験的とマークされています。

Goモジュールのバージョン対応とApache 2.0ライセンス

go modのルールにより、Prometheusのリリース番号はGoモジュールのリリースと正確には一致しません。v3.y.zリリースの場合、プロジェクトは同等のv0.3y.zタグを公開し、yは常に2桁にパディングされます。例えば、v3.0.0はv0.300.0に対応します。v2.y.zリリースの場合、同等のタグはv0.y.zであり、v2.35.0はv0.35.0にマップされます。このスキームは、セマンティックバージョニングのメジャーバージョンゼロの下で、ユーザー向けのマイナーリリース間で内部Go APIの破壊的変更が許可されているために存在します。リポジトリはApache License 2.0の下でライセンスされており、READMEは完全なLICENSEファイルにリンクしています。ライセンスの抜粋は、作品を複製し、派生作品を準備し、公開表示し、実行し、再ライセンスし、配布するための永続的、世界的、非独占的、無償、ロイヤリティフリー、取消不能な著作権ライセンスを付与します。サポート、保証、セキュリティ保証については何も述べておらず、READMEにも含まれていません。コミュニティページはprometheus.ioにあり、開発者やユーザーに連絡する場所です。

編集部の結論

Prometheus はメトリクスを収集し、クエリとアラートを組み立てる監視担当者向けの独立バイナリです。採用前には scrape 設定、サービスディスカバリ、保存期間、リモートライトの送信先、アラート通知の構成を実際の負荷で確認してください。README は Go アプリへ組み込むライブラリとしては想定していません。

公式情報源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
コミュニティノート

コミュニティノート