NetScaler Ingress Controller

Vea las métricas de NetScalers con Prometheus y Grafana

Puede utilizar el exportador de métricas de NetScaler y el Prometheus-Operator para monitorear los dispositivos de entrada NetScaler VPX o CPX y los dispositivos NetScaler CPX (este-oeste).

Exportador de métricas NetScaler

El exportador de métricas de NetScaler es un servidor sencillo que recopila las estadísticas de NetScaler y las exporta a Prometheus mediante. HTTP A continuación, puede agregar Prometheus como fuente de datos a Grafana y ver gráficamente las estadísticas de NetScaler. Para obtener más información, consulte Exportador de métricas de NetScaler.

Nota:

El exportador de métricas de NetScaler admite la exportación de métricas de las particiones de administración de NetScaler.

Lanzar el operador prometheus

El operador de Prometheus tiene un método amplio para supervisar los servicios en Kubernetes. Para empezar, este tema usa kube-prometheus y sus archivos de manifiesto. Los archivos de manifiesto le ayudan a implementar un modelo de trabajo básico. Implemente el operador de Prometheus en su entorno de Kubernetes con los siguientes comandos:

git clone https://github.com/coreos/kube-prometheus.git
kubectl create -f kube-prometheus/manifests/setup/
kubectl create -f kube-prometheus/manifests/

Una vez que implementa Prometheus-Operator, se implementan varios pods y servicios. Desde los pods implementados, los prometheus-k8s-xx pods son para la agregación de métricas y la marca de tiempo, y los grafana pods son para la visualización. Si ve todas las imágenes de contenedores que se ejecutan en el clúster, puede ver el siguiente resultado:

$ 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

Nota: Los archivos de la manifests carpeta son interdependientes y, por lo tanto, el orden en que se crean es importante. En ciertos casos, los archivos de manifiesto pueden crearse desordenados y esto genera mensajes de error de Kubernetes. Para resolver este caso, vuelva a ejecutar el comando kubectl create -f kube-prometheus/manifests/. Ahora se crean todos los archivos YAML que no se crearon la primera vez debido a dependencias no satisfechas.

Se recomienda exponer las cápsulas Prometheus y Grafana a través de NodePorts. Para hacerlo, debe modificar los grafana-service.yaml archivos prometheus-service.yaml y de la siguiente manera:

Modificar el servicio 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
<!--NeedCopy-->

Después de modificar el prometheus-service.yamlarchivo, aplique los cambios al clúster de Kubernetes con el siguiente comando:

kubectl apply -f prometheus-service.yaml

Modificar el servicio Grafana

apiVersion: v1
kind: Service
metadata:
  name: grafana
  namespace: monitoring
spec:
  type: NodePort
  ports:
  - name: http
    port: 3000
    targetPort: http
  selector:
    app: grafana
<!--NeedCopy-->

Después de modificar el grafana-service.yamlarchivo, aplique los cambios al clúster de Kubernetes con el siguiente comando:

kubectl apply -f grafana-service.yaml

Configurar el exportador de métricas de NetScaler

En este tema se describe cómo integrar el exportador de métricas de NetScaler con los dispositivos NetScaler VPX o CPX ingress o NetScaler CPX (este-oeste).

Configurar el exportador de métricas NetScaler para el dispositivo NetScaler VPX Ingress

Para monitorear un dispositivo NetScaler VPX de entrada, el exportador de métricas NetScaler se ejecuta como un pod dentro del clúster de Kubernetes. La dirección IP del dispositivo de entrada NetScaler VPX se proporciona como argumento al exportador de métricas de NetScaler. Para proporcionar las credenciales de inicio de sesión para acceder a ADC, cree un secreto y monte el volumen en mountpath “/mnt/nslogin”.

kubectl create secret generic nslogin --from-literal=username=<citrix-adc-user> --from-literal=password=<citrix-adc-password> -n <namespace>
<!--NeedCopy-->

A continuación, se muestra un archivo YAML de ejemplo para implementar el exportador:

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
<!--NeedCopy-->

La dirección IP y el puerto del dispositivo NetScaler VPX deben proporcionarse en el parámetro --target-nsip. Por ejemplo: --target-nsip=10.0.0.20.

Configurar el exportador de métricas NetScaler para el dispositivo NetScaler CPX Ingress

Para monitorear un dispositivo de entrada NetScaler CPX, se agrega el exportador de métricas NetScaler como sidecar al NetScaler CPX. A continuación se muestra un archivo YAML de ejemplo de un dispositivo de entrada NetScaler CPX con el exportador como barra lateral:

---
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
<!--NeedCopy-->

En este caso, el exportador utiliza la dirección IP local (192.0.0.2) para obtener métricas de NetScaler CPX.

Configurar el exportador de métricas NetScaler para el dispositivo NetScaler CPX (este-oeste)

Para monitorear un dispositivo NetScaler CPX (este-oeste), se agrega el exportador de métricas de NetScaler como sidecar al NetScaler CPX. A continuación se muestra un archivo YAML de ejemplo de un dispositivo NetScaler CPX (este-oeste) con el exportador como barra lateral:

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
<!--NeedCopy-->

En este caso, el exportador utiliza la IP local (192.168.0.2) para obtener métricas del dispositivo NetScaler CPX (este-oeste).

ServiceMonitors para detectar NetScaler

El exportador de métricas de NetScaler ayuda a recopilar datos de los dispositivos NetScaler VPX o CPX ingress y NetScaler CPX (este-oeste). El operador de Prometheus necesita detectar estos exportadores para que las métricas puedan marcarse, almacenarse y exponerse para su visualización en Grafana. El operador de Prometheus utiliza el concepto de ServiceMonitors para detectar pods que pertenecen a un servicio, con las etiquetas adjuntas a ese servicio.

El siguiente archivo YAML de ejemplo detecta todos los servicios de exportación (proporcionados en los archivos YAML de ejemplo) que tienen la etiqueta service-type: citrix-adc-monitor asociada a ellos.

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
<!--NeedCopy-->

Indica ServiceMonitor a Prometheus que detecte exportadores solo en los monitoring espacios de nombres default y. Para detectar exportadores de otros espacios de nombres, agregue los nombres de esos espacios de nombres en el campo namespaceSelector:.

Nota:

Si el exportador que debe supervisarse existe en un espacio de nombres que no sea el espacio de nombres monitoring default o, se deben proporcionar privilegios RBAC adicionales a Prometheus para acceder a esos espacios de nombres. El siguiente es un archivo YAML (prometheus-clusterRole.yaml) de ejemplo que proporciona a Prometheus acceso completo a los recursos en todos los espacios de nombres:

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:  ["\*"]
<!--NeedCopy-->

Para proporcionar privilegios adicionales a Prometheus, implemente el YAML de ejemplo con el siguiente comando:

kubectl apply -f prometheus-clusterRole.yaml

Ver las métricas en grafana

Las instancias de NetScaler que se detectan para la supervisión aparecen en la página Targets del contenedor prometheus. Puede acceder a la página Targets mediante la siguiente URL http://<k8s_cluster_ip>:<prometheus_nodeport>/targets:

Metrics

Para ver las métricas de forma gráfica:

  1. Inicie sesión en grafana http://<k8s_cluster_ip>:<grafafa_nodeport> con las credenciales predeterminadas admin:admin

  2. En el panel izquierdo, seleccione + y haga clic en Importar para importar el panel de muestra de grafana.

    metrics-graph

    Aparecerá un panel que contiene los gráficos similares a los siguientes:

    dashboard

    Puede mejorar aún más el panel con la documentación o los videos de demostraciónde Grafana.

Vea las métricas de NetScalers con Prometheus y Grafana