すべてのプロダクト
Search
ドキュメントセンター

Managed Service for Prometheus:Pushgateway を使用したデータのプッシュ

最終更新日:Jun 24, 2026

定期的なスクレイプが困難なデータソース向けに、Pushgateway を使用してモニタリングデータを Managed Service for Prometheus にプッシュします。

ソリューション概要

Prometheus Server による定期的なスクレイプが不可能または望ましくない環境(ネットワーク接続が不安定な環境など)では、代わりに Pushgateway を使用できます。データソースはモニタリングデータを Pushgateway に送信し、Prometheus Server が定期的にそのデータを取得します。以下の手順に従ってください。

  1. Pushgateway エンドポイントの取得Managed Service for Prometheus コンソールから Pushgateway エンドポイントを取得します。

  2. データのレポート: curl コマンドまたはオープンソース SDK を使用してデータをプッシュします。メトリックが Prometheus によって迅速かつ確実に収集・監視されることを保証します。

  3. データ保護構成の追加(オプション): 標準の Pushgateway プロトコルにはデータ保護機能が含まれていません。Pushgateway SDK は Basic Auth のみをサポートしており、高度で標準化された認証方式を備えていません。Pushgateway エンドポイントを取得したクライアントであれば誰でもデータをプッシュできます。データを保護するには、Managed Service for Prometheus コンソールからトークンを取得し、標準的な JWT ベースの認証を実装してください。

前提条件

Prometheus インスタンス を作成済みである必要があります。詳細については、以下をご参照ください。

ステップ 1:Push Gateway エンドポイントの取得

  1. Cloud Monitor コンソール にログインします。左側のナビゲーションウィンドウで、Managed Service for Prometheus > Instances を選択します。Instances ページが表示されます。

  2. ページ上部のメニューバーで、ご利用の Prometheus インスタンスが存在するリージョンを選択します。対象クラスターの 操作 列で、設定 をクリックします。

  3. 設定 タブで、プッシュゲートウェイアドレス セクションを見つけ、パブリック URL をコピーします。

    このセクションには プライベートネットワーク 向けの Push Gateway URL も提供されています。実際のネットワーク環境に応じて適切な URL を選択してください。

ステップ 2:データのレポート

V1 バージョン

オープンソース SDK を使用したデータのプッシュ

重要
  • データプロトコルは現在、Text Format および Protobuf Delimited をサポートしています。Protobuf Text、Protobuf Compact-Text、OpenMetrics はサポートされていません。SDK は通常、Protobuf Delimited をデフォルトとしています。

  • メトリックの HELP メタデータは中国語文字をサポートしていません。HELP に中国語文字が含まれている場合、データレポートは失敗します。

以下の Go および Java の例は、オープンソース SDK を使用してメトリックをプッシュする方法を示しています。

Go の例:

completionTime := prometheus.NewGauge(prometheus.GaugeOpts{
    Name: "db_backup_last_completion_timestamp_seconds",
    Help: "The timestamp of the last successful completion of a DB backup.",
})
completionTime.SetToCurrentTime()
url :   = "https://cn-hangzhou.arms.aliyuncs.com/prometheus/52b12ea9cf4bb9e35****/16727530178****/1df8lj***/cn-hangzhou/api/v2"
pusher := push.New(url, "test").
    Collector(completionTime).Client(http.DefaultClient).
    Grouping("key1", "test1").Grouping("key2", "dfdf/sdsd/").
    Format(expfmt.FmtProtoDelim)
if err := pusher.Push(); err != nil {
    fmt.Println("Could not push completion time to PushGateway: ", err)
}

Java の例:

CollectorRegistry registry = new CollectorRegistry();
Gauge duration = Gauge.build()
        .name("my_batch_job_duration_seconds").help("Duration of my batch job in seconds.").register(registry);
Gauge.Timer durationTimer = duration.startTimer();
try {
    // Your code here.
    // This is only added to the registry after success,
    // so that a previous success in the Pushgateway isn't overwritten on failure.
    Gauge lastSuccess = Gauge.build()
            .name("my_batch_job_last_success").help("Last time my batch job succeeded, in unixtime.").register(registry);
    lastSuccess.setToCurrentTime();
} finally {
    durationTimer.setDuration();
    PushGateway pg = new PushGateway(new URL("https://cn-hangzhou.arms.aliyuncs.com/prometheus/52b12ea9cf4bb9e35****/16727530178****/1df8lj***/cn-hangzhou/api/v2"));
    pg.pushAdd(registry, "my_batch_job");
}
説明
  • オープンソース SDK を使用して Prometheus Monitoring コンソールから取得した Pushgateway エンドポイントを入力すると、システムは自動的に /metrics/job/<JOB_NAME>{/<LABEL_NAME>/<LABEL_VALUE>} のようなサフィックスを追加します。オープンソース SDK を使用しない場合は、このサフィックスを自分で追加する必要があります。追加しないと、404 エラーが返されます。

  • Managed Service for Prometheus の共有テナントクラスターにデータをプッシュする場合、すべてのメトリックにラベル tenant_userid=**** を含める必要があります。タグ値は、当該メトリックが属する Alibaba Cloud アカウント ID(つまりルートアカウント ID)でなければなりません。これにより、メトリックの所有権を区別できます。

curl コマンドを使用したデータのプッシュ

重要

リクエストタイプ application/x-www-form-urlencoded はサポートされていません。curl コマンドでは、ヘッダーに Content-Type: text/plain; version=0.0.4; charset=utf-8 を指定してください。

echo "some_metric 3.14" | curl -H "Content-Type: text/plain; version=0.0.4; charset=utf-8" --data-binary @- https://cn-hangzhou.arms.aliyuncs.com/prometheus/51bbea9ck41b9e35****/16727530178****/1df8lj***/cn-hangzhou/api/v2/metrics/job/job_name/label_key_1/label_value_1/label_key_2/label_value_2
説明
  • URL に複数のラベルを追加できますが、URL の全長が制限内に収まるようにしてください。

  • URL 内の “job_name” は、実際のジョブ名に置き換えてください。

データ保護構成の追加(オプション)

  1. トークンの取得: 左側のナビゲーションウィンドウで、設定 を選択します。設定 タブの Token セクションで、トークンの生成 をクリックします。

  2. トークンの渡し方: トークンを生成したら、以下のいずれかの方法でトークンを渡します。

    • 方法 1: クライアントのリクエストヘッダーにトークンを設定して、通常どおりデータをプッシュします。設定しない場合、書き込みリクエストは拒否されます。以下のヘッダー形式を使用します。

      Authorization: Bearer <token>
    • 方法 2: Pushgateway SDK は Basic Auth のみをサポートしており、JWT をサポートしていません。SDK を認証付きで使用するには、BasicAuth インターフェイスを使用し、パスワードにトークンを設定します。サーバー側はこの認証方式をサポートしています。方法 1 は追加の開発作業が必要です。以下の例は Go SDK を使用しています。

      pusher := push.New(url, "test").
              Collector(completionTime).Client(http.DefaultClient).
              Grouping("key1", "test1").Grouping("key2", "dfdf/sdsd/").
              .BasicAuth("admin", "actual token value").
              Format(expfmt.FmtProtoDelim)

V2 バージョン

1. RAM ユーザーへの CMS 読み取り/書き込み権限の付与

ご利用の Alibaba Cloud Prometheus インスタンスが Alibaba Cloud アカウントによって作成されており、リモート読み取り/書き込み操作に RAM ユーザーの AccessKey ID および AccessKey Secret を使用する必要がある場合は、まずその RAM ユーザーに CMS 読み取り/書き込み権限を付与する必要があります。

  1. Alibaba Cloud アカウントまたは RAM 管理者として Resource Access Management (RAM) コンソール にログインします。左側のナビゲーションウィンドウで、権限管理 > 承認 を選択します。

  2. 承認 ページで、権限を新規付与する をクリックします。権限を新規付与する ページで、以下のパラメーターを設定します。

    パラメーター

    説明

    リソーススコープ

    必要に応じてリソーススコープを選択します。

    権限付与の対象

    権限を付与する RAM ユーザーを選択します。

    権限ポリシー

    AliyunPrometheusMetricWriteAccess または AliyunCloudMonitorFullAccess を選択します。

  3. OK をクリックし、次に 閉じる をクリックします。

2. データのプッシュ

オープンソース SDK を使用したデータのプッシュ

重要
  • データプロトコルは現在、Text Format および Protobuf Delimited をサポートしています。Protobuf Text、Protobuf Compact-Text、OpenMetrics はサポートされていません。SDK は通常、Protobuf Delimited をデフォルトとしています。

  • メトリックの HELP メタデータは中国語文字をサポートしていません。HELP に中国語文字が含まれている場合、データレポートは失敗します。

以下の Go および Java の例は、オープンソース SDK を使用してメトリックをプッシュする方法を示しています。

Go の例:

completionTime := prometheus.NewGauge(prometheus.GaugeOpts{
    Name: "db_backup_last_completion_timestamp_seconds",
    Help: "The timestamp of the last successful completion of a DB backup.",
})
completionTime.SetToCurrentTime()
url :   = "https://k8s-log-c8b5d0a212ffa41cxxxx.cn-hangzhou.log.aliyuncs.com/prometheus/k8s-log-c8b5d0a212ffa41c0a5xxxx/aliyun-prom-c8b5d0a212ffa41c0xxxx/api/v1/pushgateway"
pusher := push.New(url, "test").
    Collector(completionTime).Client(http.DefaultClient).
    Grouping("key1", "test1").Grouping("key2", "dfdf/sdsd/").
    BasicAuth("ak", "sk").  
    Format(expfmt.FmtProtoDelim)
if err := pusher.Push(); err != nil {
    fmt.Println("Could not push completion time to PushGateway: ", err)
}

Java の例:

CollectorRegistry registry = new CollectorRegistry();
Gauge duration = Gauge.build()
        .name("my_batch_job_duration_seconds").help("Duration of my batch job in seconds.").register(registry);
Gauge.Timer durationTimer = duration.startTimer();
try {
    // Your code here.
    // This is only added to the registry after success,
    // so that a previous success in the Pushgateway isn't overwritten on failure.
    Gauge lastSuccess = Gauge.build()
            .name("my_batch_job_last_success").help("Last time my batch job succeeded, in unixtime.").register(registry);
    lastSuccess.setToCurrentTime();
} finally {
    durationTimer.setDuration();
    PushGateway pg = new PushGateway(new URL("https://k8s-log-c8b5d0a212ffa41cxxxx.cn-hangzhou.log.aliyuncs.com/prometheus/k8s-log-c8b5d0a212ffa41c0a5xxxx/aliyun-prom-c8b5d0a212ffa41c0xxxx/api/v1/pushgateway"));       
    pg.setConnectionFactory(new BasicAuthHttpConnectionFactory("ak", "sk"));  
    pg.pushAdd(registry, "my_batch_job");
}
説明
  • オープンソース SDK を使用して Prometheus Monitoring コンソールから取得した Pushgateway エンドポイントを入力すると、システムは自動的に /metrics/job/<JOB_NAME>{/<LABEL_NAME>/<LABEL_VALUE>} のようなサフィックスを追加します。オープンソース SDK を使用しない場合は、このサフィックスを自分で追加する必要があります。追加しないと、404 エラーが返されます。

  • Managed Service for Prometheus の共有テナントクラスターにデータをプッシュする場合、すべてのメトリックにラベル tenant_userid=**** を含める必要があります。タグ値は、当該メトリックが属する Alibaba Cloud アカウント ID(つまりルートアカウント ID)でなければなりません。これにより、メトリックの所有権を区別できます。

  • API オペレーションはセキュリティトークンサービス (STS) 認証をサポートしています。この場合、BasicAuth のパスワードは {AccessKey Secret}${STS Token} の形式を使用します。

curl コマンドを使用したデータのプッシュ

重要

リクエストタイプ application/x-www-form-urlencoded はサポートされていません。curl コマンドでは、ヘッダーに Content-Type: text/plain; version=0.0.4; charset=utf-8 を指定してください。

echo "some_metric 3.14" | curl -u 'ak:sk' -H "Content-Type: text/plain; version=0.0.4; charset=utf-8" --data-binary @- https://k8s-log-c8b5d0a212ffa41cxxxx.cn-hangzhou.log.aliyuncs.com/prometheus/k8s-log-c8b5d0a212ffa41c0a5xxxx/aliyun-prom-c8b5d0a212ffa41c0xxxx/api/v1/pushgateway/metrics/job/job_name/label_key_1/label_value_1/label_key_2/label_value_2
説明
  • URL に複数のラベルを追加できますが、URL の全長が制限内に収まるようにしてください。

  • URL 内の “job_name” は、実際のジョブ名に置き換えてください。

結果の確認

Grafana を使用して、データが正常にプッシュされたことを確認します。

  1. ApiServer ダッシュボードへの移動: 左側のナビゲーションウィンドウで、ダッシュボードリスト を選択します。次に、ApiServer ダッシュボードのハイパーリンクをクリックします。ダッシュボードページにリダイレクトされます。

  2. Explore を選択してデータを表示: ダッシュボードページで、左側のナビゲーションウィンドウの eu アイコンにカーソルを合わせます。表示されたポップアップボックスで、Explore をクリックします。Explore ページの右側で、ドロップダウンメニューから対応する Explore インスタンスを選択し、データが正常にプッシュされたかどうかを確認します。

    Metrics フィールドにプッシュしたメトリック名(例:db_backup_last_completion_timestamp_seconds)を入力します。Query type を Range に設定します。[実行] をクリック後、下部の Graph エリアに曲線が表示されれば、データは正常にプッシュされています。