PrometheusとGrafanaを使用してNetScalerのメトリクスを表示する

最終公開日 : Oct 02, 2026
NetScaler Metrics ExporterとPrometheus-Operatorを使用して、NetScaler VPXまたはCPXイングレデバイス、およびNetScaler CPX (east-west) デバイスを監視できます。

NetScaler メトリクス エクスポーター

NetScaler Metrics Exporterは、NetScalerの統計情報を収集し、HTTPを使用してPrometheusにエクスポートするシンプルなサーバーです。その後、PrometheusをGrafanaのデータソースとして追加し、NetScalerの統計情報をグラフィカルに表示できます。詳細については、NetScaler Metrics Exporterを参照してください。
注:
NetScaler Metrics Exporterは、NetScalerの管理パーティションからのメトリクスエクスポートをサポートしています。

Prometheus Operatorを起動する

Prometheus Operatorは、Kubernetes上のサービスを監視するための広範な方法を提供します。開始するには、このトピックではkube-prometheusとそのマニフェストファイルを使用します。マニフェストファイルは、基本的な動作モデルをデプロイするのに役立ちます。以下のコマンドを使用して、Kubernetes環境にPrometheus Operatorをデプロイします。
git clone https://github.com/coreos/kube-prometheus.git
kubectl create -f kube-prometheus/manifests/setup/
kubectl create -f kube-prometheus/manifests/
Prometheus-Operatorをデプロイすると、いくつかのポッドとサービスがデプロイされます。デプロイされたポッドのうち、prometheus-k8s-xxポッドはメトリクス集約とタイムスタンプ用であり、grafanaポッドは視覚化用です。クラスターで実行されているすべてのコンテナイメージを表示すると、次の出力が表示されます。
$ kubectl get pods -n monitoring
NAME                                   READY     STATUS    RESTARTS   AGE
alertmanager-main-0                    2/2       Running   0          2h
alertmanager-main-1                    2/2       Running   0          2h
alertmanager-main-2                    2/2       Running   0          2h
grafana-5b68464b84-5fvxq               1/1       Running   0          2h
kube-state-metrics-6588b6b755-d6ftg    4/4       Running   0          2h
node-exporter-4hbcp                    2/2       Running   0          2h
node-exporter-kn9dg                    2/2       Running   0          2h
node-exporter-tpxhp                    2/2       Running   0          2h
prometheus-k8s-0                       3/3       Running   1          2h
prometheus-k8s-1                       3/3       Running   1          2h
prometheus-operator-7d9fd546c4-m8t7v   1/1       Running   0          2h
注: manifestsフォルダー内のファイルは相互に依存しているため、作成順序が重要です。特定のシナリオでは、マニフェストファイルが順不同で作成され、Kubernetesからエラーメッセージが表示されることがあります。 このシナリオを解決するには、kubectl create -f kube-prometheus/manifests/コマンドを再実行してください。初回に満たされていない依存関係のために作成されなかったYAMLファイルは、これで作成されます。
PrometheusおよびGrafanaポッドをNodePort経由で公開することをお勧めします。そのためには、prometheus-service.yamlおよびgrafana-service.yamlファイルを次のように変更する必要があります。

Prometheusサービスを変更する

apiVersion: v1
kind: Service
metadata:
  labels:
    prometheus: k8s
  name: prometheus-k8s
  namespace: monitoring
spec:
  type: NodePort
  ports:
  - name: web
    port: 9090
    targetPort: web
  selector:
    app: prometheus
    prometheus: k8s
prometheus-service.yamlファイルを変更した後、以下のコマンドを使用してKubernetesクラスターに変更を適用します。
kubectl apply -f prometheus-service.yaml

Grafanaサービスを変更する

apiVersion: v1
kind: Service
metadata:
  name: grafana
  namespace: monitoring
spec:
  type: NodePort
  ports:
  - name: http
    port: 3000
    targetPort: http
  selector:
    app: grafana
grafana-service.yamlファイルを変更した後、以下のコマンドを使用してKubernetesクラスターに変更を適用します。
kubectl apply -f grafana-service.yaml

NetScaler Metrics Exporter の構成

このトピックでは、NetScaler Metrics Exporter を NetScaler VPX または CPX イングレスデバイス、あるいは NetScaler CPX (east-west) デバイスと統合する方法について説明します。

NetScaler VPX イングレスデバイス用の NetScaler Metrics Exporter の構成

イングレス NetScaler VPX デバイスを監視するには、NetScaler Metrics Exporter は Kubernetes クラスター内でポッドとして実行されます。NetScaler VPX イングレスデバイスの IP アドレスは、NetScaler Metrics Exporter への引数として提供されます。ADC にアクセスするためのログイン資格情報を提供するには、シークレットを作成し、ボリュームをマウントパス「/mnt/nslogin」にマウントします。
kubectl create secret generic nslogin --from-literal=username=<citrix-adc-user> --from-literal=password=<citrix-adc-password> -n <namespace>
エクスポーターをデプロイするための YAML ファイルの例を次に示します。
apiVersion: v1
kind: Pod
metadata:
  name: exporter-vpx-ingress
  labels:
    app: exporter-vpx-ingress
spec:
  containers:
    - name: exporter
      image: "quay.io/citrix/citrix-adc-metrics-exporter:1.4.8"
      imagePullPolicy: IfNotPresent
      args:
        - "--target-nsip=<IP_of_VPX>"
        - "--port=8888"
      volumeMounts:
      - name: nslogin
        mountPath: "/mnt/nslogin"
        readOnly: true
      securityContext:
        readOnlyRootFilesystem: true
  volumes:
  - name: nslogin
    secret:
      secretName: nslogin
---
kind: Service
apiVersion: v1
metadata:
  name: exporter-vpx-ingress
  labels:
    service-type: citrix-adc-monitor
spec:
  selector:
    app: exporter-vpx-ingress
  ports:
    - name: exporter-port
      port: 8888
      targetPort: 8888
NetScaler VPX デバイスの IP アドレスとポートは、--target-nsip パラメーターで指定する必要があります。例: --target-nsip=10.0.0.20。

NetScaler CPX イングレスデバイス用の NetScaler Metrics Exporter の構成

NetScaler CPX イングレスデバイスを監視するには、NetScaler Metrics Exporter は NetScaler CPX のサイドカーとして追加されます。エクスポーターをサイドカーとして持つ NetScaler CPX イングレスデバイスの YAML ファイルの例を次に示します。
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: cpx-ingress
  name: cpx-ingress
spec:
  replicas: 1
  selector:
    matchLabels:
      app: cpx-ingress
  template:
    metadata:
      annotations:
        NETSCALER_AS_APP: "True"
      labels:
        app: cpx-ingress
    spec:
      containers:
      - env:
        - name: EULA
          value: "YES"
        - name: NS_PROTOCOL
          value: HTTP
        - name: NS_PORT
          value: "9080"
        #Define the NITRO port here
        image: quay.io/citrix/citrix-k8s-cpx-ingress:13.0-52.24
        imagePullPolicy: IfNotPresent
        name: cpx-ingress
        ports:
        - containerPort: 80
          name: http
          protocol: TCP
        - containerPort: 443
          name: https
          protocol: TCP
        - containerPort: 9080
          name: nitro-http
          protocol: TCP
        - containerPort: 9443
          name: nitro-https
          protocol: TCP
        securityContext:
          privileged: true
      # Adding exporter as a sidecar
      - args:
        - --target-nsip=192.0.0.2
        - --port=8888
        - --secure=no
        env:
        - name: NS_USER
          value: nsroot
        - name: NS_PASSWORD
          value: nsroot
        image: quay.io/citrix/citrix-adc-metrics-exporter:1.4.8
        imagePullPolicy: IfNotPresent
        name: exporter
        securityContext:
          readOnlyRootFilesystem: true
      serviceAccountName: cpx
---
kind: Service
apiVersion: v1
metadata:
  name: exporter-cpx-ingress
  labels:
    service-type: citrix-adc-monitor
spec:
  selector:
    app: cpx-ingress
  ports:
    - name: exporter-port
      port: 8888
      targetPort: 8888
ここでは、エクスポーターはローカル IP アドレス (192.0.0.2) を使用して NetScaler CPX からメトリクスをフェッチします。

NetScaler CPX (east-west) デバイス用の NetScaler Metrics Exporter の構成

NetScaler CPX (east-west) デバイスを監視するには、NetScaler Metrics Exporter は NetScaler CPX のサイドカーとして追加されます。エクスポーターをサイドカーとして持つ NetScaler CPX (east-west) デバイスの YAML ファイルの例を次に示します。
apiVersion: apps/v1
kind: DaemonSet
metadata:
  annotations:
    deprecated.daemonset.template.generation: "0"
  labels:
    app: cpx-ew
  name: cpx-ew
spec:
  selector:
    matchLabels:
      app: cpx-ew
  template:
    metadata:
      annotations:
        NETSCALER_AS_APP: "True"
      labels:
        app: cpx-ew
      name: cpx-ew
    spec:
      containers:
      - env:
        - name: EULA
          value: "yes"
        - name: NS_NETMODE
          value: HOST
        #- name: "kubernetes_url"
        #  value: "https://10..xx.xx:6443"
        image: quay.io/citrix/citrix-k8s-cpx-ingress:13.0-52.24
        imagePullPolicy: IfNotPresent
        name: cpx
        securityContext:
          privileged: true
      # Add exporter as a sidecar
      - args:
        - --target-nsip=192.168.0.2
        - --port=8888
        - --secure=no
        env:
        - name: NS_USER
          value: nsroot
        - name: NS_PASSWORD
          value: nsroot
        image: quay.io/citrix/citrix-adc-metrics-exporter:1.4.8
        imagePullPolicy: IfNotPresent
        name: exporter
        securityContext:
          readOnlyRootFilesystem: true
      serviceAccountName: cpx
---
kind: Service
apiVersion: v1
metadata:
  name: exporter-cpx-ew
  labels:
    service-type: citrix-adc-monitor
spec:
  selector:
    app: cpx-ew
  ports:
    - name: exporter-port
      port: 8888
      targetPort: 8888
ここでは、エクスポーターはローカル IP (192.168.0.2) を使用して NetScaler CPX (east-west) デバイスからメトリクスをフェッチします。

NetScaler を検出するための ServiceMonitor

NetScaler Metrics Exporter は、NetScaler VPX または CPX イングレスデバイス、および NetScaler CPX (east-west) デバイスからデータを収集するのに役立ちます。Prometheus Operator は、メトリクスにタイムスタンプを付け、保存し、Grafana で視覚化できるように、これらのエクスポーターを検出する必要があります。Prometheus Operator は、ServiceMonitor の概念を使用して、サービスにアタッチされたラベルを使用して、そのサービスに属するポッドを検出します。
次の YAML ファイルの例は、service-type: citrix-adc-monitor ラベルが関連付けられているすべてのエクスポーターサービス (サンプル YAML ファイルで指定) を検出します。
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: citrix-adc-servicemonitor
  labels:
    servicemonitor: citrix-adc
spec:
  endpoints:
  - interval: 30s
    port: exporter-port
  selector:
    matchLabels:
      service-type: citrix-adc-monitor
  namespaceSelector:
    matchNames:
    - monitoring
    - default
ServiceMonitorは、Prometheusがdefaultとmonitoringの名前空間にあるExporterのみを検出するように指示します。他の名前空間からExporterを検出するには、それらの名前空間の名前をnamespaceSelector:フィールドの下に追加します。
注記:
監視する必要があるExporterがdefaultまたはmonitoring以外の名前空間に存在する場合、Prometheusがそれらの名前空間にアクセスするために追加のRBAC権限を提供する必要があります。以下は、Prometheusにすべての名前空間のリソースへのフルアクセスを提供するサンプルYAML (prometheus-clusterRole.yaml) ファイルです。
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: prometheus-k8s
rules:
- apiGroups:
  - ""
  resources:
  - nodes/metrics
  - namespaces
  - services
  - endpoints
  - pods
  verbs: ["*"]
- nonResourceURLs:
  - /metrics
  verbs:  ["*"]
Prometheusに追加の権限を付与するには、次のコマンドを使用してサンプルYAMLをデプロイします。
kubectl apply -f prometheus-clusterRole.yaml

Grafanaでメトリクスを表示する

監視のために検出されたNetScalerインスタンスは、Prometheusコンテナのターゲットページに表示されます。ターゲットページには、次のURLからアクセスできます: http://<k8s_cluster_ip>:<prometheus_nodeport>/targets:
メトリクス
メトリクスをグラフで表示するには:
  1. http://<k8s_cluster_ip>:<grafafa_nodeport>を使用して、デフォルトの認証情報 admin:admin でGrafanaにログインします。
  2. 左側のパネルで**+**を選択し、インポートをクリックしてサンプルGrafanaダッシュボードをインポートします。
    メトリクスグラフ
    次のようなグラフを含むダッシュボードが表示されます。
    ダッシュボード
    Grafanaのドキュメントまたはデモビデオを使用して、ダッシュボードをさらに強化できます。