特定のシナリオでは、1秒あたりに受信した例外の数など、ビジネス要件に基づいてカスタムモニタリング指標を構成することができます。 カスタムメトリックを使用して自動スケーリングを設定することもできます。 この要件を満たすために、Elastic Algorithm Service (EAS) は、リアルタイムでメトリックをレポートする操作と、データ収集、ストレージ、表示からサービスの自動スケーリングまでの完全なリンクを提供します。 コード内で定期的に報告するカスタムメトリックを構成し、サービスのデプロイ時にカスタムメトリックを指定するだけで済みます。 サービスをデプロイした後、EASは、サービスによって定期的に報告されるカスタムメトリックデータを受信し、そのデータをサービスモニタリングページに表示することができます。
制限事項
自動スケーリングの設定には、1秒あたりのクエリ (QPS) とCPU使用率のメトリックのみを使用できます。
カスタムイメージまたはカスタムプロセッサを使用してサービスをデプロイする場合にのみ、メトリクスフィールドを使用してカスタムメトリック情報を指定できます。
手順1: メトリックを定期的にレポートするために使用する操作の設定
サービスをデプロイする前に、カスタムイメージまたはカスタムプロセッサを準備し、構成ファイルでカスタムメトリックとメトリックを報告する操作を指定する必要があります。 詳細については、「カスタムイメージを使用したモデルサービスのデプロイ」または「カスタムプロセッサを使用したサービスのデプロイ」をご参照ください。
たとえば、コード内の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である。 タグフィールドは、メトリックを分類する必要があるシナリオで使用できます。 それ以外の場合は、タグフィールドを指定する必要はありません。 例:
[
{
"name": "qps",
"value": 20
}
]
独自のコードを使用して、カスタムメトリックを定期的にレポートする操作を定義します。
手順2: サービスのデプロイ
カスタムメトリックを定義した後、サービスのデプロイ時にサービスのJSONファイルのメトリクスフィールドを使用して、メトリック名やタイプなどの情報を指定する必要があります。 このようにして、サービスはメトリックを報告できます。 EASは、サービスの展開時に指定したメトリック情報に基づいて、モニタリングページのダッシュボードを初期化して構築します。 以下の手順を実行します。
サービス設定用のJSONファイルを準備します。
ファイルにメトリクスフィールドを追加して、メトリクスネームやタイプなどの情報を指定します。 次のコードでは、カスタムイメージを使用してサービスをデプロイする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フィールドのパラメーターを示します。 その他のパラメーターの詳細については、「モデルサービスのパラメーター」をご参照ください。
パラメーター
必須
説明
name
可
サービスでレポートするカスタムメトリックの名前。
サービスモニタリングページは、メトリック名に基づいてモニタリングダッシュボードを作成します。
メトリック名は、自動スケーリングの設定にも使用されます。
tags
不可
メトリックのタグ名。 タグを使用してメトリックを分類できます。 たとえば、ステータスコードに基づいてQPSを分類できます。
上記の設定は、Dockerイメージを使用してサービスをデプロイする場合の例です。 カスタムイメージを使用して、ビジネスロジックを構築できます。 metricsフィールドの設定は、qpsという名前のメトリックを定義します。 モニタリングデータは1週間有効です。 期限切れのデータは自動的にクリアされます。 メトリクスフィールドの設定は、ステータスという名前のタグも定義します。これは、メトリックqpsのさまざまな情報を報告するために使用されます。 前のサンプルコードを使用すると、メトリックqpsを使用して、ステータスコードが変化したときのリクエスト数に関するデータを収集できます。
構成ファイルを使用して、モデルサービスをデプロイします。
[サービスのデプロイ] ページに移動します。 詳細については、「PAIコンソールを使用したモデルサービスのデプロイ」をご参照ください。
[構成エディター] セクションで、[JSONデプロイ] をクリックし、JSONファイルの内容を入力ボックスに貼り付けます。
[デプロイ] をクリックします。
ステップ3: 測定データの表示
サービスをデプロイすると、システムは設定に基づいて測定データを報告します。 EASは、メトリックデータを受信するためのオンプレミスAPI操作を提供します。
EASはまた、受信したデータを自動スケーリングに使用する。
大量のデータのために、データは報告されてから1分以内に収集され表示されます。 モニタリングページに表示されるデータは、分単位で正確です。
次のセクションでは、カスタムメトリックqpsをクエリする方法の例を示します。
EAS-Online Model Servicesページで、表示するサービスの名前をクリックして、サービスの詳細ページに移動します。
[サービスモニタリング] タブで、左上隅のドロップダウンリストからカスタムメトリックを選択します。 カスタムメトリックのダッシュボードが表示されます。
ダッシュボードでは、カスタムメトリックのモニタリングデータを表示できます。 データには次の部分が含まれます。
サービス内のすべてのインスタンスの平均メトリックデータ。
サービス内の各インスタンスのメトリックデータ。
手順4: 自動スケーリングの設定
カスタムメトリックを使用して、サービスの自動スケーリングを設定できます。 設定方法は、デフォルトのメトリックを使用する場合と同じです。 詳細については、「自動スケーリング」をご参照ください。
次のセクションでは、カスタムメトリックqpsを使用して自動スケーリングを設定する例を示します。
オンプレミスクライアントを使用して、自動スケーリングを有効にします。 手順の詳細については、「水平自動スケーリング機能の有効化または無効化」の「方法2: クライアントを使用した水平自動スケーリング機能の管理」をご参照ください。
カスタムメトリックにタグが設定されていない場合のサンプルコード:
eascmd autocale service_name -Dmin=1 -Dmax=10 -Dstrategies.custom[qps]=3
この設定は、QPSの平均値が3を超えるとサービスがスケールアウトし、QPSの平均値が3未満の場合にスケールインすることを示しています。
タグがカスタムメトリックに設定されている場合のサンプルコード:
eascmd autoscale service_name -Dmin=1 -Dmax=10 -Dstrategies.custom[qps]@status[200]=3
この構成は、QPSのステータスコードが200である場合、QPSの平均値が3を超えるとサービスがスケールアウトし、QPSの平均値が3未満であるとサービスがスケールインすることを示している。
コンソールを使用して自動スケーリングを有効にします。 手順の詳細については、「水平自動スケーリング機能の有効化または無効化」トピックの「方法1: コンソールでの水平自動スケーリング機能の管理」セクションを参照してください。
カスタムメトリックにタグが設定されていない場合、[Auto Scaling Settings] ダイアログボックスの [custom Scaling metric] セクションで、メトリック名をCustom [qps] に設定し、メトリック値を3に設定します。
カスタムメトリックにタグが設定されている場合、[Auto Scaling Settings] ダイアログボックスの [custom Scaling metric] セクションで、メトリック名をCustom [qps]@ status[200] に設定し、メトリック値を3に設定します。