可観測性
NetScaler® AI Gateway は、可観測性が設定されると、トークン数、モデルID、クライアントID、レイテンシー、コスト配分など、リクエストごとのAIメトリクスをSplunkにエクスポートします。アプリケーションの計測は不要です。
NetScaler は、Splunk HTTP Event Collector (HEC) を介してこれらのメトリクスをSplunkにエクスポートします。HEC接続と分析プロファイルは、このページで説明されているように設定します。
前提条件
-
NetScaler Kubernetes Gateway Controller がすでにデプロイされていること。「AI機能を持つKubernetes Gateway Controllerのデプロイ」を参照してください。
-
HTTP Event Collector (HEC) が有効になっている、アクセス可能なSplunkインスタンス、およびHECトークンとターゲットインデックス。
-
クラスターとNetScalerからアクセス可能な、Splunk HECエンドポイントのホストとポート (HECのデフォルトポートは
8088です)。 -
kubectlと Helm 3.x があり、ターゲットネームスペースにシークレットとConfigMapを作成する権限があること。
注:
SplunkトークンシークレットとNetScaler CPXカスタムメトリクス用のConfigMapを、コントローラーまたはCPXと同じネームスペースに作成し、
authToken.namespace をそのネームスペースに設定します。
設定の概要
可観測性は2つの部分で設定されます。
| 項目 | 場所 | 必須 |
|---|---|---|
| Splunk サーバー接続 | Helm values.yaml の analyticsConfig |
必須 |
| ルートごとの分析プロファイル | AIGatewayRoute の aigatewayroute.citrix.com/analytics-profile アノテーション |
オプション — ルートごとにグローバル設定を上書きします |
グローバルプロファイルとルートレベルプロファイル
| プロファイルタイプ | 設定場所 | スコープ |
|---|---|---|
| 時系列メトリクス | values.yaml の analyticsConfig.splunk.servers[].profiles.timeseries |
グローバルのみ — ルートごとにはできません |
| ストリームインサイト | values.yaml の analyticsConfig.splunk.servers[].profiles.streaminsight |
グローバルデフォルト |
| ルートごとのオーバーライド | aigatewayroute.citrix.com/analytics-profileアノテーション |
AIGatewayRouteごと |
Splunkトークンシークレットを作成する
kubectl create secret generic splunktoken \
--from-literal=splunk-token=<your-splunk-token> -n <namespace>
チャートはこのシークレットの
splunk-tokenキーからトークンを読み取ります。Splunk HECトークンを値として使用してください。analyticsConfig(下記)のauthToken参照は、nameとnamespaceによってこのシークレットを指します。
Helm値でSplunk接続を構成する(必須)
Helmチャートの
values.yamlにあるanalyticsConfigセクションは、Splunkサーバー接続とデフォルトのアナリティクスプロファイルを作成します。
analyticsConfig:
required: true
logAllJsonFields: "true"
splunk:
enable: "true"
servers:
- name: "my-splunk"
endpoint: "<splunk-endpoint>"
port: 8088 # Splunk HEC port (default 8088); match your HEC listener
authToken:
name: splunktoken
namespace: <namespace>
profiles:
timeseries:
metricsexportfrequency: 60 # seconds
analyticsendpointurl: "netscaler/metric"
streaminsight:
analyticsendpointurl: "/services/collector/event"
analyticsendpointcontenttype: "application/json"
注:
logAllJsonFields: "true"を設定すると、トランザクションタイプのメトリクスに関するすべてのカウンターが有効になり、AI Gateway固有の詳細がエクスポートデータに含まれるようになります。ただし、すべてのトランザクションでJSONフィールドがすべてエクスポートされるため、Splunkの取り込みとライセンス費用が大幅に増加する可能性があります。完全なAIメトリクスが必要な場合にのみ有効にし、それ以外の場合は無効のままにしてください。
values.yamlを編集した後、デプロイメントを更新するために適用します。
helm upgrade <release> <chart> -f values.yaml
あるいは、
-f values.yamlを最初のhelm installコマンドに追加します。
ルートごとにアナリティクスプロファイルをオーバーライドする
特定のモデルルートのコレクターとインサイトタイプをカスタマイズするには、
AIGatewayRouteにaigatewayroute.citrix.com/analytics-profileアノテーションを使用します。この完全な例に示すように、AIGatewayRouteメタデータにアノテーションを追加します。
apiVersion: citrix.com/v1
kind: aigatewayroute
metadata:
name: ai-route-model
annotations:
aigatewayroute.citrix.com/analytics-profile: |
[
{
"collectors": {"splunk": ["my-splunk"]},
"type": "webinsight",
"analyticsEndpointUrl": "/services/collector/event",
"allHttpHeaders": "enabled"
},
{
"collectors": {"splunk": ["my-splunk"]},
"type": "streaminsight",
"analyticsEndpointUrl": "/services/collector/event",
"analyticsEndpointContentType": "application/json",
"topn": "enabled"
}
]
spec:
parentRefs:
- name: aigw
aigatewayprofiles:
frontend:
name: lbaigwyfp
default-backend:
name: aigwybp
rules:
- matches:
- path:
type: PathPrefix
value: "/"
backendRefs:
- name: gpt-model-svc
port: 80
重要:
アノテーションの
collectorsフィールドのサーバー名(例: "my-splunk")は、values.yamlのanalyticsConfigで定義されているサーバーnameと一致する必要があります。values.yamlのanalyticsConfigセクションはサーバー接続を作成し、アノテーションは名前でそれを参照します。
カスタムAIゲートウェイメトリクス
AIゲートウェイ固有のメトリクスカウンターをエクスポートするには、
metrics.jsonという名前のカスタムメトリクス構成ファイルを作成します。AI Gateway observabilityに記載されているAIゲートウェイカウンターを使用して、このファイルを構築します。このファイルをNetScalerに追加する方法は、フォームファクター(クラスター内で実行されるコンテナ化されたNetScalerであるNetScaler CPX、またはクラスター外で実行される仮想アプライアンスであるNetScaler VPX/MPX/BLX)によって異なります。
NetScaler CPX
NetScaler CPX(コンテナ化されたNetScaler)の場合、ConfigMapを使用して
metrics.jsonファイルをCPXコンテナに追加します。metrics.jsonファイルはhttps://raw.githubusercontent.com/netscaler/netscaler-k8s-ingress-controller/refs/heads/master/example/metrics.jsonで利用できます。
metrics.jsonファイルからConfigMapを作成します。
kubectl create configmap my-custom-metrics-configmap \
--from-file=metrics.json -n <namespace>
values.yamlでextraVolumeMountsとextraVolumesを設定して、ConfigMapをCPXコンテナにマウントします。
extraVolumeMounts:
- name: custom-metrics-conf
mountPath: /cpx/custom_metrics_conf
extraVolumes:
- name: custom-metrics-conf
configMap:
name: "my-custom-metrics-configmap"
defaultMode: 420
values.yamlを編集した後、それを適用してデプロイメントを更新します。
helm upgrade <release> <chart> -f values.yaml
NetScaler VPX/MPX/BLX
NetScaler VPX/MPX/BLX(クラスター外で実行される仮想アプライアンス)の場合、AI Gateway observabilityで説明されているように、
metrics.jsonファイルをNetScaler VPX/MPX/BLX内に直接配置します。mertrics.jsonファイルはhttps://raw.githubusercontent.com/netscaler/netscaler-k8s-ingress-controller/refs/heads/master/example/metrics.jsonで利用できます。
確認
設定を適用した後、メトリクスがSplunkに到達していることを確認します。
-
Splunkで、設定されたインデックスまたはエンドポイント(例えば、
netscaler/metricを含むソース)を検索します。 -
1つの
metricsexportfrequency間隔(例では60秒)以内に、トークン数とモデルIDを含むリクエストごとのAIイベントが表示されるはずです。