
自動スケーリング機能を備えたマネージド インスタンス グループがあります。
各インスタンスは、リモートサイトに「私に何か仕事はありますか?」と尋ねるプログラムを実行します。答えが「いいえ」の場合、数秒間スリープ状態になり、これを繰り返します。私たちはこれをアイドルそうでなければ、何をすべきかの指示を受け取り、自分自身に印を付けます忙しい、必要な処理を実行し(数分から数時間かかる場合があります)、結果を返し、アイドル。
オートスケーラーで常に少なくとも1つはアイドルインスタンスなので、利用可能な作業をすべて取得できます。ジョブが CPU をあまり使用せずにかなりの時間を費やしたり、すべてのコアを使用するのに十分な並列処理がない場合など、CPU ベースにすることはできません。
もしオートスケーラーが特定のメトリックについて任意のメトリックサーバーをスクレイピングすることができれば、物事はシンプルになります。各インスタンスはすでにPrometheusノードエクスポーターを実行しているので、次のようなメトリックをエクスポートできます。忙しいを 0 または 1 に設定すると、Prometheus はこれを集計し、合計に 1 を加えて、オートスケーラーが使用できるメトリックとしてエクスポートできます。ただし、これは不可能です。
Googleのドキュメントでは、GCE MIGページからリンクされているにもかかわらず、オートスケーラーでPrometheusメトリクスを使用する方法についてのみ説明されています。クベネフィット自動スケーリングですが、もちろん、ここで使用しているのは自動スケーリングではありません。
インスタンスにカスタムの Stackdriver メトリックを作成させて更新させることはすでに考えていましたが、メトリックを 0 に更新する前にインスタンスが停止した場合、メトリックはリセットされないため、オートスケーラーはそれを認識できません。
これは、非常に難しい、または非常に珍しいことではないはずです (そうであるか、検索する適切な用語が思いつかないかのどちらかです :( ))。何か提案はありますか?