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

Simple Log Service:MetricStore HTTP API の戻り値

最終更新日:Nov 09, 2025

Simple Log Service (SLS) は、時系列メトリックのクエリ、または MetricStore へのメトリックデータの書き込みを行うためのいくつかの API を提供します。これらの API は、オープンソースの Prometheus プロトコルと互換性があります。このトピックでは、これらの API の戻り値について説明します。

レスポンス構造体

MetricStore Prometheus の書き込みおよびクエリ API のレスポンス構造体は、Prometheus の公式定義に従います。SLS は slsStatus フィールドを追加して、より詳細なエラーメッセージと処理ポリシーを提供します。

Prometheus API のレスポンス構造体は次のとおりです。

HTTP Header :
x-sls-request-id : <string>  // このリクエストの RequestId

HTTP Response Body :
{
  "status": "success" | "error",
  "data": <data>,

  // SLS によって返される内部エラーメッセージ。このフィールドは、クエリ中に警告またはエラーが発生した場合にのみ存在します。
  "slsStatus" : {
     // リトライポリシー
     "retryPolicy" : "None" | "Once" | "Continuous",
     // エラーコード
     "errorCode" : "<string>",
     // エラーメッセージ
     "errorMessages" : ["<string>"]
  }

  // クエリ分析中にエラーが発生した場合、次の 2 つの項目が返されます。
  "errorType": "<string>",
  "error": "<string>",
  
  // 警告メッセージを返します。通常は不完全なクエリを示します。
  "warnings": ["<string>"],
  // 通常は特別な処理を必要としない一般情報を返します。
  "infos": ["<string>"]
}

リトライポリシー

リトライポリシーは、エラー発生時のクライアントのリトライ動作をガイドします。これにより、ユーザーエクスペリエンスを低下させる可能性のある効果のないリトライを防ぎます。

リトライポリシー

説明

推奨される操作

Once

エラーは、スロットリングなどの要因によって引き起こされる可能性があります。一度リトライすると同じエラーが発生する可能性がありますが、回復する可能性はわずかにあります。

一定期間 (300 ms 以上を推奨) 待ってから、一度リトライします。同じリターンコード (Once) が再度受信された場合は、リトライを停止します。

Continuous

サーバー側の問題が存在します。間隔を置いて継続的にリトライしてください。サービスが回復する可能性があります。

アニーリング戦略を使用してリトライします。推奨されるアニーリングメソッドは次のとおりです。

  1. 最初のリトライの前に 300 ms 待ちます。

  2. Continuous ポリシーが再度返された場合は、待機時間を 2 倍にします。待機時間が 10 秒を超える場合は、10 秒を上限とします。

  3. Continuous 以外のポリシーが返された場合は、そのポリシーの処理ロジックに従います。

None

同じリクエストを再度送信すると、このエラーは確実に再度発生します。

リトライしないでください。

状態コードと推奨される操作

リクエストタイプ

HTTP ステータスコード

ErrorCode

説明

リトライポリシー

推奨される操作

クエリ & 書き込み

200

None

リクエストは成功しました。

None

None

クエリ

200

ShardPartialSuccess

一部のシャードで実行が失敗しました。これは通常、キューがいっぱいであるか、故障が原因です。

Continuous

アニーリング戦略を使用してリトライします。詳細については、Continuous リトライポリシーをご参照ください。

クエリ

200

ShardResourceExceed

リクエストされたデータボリュームがシャードの読み取り制限を超えています。詳細については、「MetricStore」をご参照ください。

Once

一度リトライします。次のリクエストでエラーが再度発生する可能性があります。シャードを分割するか、並列計算モードを使用してください。

クエリ

200

EngineResourceExceed

このエラーは通常、実行前にコンピュートエンジンがデータボリュームが制限をはるかに超えていることを検出したために返されます。詳細については、「MetricStore」をご参照ください。

None

時間範囲を狭めるか、クエリを最適化してスキャンされるデータ量を減らします。並列計算モードを使用することもできます。

クエリ

200

BadDataWarning

データの問題によって引き起こされる計算エラー。これは、Prometheus Query Language (PromQL) の複数要素オペレーターでデータが一致しないシナリオで一般的です。この場合、部分的な計算結果のみが保持されます。

None

データとクエリがビジネス要件を満たしているかどうかを確認します。データまたはクエリを最適化します。

クエリ & 書き込み

400

BadParameterError

クエリパラメーターまたは構文エラー。

None

エラーメッセージを表示し、文またはパラメーターを修正します。

クエリ & 書き込み

422

BadDataError

データの問題によって引き起こされる計算または書き込みエラー。

None

データとクエリがビジネス要件を満たしているかどうかを確認します。データまたはクエリを最適化します。

クエリ

422

EngineExecutionExceed

コンピュートエンジンでの計算に関わるデータ量が制限を超えています。詳細については、「MetricStore」をご参照ください。

None

時間範囲を狭めるか、クエリを最適化してスキャンされるデータ量を減らします。並列計算モードを使用することもできます。

クエリ & 書き込み

401

未承認

操作に対する権限がありません。

なし

詳細については、「概要」をご参照ください。アカウントに権限を付与してください。

クエリと書き込み

404

プロジェクトが存在しません

プロジェクトは存在しません。

なし

プロジェクトが削除されていない場合は、プロジェクト名とエンドポイントが正しいかどうかを確認してください。

クエリ & 書き込み

404

MetricStoreNotExist

MetricStore が存在しません。

なし

MetricStore が削除されていない場合は、MetricStore 名が正しいかどうかを確認してください。

クエリ

503

EngineQueueTimeout

エンジンキューがタイムアウトしました。これは通常、エンジンの負荷が高いことが原因です。

継続的

アニーリング戦略を使用して再試行してください。エラーが解決しない場合は、チケットを送信してテクニカルサポートにご連絡ください。

クエリ

500

エンジン実行エラー

エンジンの実行中に不明なエラーが発生しました。これは通常、無効なデータ形式が原因です。

1 回

一度再試行してください。エラーが解決しない場合は、チケットを送信してください。

クエリ

502

エンジン実行タイムアウト

クエリの実行中にエンジンがタイムアウトしました。これは通常、エンジンの負荷が高いか、クエリの複雑度が高いことが原因です。

1回

一度再試行してください。エラーが解決しない場合は、チケットを送信してください。

書き込み

500

WriteQuotaExceed

プロジェクトまたはシャードのクォータを超過したことによる書き込みエラー。詳細については、「データの読み書き操作」をご参照ください。

  • : クォータを超過した場合、SLS OpenAPI は HTTP ステータスコード 403 を返します。ただし、公式の Prometheus プロトコルではクォータ超過エラーの戻り値の型が定義されていないため、オープンソースのエージェントが適切にリトライできるように、状態コードは 500 に設定されます。

継続的

書き込みリトライにはアニーリング戦略を使用します。また、エラーメッセージを確認してください。プロジェクトのクォータが超過した場合は、チケットを送信してテクニカルサポートに連絡し、クォータの調整を依頼してください。ストアのクォータが超過した場合は、ストアの自動 Shard Split を有効にするか、手動でシャードを分割します。

クエリ & 書き込み

500

内部サーバーエラー

その他の内部システムエラー。

継続的

アニーリング戦略を使用して再試行してください。エラーが解決しない場合は、チケットを送信してください。

応答例

成功したリクエスト

{
    "status": "success",
    "data": {
        "resultType": "matrix",
        "result": [
            {
                "metric": {},
                "values": [
                    [
                        1673798460,
                        "11111111"
                    ],
                    [
                        1673799060,
                        "22222222"
                    ],
                    [
                        1673799660,
                        "33333333"
                    ]
                ]
            }
        ]
    }
}

返された部分データ

クエリが不完全な場合、部分的なデータが返されます。この場合、slsStatus フィールドには詳細なエラーメッセージとリトライポリシーが含まれます。

{
	"status": "success",
	"slsStatus": {
		"retryPolicy": "Once",
		"errorCode": "ShardResourceExceed",
		"errorMessages": ["sls response error 1 task data", "sls response drop 1 task data"]
	},
	"data": {
		"resultType": "vector",
		"result": [{
			"metric": {
				"__name__": "up",
			},
			value: [
				1747807789.37,
				"1"
			]
		}]
	},
	"warnings": ["sls response error 1 task data", "sls response drop 1 task data"]
}

返されたエラー

例 1

{
	"status": "error",
	"slsStatus": {
		"errRetryPolicy": "None",
		"errCode": "EngineResourceExceed",
		"errMessages": ["too many time Series or items"]
	},
	"data": {
	},
	"error": "too many time Series or items"
}

例 2

{
	"status": "error",
	"slsStatus": {
		"retryPolicy": "None",
		"errorCode": "BadDataError",
		"errorMessages": ["vector cannot contain metrics with the same labelset"]
	},
        "data": {
	},
	"error": "vector cannot contain metrics with the same labelset"
}

シナリオ

フロントエンド表示

MetricStore は、組み込みのメトリック可視化機能を備え、ダッシュボードの構築をサポートし、Grafana と互換性があります。クエリが異常な場合、組み込みの可視化ソリューションは関連情報をチャートに自動的に表示します。

  • より良い警告メッセージを表示するには、Grafana 10.0 以降を使用してください。

MetricStore Prometheus API に基づいてカスタム可視化ソリューションを構築する場合、次のポリシーに基づいて例外を処理します。

  1. HTTP ステータスコードが 200 の場合、チャートは正常にレンダリングされます。

    1. slsStatus フィールドが存在する場合、チャートに警告メッセージを表示し、RetryPolicy に基づいてソリューションを提供します。

  2. HTTP ステータスコードが 200 でない場合、エラーメッセージをチャートに直接表示し、RetryPolicy に基づいてソリューションを提供します。

二次データ計算シナリオ

MetricStore は、Scheduled SQL を使用して集計データを定期的に計算することをサポートしています。MetricStore の Prometheus API に基づいてカスタムの二次計算シナリオを構築する場合、次のポリシーに従って異常を処理することをお勧めします。

  1. 状態コードが 200 の場合:

    1. slsStatus フィールドが存在しない場合は、データを保存し、次のスケジュールされたジョブに進みます。

    2. slsStatus フィールドが存在する場合は、次のように RetryPolicy に基づいて例外を処理します。

      1. None: 一度リトライします。ポリシーがまだ None の場合は、タスクを失敗としてマークし、次のスケジュールされたジョブに進みます。

      2. Once: 一度リトライします。ポリシーがまだ Once の場合は、タスクを失敗としてマークし、次のスケジュールされたジョブに進みます。

      3. Continuous: アニーリング戦略を使用してリトライします。リトライが一定期間 (10 〜 30 分を推奨) 続く場合は、タスクを失敗としてマークし、次のスケジュールされたジョブに進みます。

  2. 状態コードが 200 でない場合:

    1. slsStatus フィールドが存在しない場合、エラーは通常ネットワークの問題が原因です。継続的なリトライが推奨されます。

    2. slsStatus フィールドが存在する場合は、次のように RetryPolicy に基づいて例外を処理します。

      1. None: 一度リトライします。ポリシーがまだ None の場合は、タスクを失敗としてマークし、次のスケジュールされたジョブに進みます。

      2. Once: 一度リトライします。ポリシーがまだ Once の場合は、タスクを失敗としてマークし、次のスケジュールされたジョブに進みます。

      3. Continuous: アニーリング戦略を使用してリトライします。リトライが一定期間 (10 〜 30 分を推奨) 続く場合は、タスクを失敗としてマークし、次のスケジュールされたジョブに進みます。

リアルタイムアラートシナリオ

SLS を使用すると、MetricStore で直接アラートを作成できます。ただし、MetricStore の Prometheus API に基づいてカスタムのリアルタイムアラートシステムを構築する場合、次のポリシーを使用して異常を処理できます。

  1. 状態コードが 200 の場合:

    1. slsStatus フィールドが存在しない場合は、アラート条件を正常にモニターします。

    2. slsStatus フィールドが存在する場合は、次のように RetryPolicy に基づいて例外を処理します。

      1. None: 現在のアラート実行を失敗としてマークし、次のスケジュールされた実行に進みます。

      2. Once: 一度リトライします。ポリシーがまだ Once の場合は、現在のアラート実行を失敗としてマークし、次のスケジュールされた実行に進みます。

      3. Continuous: アニーリング戦略を使用してリトライします。リトライが一定期間 (1 分以内を推奨) 続く場合は、現在のアラート実行を失敗としてマークし、次のスケジュールされた実行に進みます。

  2. 状態コードが 200 でない場合:

    1. slsStatus フィールドが存在しない場合、エラーは通常ネットワークの問題が原因です。継続的なリトライが推奨されます。

    2. slsStatus フィールドが存在する場合は、次のように RetryPolicy に基づいて例外を処理します。

      1. None: 現在のアラート実行を失敗としてマークし、次のスケジュールされた実行に進みます。

      2. Once: 一度リトライします。ポリシーがまだ Once の場合は、現在のアラート実行を失敗としてマークし、次のスケジュールされた実行に進みます。

      3. Continuous: アニーリング戦略を使用してリトライします。リトライが一定期間 (1 分以内を推奨) 続く場合は、現在のアラート実行を失敗としてマークし、次のスケジュールされた実行に進みます。

  • 推奨事項:

    • 合計リトライ時間は、スケジュールされたアラートの間隔を超えないようにしてください。たとえば、アラート間隔が 1 分で、合計リトライ時間が 1 分を超える場合は、現在の実行をスキップして次の実行に進みます。そうしないと、新しくより重要なデータのアラートを見逃す可能性があります。

    • 失敗したアラート実行のデータを別の LogStore に書き込み、必要に応じてアラートを設定することをお勧めします。詳細については、「アラートログのカスタム分析」をご参照ください。