Azure Monitor と Prometheus
Prometheus は、クラウドネイティブ エコシステムで広く使用されている一般的なオープンソースの監視およびアラート ソリューションです。 組織は、インフラストラクチャとワークロードのパフォーマンスを監視し、警告するために Prometheus を使用します。 これは Kubernetes 環境でよく使用されます。
Prometheus は、Azure のマネージド サービスとして、またはメトリックを収集するためのセルフ マネージド サービスとして使用できます。 Prometheus メトリックは、Azure Kubernetes Service (AKS) クラスター、Azure Arc 対応 Kubernetes クラスター、仮想マシン、仮想マシン スケール セットから収集できます。
Prometheus メトリックは、Azure Monitor ワークスペースに格納されます。 Prometheus Query Language (PromQL) を使用するメトリックス エクスプローラーと Azure Managed Grafana を使用して、ワークスペースのデータを分析および視覚化できます。
重要
Prometheus を管理およびホストするための Azure Monitor の使用は、顧客のマシンとアプリケーションのサービス正常性に関する情報を格納することを目的にしています。 個人データを格納するためのものではありません。 メトリック名、ラベル名、ラベル値などの Azure Monitor でホストされる Prometheus フィールド用に機密情報 (ユーザー名、クレジット カード番号など) を送信しないことを強くお勧めします。
Prometheus 用の Azure Monitor マネージド サービス
Azure Monitor の Prometheus 用マネージド サービスは、Azure Monitor メトリックスのコンポーネントであり、Prometheus を実行するためのフル マネージドでスケーラブルな環境を提供します。 これにより、AKS での Prometheus のデプロイ、管理、スケーリングが簡素化され、アプリケーションとインフラストラクチャの監視に集中できます。
フル マネージド サービスとして、Azure Monitor の Prometheus 用のマネージド サービスは、AKS または Azure Arc 対応 Kubernetes に Prometheus を自動的にデプロイします。 このサービスでは、高可用性、サービス レベル アグリーメント (SLA) の保証、およびソフトウェアの自動更新を提供します。 また、最大 18 か月間データを保持するスケーラブルなメトリック ストアを提供します。
Azure Monitor の Prometheus 用マネージド サービスでは、構成済みのアラート、ルール、ダッシュボードが提供されます。 Prometheus コミュニティの推奨ダッシュボードとネイティブ Grafana 統合により、包括的な監視をすぐに実現できます。 Prometheus 用の Azure Monitor マネージド サービスは、Azure Managed Grafana と統合されており、セルフマネージド Grafana でも動作します。
価格は、インジェストとクエリに基づいており、追加のストレージ コストはありません。 詳細については、「Azure Monitor の価格」の「メトリック」を参照してください
Prometheus 用の Azure Monitor マネージド サービスを有効にする
Azure Monitor の Prometheus 用マネージド サービスは、AKS と Azure Arc 対応 Kubernetes からデータを収集します。
Azure Monitor の Prometheus 用マネージド サービスを有効にするには、メトリックを保存する Azure Monitor ワークスペースを作成する必要があります。 その後、Prometheus メトリックを収集するサービスをオンボードできます。
- Kubernetes クラスターから Prometheus メトリックを収集するには、「Prometheus と Grafana を有効にする」をご覧ください。
- リモート書き込みを構成してセルフマネージド Prometheus サーバーからデータを収集するには、「仮想マシン、スケール セット、または Kubernetes クラスターから Azure Monitor ワークスペースに Prometheus メトリックを送信する」を参照してください。
Microsoft Azure エアギャップ クラウドのマネージド Prometheus を有効にするには、サポートにお問い合わせください。
Azure でホストされるセルフマネージド Prometheus
Prometheus 用マネージド サービスに加えて、独自の Prometheus インスタンスをインストールして管理し、リモート書き込みを使用して Azure Monitor ワークスペースにメトリックを格納できます。
リモート書き込みを使用することで、次の環境で実行されているセルフマネージド Prometheus サーバーからデータを収集できます。
- Azure 仮想マシン
- Azure 仮想マシン スケール セット
- Azure Arc 対応サーバー
- セルフ マネージドの Azure ホスト型または Azure Arc 対応 Kubernetes クラスター。
セルフマネージド Kubernetes サービス
Kubernetes クラスター上のセルフマネージド Prometheus からメトリックを送信します。 Kubernetes サービスの Azure Monitor ワークスペースへのリモート書き込みの詳細については、次の記事を参照してください。
- マネージド ID 認証を使用して Prometheus データを Azure Monitor に送信する
- Microsoft Entra 認証を使用して Prometheus データを Azure Monitor に送信する
- Microsoft Entra ポッドマネージド ID (プレビュー) 認証を使用して Prometheus データを Azure Monitor に送信する
- Microsoft Entra ワークロード ID 認証を使用して Prometheus データを Azure Monitor に送信する
仮想マシンと仮想マシン スケール セット
仮想マシンと仮想マシン スケール セット上のセルフマネージド Prometheus からデータを送信します。 仮想マシンは、Azure で管理される環境またはオンプレミスに置くことができます。 詳細については、仮想マシン、スケール セット、または Kubernetes クラスターから Azure Monitor ワークスペースへの Prometheus メトリックの送信に関するページを参照してください。
データ ストレージ
Prometheus メトリックは、Azure Monitor ワークスペースに格納されます。 データは、PromQL を介してクエリできる時系列データベースに格納されます。 複数の Prometheus データ ソースのデータを 1 つの Azure Monitor ワークスペースに格納できます。 詳細については、Azure Monitor のワークスペースのアーキテクチャに関する記事を参照してください。
Azure Monitor ワークスペースでは、データは 18 か月間保持されます。
Prometheus メトリックのクエリ実行と分析
Prometheus データは PromQL を介して取得されます。 独自のクエリを記述したり、オープン ソース コミュニティからのクエリを使用したり、PromQL クエリを含む Grafana ダッシュボードを使用したりできます。 詳細については、Prometheus Web サイトの Prometheus のクエリに関する記事を参照してください。
次の Azure サービスは、Azure Monitor ワークスペースからの Prometheus メトリックのクエリをサポートしています。
- PromQL を使用した Azure Monitor メトリックス エクスプローラー
- Azure Monitor のブック
- Azure Managed Grafana
- Prometheus クエリ API
PromQL を使用した Azure Monitor メトリックス エクスプローラー
PromQL を使用したメトリックス エクスプローラー (プレビュー) を使用すると、プラットフォームと Prometheus のメトリックを分析して視覚化できます。 PromQL を使用したメトリックス エクスプローラーは、Prometheus メトリックが格納されている Azure Monitor ワークスペースの [メトリック] ペインから入手できます。 詳細については、「PromQL を使用した Azure Monitor メトリックス エクスプローラー」を参照してください。
Azure ブック
Azure のワークブックと PromQL クエリを使用して、Azure Monitor の Prometheus 用マネージド サービスを利用したチャートとダッシュボードを作成します。 詳細については、「Azure のワークブックを使用して Prometheus メトリックのクエリを実行する」を参照してください。
Grafana の統合
Azure Managed Grafana を使用して Prometheus メトリックを可視化します。 Grafana ダッシュボードでデータ ソースとして使用できるように、Azure Monitor ワークスペースを Grafana ワークスペースに接続します。 その後、Prometheus のメトリックを使用する複数の事前構築済みダッシュボードにアクセスします。 また、任意の数のカスタム ダッシュボードを作成することもできます。 詳細については、Grafana ワークスペースのリンクを参照してください。
Prometheus クエリ API
PromQL を使用して REST API を介して、Azure Monitor ワークスペースに格納されている Prometheus メトリックに対してクエリを実行します。 詳細については、「API と PromQL を使用して Prometheus メトリックのクエリを実行する」を参照してください。
ルールとアラート
Prometheus では、PromQL クエリを使用したレコーディング ルールとアラート ルールがサポートされています。 Azure Monitor の Prometheus 用マネージド サービスでは、ルールとアラートが自動的にデプロイされます。 レコーディング ルールに記録されるメトリックは、Azure Monitor ワークスペースに格納されます。 ダッシュボードや他のルールでは、メトリックにクエリを実行できます。
Prometheus 用 Azure Monitor マネージド サービスの規則グループを使用して、アラート ルールとレコーディング ルールを作成および管理できます。 AKS クラスターには、一連の事前定義された Prometheus アラート ルールと記録ルールが用意されており、すぐに開始できます。
アラート ルールによって発行されたアラートは、アラート ルールに対して構成されたアクション グループで定義された内容に従って、アクションまたは通知をトリガーできます。 発行および解決された Prometheus のアラートは、他の種類のアラートの共に Azure portal で確認できます。
サービスの制限とクォータ
Prometheus 用の Azure Monitor マネージド サービスには、インジェストのための既定の制限とクォータがあります。 インジェスト制限に達すると、スロットリングが発生する可能性があります。 これらの制限の引き上げを要求できます。 詳細については、Azure Monitor のサービスの制限に関するページを参照してください。
インジェスト メトリックを監視してアラートを生成するには、「Azure Monitor ワークスペース メトリックのインジェストを監視する」を参照してください。
制限事項
Prometheus 用 Azure Monitor マネージド サービスには、次の制限事項が適用されます。
- メトリックのスクレイピングと格納の最小頻度は 1 秒です。
- ノードの更新中に、クラスター レベル コレクターからの一部のメトリック収集で 1 から 2 分間のギャップが発生する場合があります。 このギャップは、クラスター内のノードを更新するための、Azure Kubernetes Service からの定期的なアクションが原因です。 この動作は、推奨される警告ルールの影響を受けません。
- Windows ノードのマネージド Prometheus は自動的に有効になりません。 クラスターで Windows ノードおよびポッドの監視を有効にするには、「Windows メトリック収集を有効にする (プレビュー)」を参照してください。
大文字小文字の区別
Prometheus 用の Azure Monitor マネージド サービスは、大文字と小文字を区別しないシステムです。 文字列 (メトリック名、ラベル名、ラベル値など) が、文字列の大文字と小文字が異なるだけで別の時系列と異なる場合、それらの文字列は同じ時系列として扱われます。
Note
大文字と小文字を区別するシステムであるネイティブ オープンソース Prometheus ではこの動作は異なります。 Azure 仮想マシン、Virtual Machine Scale Sets、または Azure Kubernetes Service クラスター内で実行されているセルフマネージド Prometheus インスタンスは、大文字と小文字が区別されるシステムです。
Prometheus 用マネージド サービスでは、次の時系列は同じと見なされます。
diskSize(cluster="eastus", node="node1", filesystem="usr_mnt")
diskSize(cluster="eastus", node="node1", filesystem="usr_MNT")
前述の例は、時系列データベースの 1 つの時系列です。 次の考慮事項が適用されます。
- それらに対して取り込まれたサンプルは、単一の時系列に対してスクレイピングされたか取り込まれたかのように格納されます。
- 前述の例が同じタイムスタンプで取り込まれた場合、そのうちの 1 つがランダムに削除されます。
- 時系列データベースに格納され、クエリで返される大文字と小文字は予測できません。 同じ時系列でも、異なる大文字と小文字が異なるタイミングで返される場合があります。
- クエリに存在するメトリック名またはラベル名/値マッチャーは、大文字と小文字を区別しない比較を通じて、時系列データベースから取得されます。 クエリに大文字と小文字を区別するマッチャーがある場合、文字列比較では大文字と小文字を区別しないマッチャーとして自動的に扱われます。
時系列を生成またはスクレイピングするには、単一の一貫したケースを使用するのがベスト プラクティスです。
オープンソースの Prometheus は、前述の例を 2 つの異なる時系列として扱います。 スクレイピングされるか取り込まれたサンプルは、個別に保存されます。
Prometheus の参照情報
Prometheus のドキュメントへのリンクを次に示します。
関連するコンテンツ
- Kubernetes クラスターの監視を有効にする
- 仮想マシン、スケール セット、または Kubernetes クラスターから Azure Monitor ワークスペースに Prometheus メトリックを送信する
- Windows メトリック収集を有効にする (プレビュー)
- Prometheus 用の Azure Monitor マネージド サービスのルール グループを構成する
- Prometheus 用 Azure Monitor マネージド サービスで Prometheus メトリックのスクレイピングをカスタマイズする
- Azure Monitor での Prometheus メトリックの収集のトラブルシューティング