Managed Service for Prometheus は、Alibaba Cloud コンソールの外部からモニタリングデータをクエリできる HTTP API URL を公開します。一般的なユースケースは次の 2 つです:
セルフマネージド Grafana:HTTP API URL を Prometheus データソースとして追加し、ご利用の Grafana インスタンスでメトリックを可視化します。
カスタムアプリケーション:Prometheus 互換の HTTP API を直接呼び出して、プログラムでメトリックを取得します。
認証
Managed Service for Prometheus は 2 つのインスタンスバージョンをサポートしており、それぞれ認証方式が異なります。
| インスタンスバージョン | 認証方式 | 認証情報 |
|---|---|---|
| Prometheus V1 | トークンベース (任意) | コンソールで生成された認証トークン |
| Prometheus V2 | Basic 認証 (必須) | ご利用のアカウントの AccessKey ID と AccessKey Secret。また、関連付けられた RAM ユーザーは AliyunPrometheusMetricReadAccess または AliyunCloudMonitorFullAccess 権限を持っている必要があります |
Prometheus V2 の場合、データアクセスにはご利用のアカウントの AccessKey ID と AccessKey Secret の両方が必要です。また、関連付けられた RAM ユーザーは AliyunPrometheusMetricReadAccess または AliyunCloudMonitorFullAccess システム権限を持っている必要があります。
前提条件
開始する前に、次のものが揃っていることを確認してください:
接続済みの Prometheus インスタンス。設定手順については、以下をご参照ください:
(Grafana の場合) 管理者アクセス権を持つセルフマネージド Grafana インスタンス
(Prometheus V2 の場合) ご利用のアカウントの AccessKey ペア。また、関連付けられた RAM ユーザーは必要な権限を持っている必要があります
HTTP API URL の取得
CloudMonitor コンソールにログインします。
左側のナビゲーションウィンドウで、Managed Service for Prometheus > インスタンス を選択します。
上部のナビゲーションバーで、ご利用の Prometheus インスタンスが存在するリージョンを選択します。
ご利用の Prometheus インスタンスを見つけ、操作 列の 設定 をクリックします。
設定 タブで、HTTP API URL をコピーします。

ご利用の Grafana インスタンスまたはアプリケーションが Alibaba Cloud 内部ネットワークの外部にある場合は、パブリック URL を使用します。
ご利用の Grafana インスタンスまたはアプリケーションが同じ Alibaba Cloud リージョン内で実行されており、内部エンドポイントにアクセスできる場合は、内部 URL を使用します。
(Prometheus V1 のみ) トークンの生成 をクリックして認証トークンを作成します。後で使用するために、このトークンを保存してください。
Prometheus V1 インスタンスの場合、トークンを生成した後、Grafana データソースを設定する際にそのトークンを含める必要があります。トークンがないと、Grafana はインスタンスからモニタリングデータを読み取ることができません。
セルフマネージド Grafana データソースの設定
データソースの追加
管理者としてご利用の Grafana インスタンスにログインします。
Connections > Data sources に移動します。
このメニューは Grafana 管理者にのみ表示されます。Grafana 8 以前では、Configuration > Data sources に移動します。Connections メニューは Grafana 9 以降で利用できます。
+ Add data source をクリックし、Prometheus を選択します。
Name フィールドに、データソースのわかりやすい名前を入力します。
HTTP セクションの Prometheus server URL フィールドに、先ほどコピーした HTTP API URL を貼り付けます。
認証の設定
ご利用の Prometheus インスタンスのバージョンに応じた手順に従ってください。
Prometheus V1
トークンを生成した場合は、カスタム HTTP ヘッダーとして追加します:
Custom HTTP Headers セクションで、+ Add header をクリックします。
Header を
Authorizationに設定します。Value を認証トークンに設定します。

Prometheus V2
Basic auth をオンにします。
User をご利用の AccessKey ID に設定します。
Password をご利用の AccessKey Secret に設定します。

保存とテスト
Save & test をクリックします。成功メッセージが表示され、Grafana が Prometheus データソースに到達できることを確認します。
Grafana でのデータソースの検証
Grafana で Dashboards に移動し、New > New dashboard をクリックします。
+ Add visualization をクリックし、設定したデータソースを選択します。
Edit Panel ページで、Query タブを開きます。セクション A で、Metrics フィールドにメトリック名 (例:
arms_prometheus_target_interval_length_seconds_sum) を入力し、必要に応じて Label filters を設定します。Run queries をクリックします。
メトリックデータを含むチャートがレンダリングされれば、データソースは機能しています。チャートが表示されない場合は、API URL またはトークンが有効であるか、またデータソースにモニタリングデータがあるかを確認してください。その他のヘルプについては、「トラブルシューティング」をご参照ください。
プログラムによる HTTP API のクエリ
以下の例では、即時クエリに /api/v1/query エンドポイントを使用します。範囲クエリ (/api/v1/query_range)、シリーズメタデータ、およびその他のエンドポイントについては、「Prometheus HTTP API リファレンス」をご参照ください。
Prometheus V1
curl -G '<your-http-api-url>/api/v1/query' \
-H 'Authorization: <your-token>' \
-H 'Accept: application/json' \
--data-urlencode 'query=arms_prometheus_target_interval_length_seconds_sum' \
--data-urlencode 'time=1635302655' \
--data-urlencode 'timeout=1000'次のプレースホルダーを実際の値に置き換えます:
| プレースホルダー | 説明 | 例 |
|---|---|---|
<your-http-api-url> | 設定 タブの HTTP API URL | https://cn-hangzhou.arms.aliyuncs.com/... |
<your-token> | コンソールで生成された認証トークン | eyJhbGciOi... |
また、Python の requests ライブラリを使用して API を呼び出すこともできます:
import requests
token = "your-token"
api_url = "https://your-prometheus-api-url"
response = requests.get(
f"{api_url}/api/v1/query",
params={"query": "up"},
headers={"Authorization": f"Bearer {token}"}
)
data = response.json()
for result in data["data"]["result"]:
print(f"Metric: {result['metric']}")
print(f"Value: {result['value']}")token を「HTTP API URL の取得」の手順で生成した認証トークンに、api_url をご利用の HTTP API URL に置き換えてください。
Prometheus V2
curl -G '<your-http-api-url>/api/v1/query' \
-u '<your-accesskey-id>:<your-accesskey-secret>' \
-H 'Accept: application/json' \
--data-urlencode 'query=arms_prometheus_target_interval_length_seconds_sum' \
--data-urlencode 'time=1635302655' \
--data-urlencode 'timeout=1000'次のプレースホルダーを実際の値に置き換えます:
| プレースホルダー | 説明 | 例 |
|---|---|---|
<your-http-api-url> | 設定 タブの HTTP API URL | https://cn-hangzhou.arms.aliyuncs.com/... |
<your-accesskey-id> | ご利用のアカウントの AccessKey ID | LTAI5tXxx... |
<your-accesskey-secret> | ご利用のアカウントの AccessKey Secret | xXxXxXx... |
-uフラグは、AccessKey ID と AccessKey Secret を Base64 のAuthorization: Basicヘッダーとして自動的にエンコードします。
curl に加えて、Python の requests ライブラリと Basic 認証を使用して API を呼び出すこともできます:
import requests
import time
# コンソールから HTTP API URL を取得します。
api_url = 'http://cn-hangzhou.arms.aliyuncs.com:9090/api/v1/prometheus/{token}/{user_id}/{cluster_id}/{region}'
# AccessKey ID をユーザー名として、AccessKey Secret をパスワードとして使用します。
ak_id = 'your_access_key_id'
ak_secret = 'your_access_key_secret'
# メトリックをクエリします。
resp = requests.get(f'{api_url}/api/v1/query', params={'query': 'up'}, auth=(ak_id, ak_secret))
print(resp.json())
# 範囲クエリ (過去 1 時間)。
end = int(time.time())
start = end - 3600
resp = requests.get(f'{api_url}/api/v1/query_range', params={'query': 'up', 'start': start, 'end': end, 'step': '60s'}, auth=(ak_id, ak_secret))
print(resp.json())ak_id と ak_secret をご利用のアカウントの AccessKey ID と AccessKey Secret に置き換え、api_url の HTTP API URL を「HTTP API URL の取得」で取得したものに置き換えてください。API は STS 認証もサポートしており、その場合のシークレットのフォーマットは {secret}${STS Token} です。詳細については、「STS とは」をご参照ください。
クエリパラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
query | はい | 評価する PromQL 式 |
time | いいえ | 評価タイムスタンプ (UNIX タイムスタンプまたは RFC 3339)。デフォルトは現在のサーバー時間です |
timeout | いいえ | 評価タイムアウト (ミリ秒) |
トラブルシューティング
| 現象 | 考えられる原因 | 解決策 |
|---|---|---|
| HTTP 401 Unauthorized | 認証情報が無効または欠落 | トークン (V1) または AccessKey ペア (V2) を確認します。期限切れの場合は再生成してください。 |
| HTTP 403 Forbidden | 権限が不十分 | RAM ユーザーに AliyunPrometheusMetricReadAccess または AliyunCloudMonitorFullAccess を付与します。 |
| 接続タイムアウト | ネットワーク到達不能 | Grafana が Alibaba Cloud の外部で実行されている場合は、パブリック HTTP API URL を使用します。同じリージョン内で実行されている場合は、内部 URL を使用します。 |
| Grafana チャートにデータがない | クエリされたメトリックに取り込まれたデータがない | Prometheus インスタンスがアクティブにターゲットをスクレイピングしており、メトリック名が正しいことを確認します。 |
関連トピック
Prometheus HTTP API リファレンス -- 範囲クエリ (
/api/v1/query_range)、ラベルクエリ、シリーズメタデータを含むクエリエンドポイントの完全な API ドキュメントGrafana ダッシュボードの作成 -- 接続されたデータソースを使用してダッシュボードを構築します