ビジネスロジックに基づいてカスタム監視メトリクスを定義し、オートスケーリングに使用できます。例えば、1 秒あたりに受信した無効なデータポイントの数に基づいてサービスをスケーリングできます。EAS は、リアルタイムメトリクスレポート API と、データの収集、保存、可視化、オートスケーリングのための完全なパイプラインを提供します。コードにカスタムメトリクスを定期的にレポートするロジックを追加し、サービスのデプロイ時にそれらを宣言するだけで済みます。デプロイ後、EAS はこのパイプラインを通じてサービスのカスタムメトリクスデータを受信し、サービス監視ページに表示します。
制限事項
-
オートスケーリングの組み込みメトリクスとしてサポートされているのは、QPS と CPU 使用率のみです。
-
metricsフィールドは、カスタムイメージまたはカスタムプロセッサを使用してサービスをデプロイする場合にのみサポートされます。
ステップ 1: メトリクスをレポートする API の設定
サービスをデプロイする前に、カスタムイメージまたはカスタムプロセッサを準備する必要があります。コード内で、カスタムメトリクスと、それらを定期的にレポートするための API を設定します。詳細については、「カスタムイメージ」または「カスタムプロセッサ」をご参照ください。
例えば、コードに実装されている 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など、異なるステータスコードのリクエスト数を記録できます。 -
-
設定ファイルを使用してモデルサービスをデプロイします。
-
サービスデプロイページに移動します。詳細については、「カスタムデプロイメント」をご参照ください。
-
Configuration Editor セクションで、JSON Deployment をクリックし、準備した JSON ファイルの内容をエディターに貼り付けます。
-
Deploy をクリックします。
-
ステップ 3: メトリクスの表示
サービスのデプロイ後、コードロジックに基づいてカスタムメトリクスデータが定期的にレポートされます。EAS フレームワークは、このデータを受信するためのローカル API を提供します。
-
EAS は、このリアルタイムデータをオートスケーリングに使用します。
-
データパイプラインでは、情報はリアルタイムで表示されません。パイプラインはデータを集約するため、監視ページでは、分単位の粒度で表示されます。
以下の手順で、カスタム qps メトリクスを表示する方法を説明します:
-
EAS-Online Model Services ページで、サービス名をクリックしてサービス詳細ページを開きます。
-
Service Monitoring タブをクリックします。ページの左上隅で、カスタムパネルを選択します。
このパネルには、カスタムメトリクスの監視データが 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この設定により、
qpsメトリクスのうちstatusが200である系列の平均値が 3 を超えるとサービスがスケールアウトし、値が 3 を下回るとスケールインします。
-
-
コンソールを使用してオートスケーリングを有効にします。操作とパラメータの詳細については、「水平オートスケーリング」をご参照ください。
-
設定されたカスタムメトリックがタグを報告する必要がない場合、Auto Scaling Settings ダイアログボックスの Custom Scaling Metric セクションで、変数名を custom[qps] に、変数の値を 3 に設定する必要があります。 自動スケーリング設定ダイアログボックスで、最小インスタンス数を
1に、最大インスタンス数を10に設定します。 カスタムスケーリングメトリックエリアで、変数名をcustom[qps]に、変数の値を3に設定し、「有効化」をクリックします。 -
カスタムメトリックをタグレベルで指定する必要がある場合、Auto Scaling Settings ダイアログボックスの Custom Scaling Metric で、変数名を custom[qps]@status[200] に、その値を 3 に設定します。
-