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

Application Real-Time Monitoring Service:Pushgateway を使用したデータのプッシュ

最終更新日:Jun 22, 2026

このトピックでは、Managed Service for Prometheus が提供する Pushgateway 機能を使用してデータをプッシュする方法について説明します。

ソリューション概要

データソースが Prometheus サーバーによって定期的にプルできない、またはプルされるべきでない場合 (たとえば、ネットワーク接続が安定していない環境など) は、Pushgateway を使用できます。データソースはまずモニタリングデータを Pushgateway に送信し、その後、Prometheus サーバーが定期的にデータを取得します。手順は次のとおりです:

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

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

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

前提条件

Prometheus インスタンスを作成済みであること。詳細については、以下をご参照ください:

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

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

  2. ページ上部のメニューバーで、お使いの Prometheus インスタンスが存在するリージョンを選択し、送信先クラスターの 操作 列で 設定 をクリックします。

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

    このセクションのテーブルには、パブリックネットワークプライベートネットワークの 2 行が含まれています。パブリック URL のフォーマットは https://{regionId}.arms.aliyuncs.com/prometheus/{token}/{regionId}/api/v2 で、プライベート URL のフォーマットは http://{regionId}-intranet.arms.aliyuncs.com/prometheus/{token}/{regionId}/api/v2 です。

ステップ 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.", // DB バックアップが最後に成功したときのタイムスタンプ。
})
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 {
    // ここにコードを記述します。
    // これは成功後にのみレジストリに追加されるため、失敗時に Pushgateway での以前の成功が上書きされることはありません。
    Gauge lastSuccess = Gauge.build()
            .name("my_batch_job_last_success").help("Last time my batch job succeeded, in unixtime.").register(registry); // バッチジョブが最後に成功した時刻 (unixtime)。
    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. トークンの取得: 左側のナビゲーションウィンドウで、設定 を選択します。設定 タブの [トークン] セクションで、トークンの生成 をクリックします。

  2. トークンの受け渡し:トークンを生成した後、次のいずれかの方法でトークンを渡すことができます。

    • 方法 1:クライアントのリクエストヘッダーにトークンを設定します。設定しない場合、システムは書き込みリクエストを拒否します。次のヘッダーフォーマットを使用します:

      Authorization: Bearer <token>
    • 方法 2:Pushgateway SDK は基本的な Basic 認証のみをサポートし、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 バージョン

オープンソース 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.", // DB バックアップが最後に成功したときのタイムスタンプ。
})
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 {
    // ここにコードを記述します。
    // これは成功後にのみレジストリに追加されるため、失敗時に Pushgateway での以前の成功が上書きされることはありません。
    Gauge lastSuccess = Gauge.build()
            .name("my_batch_job_last_success").help("Last time my batch job succeeded, in unixtime.").register(registry); // バッチジョブが最後に成功した時刻 (unixtime)。
    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 オペレーションは Security Token Service (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 インスタンスを選択し、データが正常にプッシュされたかどうかを確認します。

    wt