ビジネスロジックに基づいてカスタムメトリクスを定義し、オートスケーリングに使用できます。たとえば、1 秒あたりに受信した無効なデータポイント数に基づいてサービスをスケールさせることができます。EAS は、リアルタイムのメトリクスレポート API と、データの収集、保存、可視化、オートスケーリングのための完全なパイプラインを提供します。必要なのは、カスタムメトリクスを定期的にレポートするロジックをコードに追加し、サービスのデプロイ時にそれらを宣言することだけです。デプロイ後、EAS はこのパイプラインを介してサービスのカスタムメトリクスデータを受信し、[サービス監視] ページに表示します。
制限事項
-
オートスケーリングでは、組み込みメトリクスとして QPS と CPU 使用率のみがサポートされています。
-
metricsフィールドは、カスタムイメージまたはカスタムプロセッサを使用してサービスをデプロイする場合にのみ使用できます。
ステップ 1:メトリクスをレポートする API の設定
サービスをデプロイする前に、カスタムイメージまたはカスタムプロセッサを準備する必要があります。コード内で、カスタムメトリクスと、それらを定期的にレポートする API を設定します。詳細については、「Custom Images」または「Custom Processors」をご参照ください。
たとえば、コードで実装した POST リクエストのエンドポイントは http://localhost:8080/api/builtin/realtime_metrics で、リクエストボディは次のとおりです:
[
{
"name": "qps",
"tags": {
"status": "200"
},
"value": 20
},
{
"name": "qps",
"tags": {
"status": "400"
},
"value": 13
}
]
上記の例では、qps という名前のメトリクスをレポートしています。ステータスコード 200 の平均 QPS は 20、ステータスコード 400 の平均 QPS は 13 です。タグを使用してメトリクスを分類または細分化する必要がない単純なシナリオでは、tags フィールドを省略できます:
[
{
"name": "qps",
"value": 20
}
]
この API を定期的に呼び出し、カスタムメトリクスをレポートするコードを作成する必要があります。
ステップ 2:サービスのデプロイ
カスタムメトリクスを定義した後、デプロイ時にサービス設定ファイルの metrics フィールドでそれらを宣言する必要があります。EAS フレームワークはこの宣言を使用してサービスを初期化し、モニタリングダッシュボードを構築します。手順は次のとおりです:
-
サービス設定 JSON ファイルを準備します。
ファイルに
metricsフィールドを追加し、メトリクス名、タイプ、その他の情報を宣言します。次の例は、カスタムイメージを使用してサービスをデプロイするための JSON ファイルを示しています:{ "name": "metrics_test", "containers": [ { "image": "registry-vpc.cn-chengdu.aliyuncs.com/eas/eas-image-****:metrics", "command": "python3 -u /image.py", "port": 5000 } ], "metrics": [ { "name": "qps", "tags": "status" } ], "metadata": { "instance": 1, "cpu": 2, "memory":1000 } }image パラメーターには、準備したカスタムイメージを設定します。metrics フィールド内の各フィールドについては、次の表で説明します。その他のパラメーターについては、「JSON デプロイメント」をご参照ください。
パラメーター
必須
説明
name
はい
サービスがレポートするカスタムメトリクスの名前。
-
EAS はこの名前に基づいて、[サービス監視] ページにモニタリングダッシュボードを作成します。
-
この名前は、オートスケーリングを設定する際に参照メトリクスを指定するために使用します。
tags
いいえ
メトリクスのタグ名。タグを使用してメトリクスを細分化できます。たとえば、ステータスコードで
qpsメトリクスを分類できます。この設定では Docker イメージに基づいてサービスをデプロイし、カスタムイメージでビジネスロジックを構築できます。
metricsフィールドは、qpsという名前のメトリクスと、statusという名前のタグを宣言します。このタグにより、同じメトリクスのデータを分類できます。たとえば、statusタグを使用して、status=200やstatus=400など、異なるステータスコードのリクエスト数を記録できます。 -
-
設定ファイルを使用してモデルサービスをデプロイします。
-
サービスデプロイページに移動します。詳細については、「カスタムデプロイメント」をご参照ください。
-
対応する構成の編集 セクションで、JSON 独立デプロイメント をクリックし、準備した JSON ファイルの内容をエディターに貼り付けます。
-
デプロイメント をクリックします。
-
ステップ 3:メトリクスの表示
サービスのデプロイ後、コードロジックに基づいてカスタムメトリクスデータが定期的にレポートされます。EAS フレームワークは、このデータを受信するためのローカル API を提供します。
-
EAS はこのリアルタイムデータをオートスケーリングに使用します。
-
データパイプラインでは情報はリアルタイムに表示されません。パイプラインがデータを集計するため、監視ページでは分単位の粒度になります。
次の手順では、カスタム qps メトリクスを表示する方法を説明します:
-
[EAS-Online Model Services] ページでサービス名をクリックし、[Service Details] ページを開きます。
-
サービス監視 タブをクリックします。ページの左上隅で、カスタムパネルを選択します。
このパネルには、カスタムメトリクスの監視データが次の2つの部分で表示されます:
-
サービス内のすべてのインスタンスにおけるメトリクスデータの平均。
-
サービス内の各インスタンスのメトリクスデータ。

-
ステップ 4:オートスケーリングの設定
カスタムメトリクスに基づいてサービスのオートスケーリングを有効にできます。手順は組み込みメトリクスの場合と同じです。詳細については、「水平オートスケーリング」をご参照ください。
次の例は、qps カスタムメトリクスに基づいてオートスケーリングを設定する方法を示しています:
-
eascmd を使用してオートスケーリングを有効にします。操作とパラメーターの詳細については、「水平オートスケーリング」をご参照ください。
-
カスタムメトリクスにタグが不要な場合:
eascmd autoscale service_name -Dmin=1 -Dmax=10 -Dstrategies.custom[qps]=3この設定では、平均
qpsメトリクスが 3 を超えるとサービスをスケールアウトし、値が 3 を下回るとスケールインします。 -
カスタムメトリクスをタグレベルで指定する必要がある場合:
eascmd autoscale service_name -Dmin=1 -Dmax=10 -Dstrategies.custom[qps]@status[200]=3この設定では、
statusが200である系列の平均qpsメトリクスが 3 を超えるとサービスをスケールアウトし、値が 3 を下回るとスケールインします。
-
-
コンソールを使用してオートスケーリングを有効にします。操作とパラメーターの詳細については、「水平オートスケーリング」をご参照ください。
-
設定済みのカスタムメトリックでタグを報告する必要がない場合は、自動スケーリング設定 ダイアログボックスの カスタムスケーリングメトリック セクションで、変数名を custom[qps] に、変数値を 3 に設定する必要があります。 自動スケーリング設定ダイアログボックスで、最小インスタンス数を
1に、最大インスタンス数を10に設定します。 カスタムスケーリングメトリックエリアで、変数名をcustom[qps]に、変数値を3に設定し、有効化 をクリックします。 -
カスタムメトリックをタグレベルで指定する必要がある場合は、自動スケーリング設定 ダイアログボックスの カスタムスケーリングメトリック で、変数名を custom[qps]@status[200] に、その値を 3 に設定します。
-