可観測性

最終公開日 : Oct 02, 2026
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イベントが表示されるはずです。

リファレンス