Ingress Controller de Citrix ADC

Ver métricas de los ADC de Citrix con Prometheus y Grafana

Puede usar el exportador de métricas de Citrix ADC y Prometheus-Operator para supervisar los dispositivos de entrada Citrix ADC VPX o CPX y los dispositivos Citrix ADC CPX (este-oeste).

Exportador de métricas de Citrix ADC

El exportador de métricas de Citrix ADC es un servidor simple que recopila estadísticas de Citrix ADC 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 Citrix ADC. Para obtener más información, consulte Exportador de métricas de Citrix ADC.

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 exportador de métricas de Citrix ADC

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

Configurar el exportador de métricas de Citrix ADC para el dispositivo de entrada Citrix ADC VPX

Para supervisar un dispositivo Citrix ADC VPX de entrada, el exportador de métricas de Citrix ADC se ejecuta como un pod dentro del clúster de Kubernetes. La dirección IP del dispositivo de entrada Citrix ADC VPX se proporciona como argumento para el exportador de métricas de Citrix ADC. 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:
    name: exporter-vpx-ingress
  ports:
    - name: exporter-port
      port: 8888
      targetPort: 8888
<!--NeedCopy-->

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

Configurar el exportador de métricas de Citrix ADC para el dispositivo Citrix ADC CPX Ingress

Para supervisar un dispositivo de entrada Citrix ADC CPX, el exportador de métricas de Citrix ADC se agrega como un sidecar a Citrix ADC CPX. A continuación, se muestra un archivo YAML de ejemplo de un dispositivo de entrada Citrix ADC CPX con el exportador como vehículo secundario:

---
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 Citrix ADC CPX.

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

Para supervisar un dispositivo Citrix ADC CPX (este-oeste), el exportador de métricas de Citrix ADC se agrega como un sidecar a Citrix ADCCPX. A continuación se muestra un archivo YAML de ejemplo de un dispositivo Citrix ADC CPX (este-oeste) con el exportador como vehículo 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 Citrix ADC CPX (este-oeste).

ServiceMonitors para detectar Citrix ADC

El exportador de métricas de Citrix ADC ayuda a recopilar datos de la entrada de Citrix ADC VPX o CPX y de los dispositivos Citrix ADC 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 Citrix ADC 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:

Métricas

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:

    panel de mandos

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

Ver métricas de los ADC de Citrix con Prometheus y Grafana