San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
閉じる
プライバシー設定
ウェブサイト運営に必要なCookieや類似技術を使用しています。追加のCookieは貴社の同意がある場合のみ利用されます。同意は「Agree」をクリックすることでいただけます。どのデータが収集され、どのようにパートナーと共有されているかの詳細は、Cookieポリシープライバシーポリシーをご確認ください。
Cookieは、貴社デバイスの特性や、IPアドレス、閲覧履歴、位置情報、固有識別子などの特定の個人情報を取得、解析、保存するために使用されます。これらのデータは様々な目的で利用されます。分析Cookieによりパフォーマンスを評価し、オンライン体験やキャンペーンの効果向上に役立てます。パーソナライズCookieは、利用状況に応じた情報やサポートを通じ、貴社専用の体験を提供します。広告Cookieは、第三者が貴社のデータをもとにオーディエンスリストを作成し、ソーシャルメディアやネット上でのターゲット広告に使用します。貴社は各ページ下部のリンクから、いつでも同意の許可、拒否、または撤回が可能です。
ご送信ありがとうございます。内容を受け付けました。
申し訳ありません。フォーム送信時にエラーが発生しました。
ペンテスト

Prometheusモニタリングツールとは?

データ収集の重要な側面は継続的なモニタリングですが、これは非常に手間がかかります。正確性を得るには、さまざまなツールや技術、手法が必要です。Prometheusは、メトリクスのモニタリングや集計を行う企業や開発者の間で広く使われている有名なオープンソースツールのひとつです。

本投稿ではPrometheusソフトウェアの詳細を深掘りします。将来的に活用できるよう、ブックマークしておくことをおすすめします。

Prometheusソフトウェアとは?

2012年にSoundCloudが開発を始めたPrometheusは、世界的によく知られる無料のメトリクスモニタリングと集計ツールです。

メトリクスを時系列データに変換しながら、さまざまな処理を行います。Kubernetesでの使用が主ですが、他のさまざまなクラウドネイティブソフトウェア/ツールにも対応しています。

各時系列データにはタイムスタンプが付与されます。ラベルはオプションであり、メトリクスのキーと値を用いて構成されます。ラベルは簡単に収集・記録でき、今後の活用に役立ちます。特有の機能を備えているため、広く普及し、現在はCNCFの一部となっています。 

Go言語で開発されており、Apache 2 Licenseの方針に従ってライセンスされています。オープンソースツールのため、ソースコードはGitHubで参照できます。これはクロスプラットフォーム対応のツールです。

Prometheusの歴史

2012年に生まれてから長い道のりを経て、Prometheusは非常に人気を博しています。ここでその歴史を簡単に見てみましょう。2012年にSoundCloudで開発され、2013年には主要なプロダクションモニタリングリソースとして正式にリリースされました。

さらに成長を続け、2016年にはCNCFに採択され、正式なインキュベーションプロジェクトとなりました。Prometheus以前にはKubernetesが同様の地位を確立しています。2016年7月に最初のアップデートであるPrometheus 1.0がリリースされ、2017年11月には2番目のアップデートも登場しました。 

Prometheusはどのように動作する?

先述のとおり、Prometheusは主にメトリクスを扱います。必要なメトリクスにアクセスするため、公開されたHTTPエンドポイントが必要です。一般的には数値データのスクレイピングから始まり、スクレイピングが完了するとデータは時系列データとして取得され、ローカルデータベースに保存されます。データ量が多い場合は、リモートストレージを利用することもしばしばあります。

このツールにより、管理者や開発者はデータベース、ツール、アプリ、ネットワークなど、有名なウェブサイトのワークフロー維持に必要な本番環境のコンピュータリソースを管理できます。 

ソースクエリを活用すると、メトリクスのラベルや名前でさらに定義される短命の時系列データを簡単に作成できます。クエリの生成にはPromQLが使用されます。PromQLは時系列に対応した言語のため、ソフトウェアは即時の時系列データを収集・集約できます。

また、PromQLはアラート条件の作成にも大いに役立ち、Slackやメールなど多彩なシステムへのメッセージ送信に利用できます。

処理・分析された時系列データは、後からウェブベースのインターフェイスで表示されます。データの可視化を重視しており、グラフ形式や表形式で表示されることが多いです。

主要な仮想化ツールと連携するために、APIが利用されることもよくあります。これにより、データ表示がよりインタラクティブになります。 

無料のオープンソースツール GoTestWAF でWAFをテスト

Prometheus Architecture
Prometheusのアーキテクチャ

Prometheusのコンポーネントとアーキテクチャ

Prometheusは複数のツールやコンポーネントを組み合わせたもので、それぞれが異なる役割を担っています。このツールを最大限活用するには、そのアーキテクチャや主要要素を理解しておくことが有益です。どの要素がどの作業を担当するのかを把握できるからです。

ここからは、Prometheusにおいて注目すべき要素を詳しく見ていきます。

  • Prometheus Server

主要なコンポーネントのひとつであるPrometheusサーバーは、メトリクスのスクレイピングと保存に使用されます。また、データソースのクエリに必要なモニタリングジョブのスケジューリングも担当します。このサーバーは1つ以上のScrape Configディレクティブを用いて、モニタリングジョブを設定します。

Scrape ConfigはYAMLのコンフィグファイルで処理されます。サーバーはSD(サービスディスカバリ)を使ってスクレイプ対象を検出します。要件に応じて、汎用的なAPIやファイルベースのSDなどと連携することが多いです。

サーバーはHTTPエンドポイントを扱うクライブラリを収集し、それらは後から複数のインストルメントされたアプリで利用されます。

  • Exporters

この要素はサーバーにデータを提供します。基本的に、Prometheus Exporterはデータを収集するための埋め込み式インスツルメンテーションに依存しない重要な監視システムです。

Exporterは、複数のサードパーティシステムから対象メトリクスをエクスポートするために作られたサーバーとライブラリで構成されます。Prometheusアーキテクチャにおいて、実装が困難なインスツルメンテーションシステムを代替する理想的な手段です。

簡単に言うと、Exporterは同じ目的を共有する監視エージェントと定義されることが多いです。これらのエージェントはサードパーティシステムのメトリクスを収集し、サーバーを通じてアクセス可能にすることを目的としています。

  • Prometheus Pushgateway

これは、複数のシステムからプッシュが必要なメトリクスにアクセスするために使用されます。プル型インフラに対応していないメトリクスをPushgatewayが取得する場合が多いです。

Pushgatewayの代表的な使い方として、一時的に稼働するバッチタスクが挙げられます。これは、Prometheusがメトリクスをスクレイプする前に開始し、終了してしまうためです。Pushgatewayを使えば、こうしたメトリクスをプッシュして大事なデータを取りこぼさないようにできます。

  • Service Discovery

SDによって、Exportersがどこで稼働しているかを特定できます。これにより、どのメトリクスを監視すべきかや反応しないメトリクスなど、大切な情報を把握できます。動的な環境において非常に重要です。 

  • Client Libraries

Client Libraryは、アプリのコードをインストルメントした後に生成されるメトリクスを収集するために使われます。Ruby、Go、Python、Javaに対応したクライブラリが公式にサポートされていますが、Dart、.Net、Haskell、C#、Rust、Lispなど、ほかの言語向けのクライブラリも存在します。

Prometheusソフトウェアを導入する際は、使用するクライブラリとアプリの言語が合っていることが重要です。これらが一致しないと、内部メトリクスの定義やエクスポートが難しくなります。

  • Scraping

ScrapingはPrometheusの基本機能で、SDやリラベリングの後に実行されます。サービスの検出とスクレイプが完了すると、監視対象のリストが得られます。次にツールが行うのは、HTTPリクエストを送信してメトリクスを取得することです。リクエストがスクレイプされ、そのレスポンスが解析されたうえでストレージに保存されます。

スクレイピングは常に実行されており、10〜60秒の間隔で行われることが多いです。

  • Storage

Prometheus Kubernetesでは、収集したすべての時系列データを保存するストレージシステムが必要です。

主にローカルにデプロイされたカスタムデータベースを使用しており、Prometheus Dockerのような分散システムでも信頼性を保てます。 

Prometheusのストレージはリリース以来、数多くの変更を経て、現在では1秒間に100万を超えるメトリクスやサンプルを処理できるようになっています。この高い処理能力のおかげで、サーバーは同時に何千ものマシンを監視できます。ストレージにはSSDが必要な場合もありますが、必須ではありません。

  • Dashboards

このツールでは、Grafanaを使ってインタラクティブなダッシュボードを作成できます。Grafanaには豊富な機能が備わっており、ダッシュボードを自由にカスタマイズできます。複数のサーバーを1つのダッシュボードに統合することも可能です。

  • Alert Management

HTTP APIが多用される中、アラートやAPIの管理を疎かにする余裕はありません。Prometheusには、Alertmanagerというシームレスなアラート管理ツールがあり、サーバーから自動的に送られるアラートを受け取って、即時の通知に変換します。これらの通知は主にチャットやメールの形で送られます。 

人的な対応を制御し、不要な介入を防ぐ点で、APIセキュリティ上も非常に重要です。

Work architecture
動作アーキテクチャ

Prometheusで監視できるもの

Prometheusはクラウドネイティブなツールで、上手に使えば幅広いメトリクスや機能を監視・制御するのに役立ちます。ここでは主な例を紹介します。

  • Service Metrics

Prometheusソフトウェアの典型的な用途は、継続稼働するサービスのメトリクスを収集することです。サービスのメトリクスを収集するだけでなく、HTTPベースのエンドポイントを介して、クライアントライブラリや手動設定を経由してアクセス可能にします。

このツールがサービスメトリクスの収集に好まれる理由は、データをシンプルに表示してくれるからです。各サービスメトリクスは1行単位で表示され、改行文字によってほかのメトリクスと区別されます。

サービスメトリクスはHTTPサーバー上にホスティング/公開されるため、Prometheusソフトウェアは保存されたメトリクスをスクレイプしたりクエリしたりできます。企業はよく、異なるホスト上でホスティングされているさまざまなサービスメトリクスをこのツールで管理します。

  • Host Metrics

PrometheusのOSは、ホストに関するメトリクス情報を提供できます。たとえばハードディスクがいっぱいかどうかを把握できます。ホストメトリクスをより詳しく確認するには、OS情報を収集してHTTPアドレスに公開するExporterを利用するとよいでしょう。

  • Uptime/Status of the Website

Prometheusはウェブサイト全体のモニタリングを完全には担えませんが、アップタイムやサイトの稼働状況といったメトリクスの追跡には使えます。BlackBox Exporterと組み合わせれば、対象URLを指定するだけでアップタイムを監視できます。

  • Cronjobs

最後に、Prometheusはcronジョブの追跡にも使えます。これにはPush Gatewayを利用し、cronジョブが正常に動作しているかどうかを確認できます。HTTPエンドポイントがこのメトリクスの監視に必要です。 

cronジョブにはタイムスタンプが付与されるため、現在と直近の成功時刻を比較して、稼働状況を簡単に把握できます。

Prometheusにできないこと

ここまで述べたように、Prometheusは多くのことができますが、いくつか不得意な面もあります。たとえば、次のような点です:

  • 収集したデータの正確性を100%保証するわけではありません。信頼性はある程度確保しているものの、継続的な改善が必要な機密性の高い統計を蓄積する場合には不十分な場合があります。そのようなメトリクスには、ほかの手段を使うほうがよいでしょう。
  • 高度にカスタマイズされたダッシュボードを求める場合には対応できません。本ソフトウェアのコアはHTTP APIを利用したイベントクエリと、組み込みのWeb UIであり、
  • いくつかの連携機能が常に必要です。単独のツールとして導入することは難しいです。

結論

本質的に、Prometheusは適切なタイムスタンプ付きの時系列データを効率よく保存したい場合に有用なテクノロジーです。アプリの重要なメトリクスをモニタリングし、最小限の手間でメトリクスのクエリを整理するのに活用してみるとよいでしょう。インタラクティブなUIのおかげで初心者にも扱いやすいソフトウェアです。

ただし、常に万能というわけではありません。時系列データの完全な正確性は期待できず、単独のツールとして使うのはあまり得策ではありません。必要とする要件とPrometheusの機能を照らし合わせ、バランスを取ることが大切です。適切に運用すれば、Prometheusは高いパフォーマンスを発揮するでしょう。

FAQ

最新情報を購読

学習目標
最新情報を
購読
購読する
関連トピック