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