NSX Advanced Load Balancer は、いくつかのパラメータに基づいてメトリック データを追跡および維持します。場合によっては、組織のアプリケーションまたは環境に固有の追加データが必要になる場合があります。このニーズを満たすために、ユーザー定義のメトリックが提供されます。
3 つの新しい DataScript 関数は、NSX Advanced Load Balancer メトリック サブシステムとの対話処理により、組織がカスタム定義されたメトリックを作成、操作、およびアクセスできるようにします。REST API 呼び出しを使用して、カスタム データをユーザーの監視システムに組み込むことができます。
ユーザー定義のメトリックは次のようになります。
整数で、負の値にすることはできません。
仮想サービスが配置された SE で実行されている DataScript によって作成され、その後操作されます。
コントローラによって収集および集計されます。コントローラは、これらのメトリックの値のアノマリを検出できます。
一定期間にわたって保存され、さまざまなメトリック システム機能(平均、最小/最大追跡、合計など)を適用できます。
メトリック API を介してクエリを実行できます。
特定のユーザー定義メトリックは、DataScript を介してそのユーザー定義メトリックを作成する仮想サービスに範囲が設定されます。1 つの DataScript を複数の仮想サービスで使用できるため、コントローラは、異なる仮想サービス内の同一名のメトリックを互いに隔離しておく必要があります。ユーザー定義のメトリックの解釈は、完全にユーザーに一任されます。その値は、メトリックが参照されている DataScript 内で検出された条件に基づいています。
メトリックが一部のユーザー定義のしきい値を超えると、DataScript 内で任意の数のアクションがトリガされるか、またはアクションがトリガされなくなります。
DataScript を使用したユーザー定義のメトリック
avi.vs.log()
DataScript 関数を使用して、単にメトリックの値をレポートします。avi.vs.rate_limit( type, string_to_limit, [defer_action=False] )
DataScript 関数を使用して、仮想サービスのレートを制限します。
ほとんどの場合、メトリック データは、DataScript を介してではなく、REST API への呼び出しを介して抽出されます。
ユーザー定義のメトリックのタイプ
NSX Advanced Load Balancer は、次の 2 タイプのユーザー定義のメトリックをサポートします。
avi.vs.analytics.METRICTYPE_COUNTER
:このタイプのメトリックは、増分またはクリアできます。avi.vs.analytics.METRICTYPE_GAUGE
:このタイプのメトリックは、増分、減分、クリア、または設定できます。
ユーザー定義のメトリックの DataScript 関数
上記のメトリックを操作する DataScript 関数は次のとおりです。
avi.vs.analytics.counter(metric_name, [operation], [value])
:指定したカウンタ メトリックを増分またはクリアします。avi.vs.analytics.gauge(metric_name, [operation], [value])
:指定したゲージ メトリックを増分、減分、設定、またはクリアします。avi.vs.analytics.get_metric(metric_name, metric_type)
:カウンタまたはゲージ タイプのメトリックの値を返します。先に進む前に、関数は最初に metric_name が定義されているかどうかをチェックし、次に metric_type の値を以前に格納されたタイプと比較します。metric_name が定義されていないか、タイプが正しくない場合、この関数はログにエラーを報告し、この関数の呼び出しの原因となる要求/応答はキャンセルされます。
ユーザー定義のメトリックのライフサイクル
ユーザー定義のメトリックは常にエージングされ、2 時間以上使用されないと自動的に破棄されます。カウンタまたはゲージが読み取られるか更新されるたびに、そのエージング時間が更新されます。エージングは、ユーザー定義のメトリックの自動ガベージ コレクションを提供します。
ユーザー定義のメトリックへのアクセス
NSX Advanced Load Balancer Controller は、REST API 呼び出しを介してこれらのメトリックへのアクセスを提供します。
次のような呼び出しの場合:
api/analytics/metrics/virtualservice/<vs_uuid>?metric_id=user_metrics.sum_counter&obj_id=<obj_id>&step=300&limit=1
obj_id は、カウンタの ID またはすべてのアクティブなカウンタ メトリックを識別する「*」のいずれかです。
avi.vs.analytics.METRICTYPE_COUNTER に対して実行されたクエリの集計値
user_metrics.sum_counter:一定の期間に報告されたカウンタ メトリック値の合計。
例:counter_id が Foo
に等しい集計ユーザー メトリックの直近の 5 分間のサンプルは、次の API コードを使用して取得できます。
api/analytics/metrics/virtualservice/<vs_uuid>?metric_id=user.sum_counter&obj_id=Foo&step=300&limit=1
user_metrics.avg_counter
:一定期間におけるカウンタ メトリックの時間に対する 1 秒あたりの平均値。
例:カウンタ メトリック Foo
の 1 秒あたりの平均レートの直近の 5 分間のサンプルは、次の API 呼び出しを使用して要求できます。
api/analytics/metrics/virtualservice/<vs_uuid>?metric_id=user.avg_counter&obj_id=Foo&step=300&limit=1
user_metrics.max_counter
およびuser_metrics.min_counter
:一定期間のカウンタ メトリックFoo
の 1 秒あたりの報告された最大/最小値。
たとえば、次の API 呼び出しを使用して、1 秒あたりの最大値と最小値を要求できます。
api/analytics/metrics/virtualservice/<vs_uuid>?metric_id=user.max_counter&obj_id=Foo&step=300&limit=1
api/analytics/metrics/virtualservice/<vs_uuid>?metric_id=user.min_counter&obj_id=Foo&step=300&limit=1
avi.vs.analytics.METRICTYPE_GAUGE に対して実行されたクエリの集計値
user_metrics.avg_gauge
:一定期間に報告されたゲージ タイプの Raw カウンタの平均値。
例:API を使用したカウンタ foo
の取得
/api/analytics/metrics/virtualservice/?metric_id=user_metrics.avg_gauge&limit=1&step=300&obj_id=foo
user_metrics,max_gauge
:一定期間に報告されたゲージ タイプの Raw カウンタの最大値。
例:API を使用したカウンタ「foo」の取得。
/api/analytics/metrics/virtualservice/?metric_id=user_metrics.max_gauge&limit=1&step=300&obj_id=foo
user_metrics.min_gauge
:一定期間に報告されたゲージ タイプの Raw カウンタの最小値。
例:API を使用したカウンタ foo
の取得。
/api/analytics/metrics/virtualservice/?metric_id=user_metrics.min_gauge&limit=1&step=300&obj_id=foo