Contrôleur d'entrée Citrix ADC

Afficher les mesures des Citrix ADC à l’aide de Prometheus et Grafana

Vous pouvez utiliser l’ exportateur de métriques Citrix ADC et Prometheus-Operator pour surveiller les appareils d’entrée Citrix ADC VPX ou CPX et les appareils Citrix ADC CPX (est-ouest).

Exportateur de métriques Citrix ADC

L’exportateur de métriques Citrix ADC est un serveur simple qui collecte les statistiques Citrix ADC et les exporte vers Prometheus à l’aide de HTTP. Vous pouvez ensuite ajouter Prometheus en tant que source de données à Grafana et afficher graphiquement les statistiques Citrix ADC. Pour plus d’informations, consultez Exportateur de métriques Citrix ADC.

Opérateur de lancement Prometheus

L’opérateur Prometheus dispose d’une méthode étendue de surveillance des services sur Kubernetes. Pour commencer, cette rubrique utilise kube-prometheus et ses fichiers manifestes. Les fichiers manifestes vous aident à déployer un modèle de travail de base. Déployez l’opérateur Prometheus dans votre environnement Kubernetes à l’aide des commandes suivantes :

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

Une fois que vous avez déployé Prometheus-Operator, plusieurs espaces et services sont déployés. À partir des espaces déployés, les prometheus-k8s-xx espaces sont destinés à l’agrégation des mesures et à l’horodatage, et les grafana espaces sont destinés à la visualisation. Si vous affichez toutes les images de conteneur exécutées dans le cluster, vous pouvez voir la sortie suivante :

$ 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

Remarque : Les fichiers du dossier manifests sont interdépendants et l’ordre dans lequel ils sont créés est donc important. Dans certains scénarios, les fichiers manifestes peuvent être créés dans l’ordre, ce qui entraîne un message d’erreur de la part de Kubernetes. Pour résoudre ce scénario, réexécutez la commande kubectl create -f kube-prometheus/manifests/. Tous les fichiers YAML qui n’ont pas été créés la première fois en raison de dépendances non satisfaites sont créés maintenant.

Il est recommandé d’exposer les capsules Prometheus et Grafana via NodePorts. Pour ce faire, vous devez modifier les fichiers prometheus-service.yaml et grafana-service.yaml comme suit :

Modifier le service 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-->

Après avoir modifié le fichierprometheus-service.yaml, appliquez les modifications au cluster Kubernetes à l’aide de la commande suivante :

kubectl apply -f prometheus-service.yaml

Modifier le service Grafana

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

Après avoir modifié le fichiergrafana-service.yaml, appliquez les modifications au cluster Kubernetes à l’aide de la commande suivante :

kubectl apply -f grafana-service.yaml

Configurer l’exportateur de métriques Citrix ADC

Cette rubrique décrit comment intégrer l’ exportateur de métriques Citrix ADC à des appareils Citrix ADC VPX ou CPX entrant ou Citrix ADC CPX (est-ouest).

Configurer l’exportateur de métriques Citrix ADC pour le périphérique Citrix ADC VPX Ingress

Pour surveiller un appareil Citrix ADC VPX entrant, l’exportateur de métriques Citrix ADC est exécuté en tant qu’espace au sein du cluster Kubernetes. L’adresse IP du périphérique d’entrée Citrix ADC VPX est fournie en tant qu’argument à l’exportateur de métriques Citrix ADC. Pour fournir les informations de connexion permettant d’accéder à ADC, créez un secret et montez le volume sur le chemin de montage « /mnt/nslogin ».

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

Voici un exemple de fichier YAML pour déployer l’exportateur :

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

L’adresse IP et le port de l’appareil Citrix ADC VPX doivent être fournis dans le paramètre --target-nsip. Par exemple, --target-nsip=10.0.0.20.

Configurer l’exportateur de métriques Citrix ADC pour le périphérique Citrix ADC CPX Ingress

Pour surveiller un périphérique d’entrée Citrix ADC CPX, l’exportateur de métriques Citrix ADC est ajouté en tant que sidecar au Citrix ADC CPX. Voici un exemple de fichier YAML d’un périphérique d’entrée Citrix ADC CPX avec l’exportateur en tant que voiture latérale :

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

Ici, l’exportateur utilise l’adresse IP locale (192.0.0.2) pour récupérer les métriques du Citrix ADC CPX.

Configurer l’exportateur de métriques Citrix ADC pour un appareil Citrix ADC CPX (est-ouest)

Pour surveiller un périphérique Citrix ADC CPX (est-ouest), l’exportateur de métriques Citrix ADC est ajouté en tant que sidecar au Citrix ADCCPX. Voici un exemple de fichier YAML d’un appareil Citrix ADC CPX (est-ouest) avec l’exportateur en tant que side-car :

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

Ici, l’exportateur utilise l’adresse IP locale (192.168.0.2) pour récupérer les métriques du périphérique Citrix ADC CPX (est-ouest).

ServiceMonitors pour détecter Citrix ADC

L’exportateur de métriques Citrix ADC permet de collecter des données à partir des appareils Citrix ADC VPX ou CPX et Citrix ADC CPX (est-ouest). L’opérateur Prometheus doit détecter ces exportateurs afin que les métriques puissent être horodatées, stockées et exposées pour visualisation sur Grafana. L’opérateur Prometheus utilise le concept de ServiceMonitors pour détecter les pods appartenant à un service, à l’aide des étiquettes attachées à ce service.

L’exemple de fichier YAML suivant détecte tous les services d’exportation (indiqués dans les exemples de fichiers YAML) auxquels l’étiquette est service-type: citrix-adc-monitor associée.

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

Le ServiceMonitor demande à Prometheus de détecter les exportateurs uniquement dans les monitoring espaces de noms default et. Pour détecter les exportateurs d’autres espaces de noms, ajoutez les noms de ces espaces de noms sous le champ namespaceSelector:.

Remarque :

Si l’exportateur qui doit être surveillé existe dans un espace de noms autre que default ou l’espace de noms monitoring, des privilèges RBAC supplémentaires doivent être fournis à Prometheus pour accéder à ces espaces de noms. Voici un exemple de fichier YAML (prometheus-clusterRole.yaml) qui fournit à Prometheus un accès complet aux ressources dans les espaces de noms :

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

Pour fournir des privilèges supplémentaires Prometheus, déployez l’exemple YAML à l’aide de la commande suivante :

kubectl apply -f prometheus-clusterRole.yaml

Afficher les statistiques dans grafana

Les instances Citrix ADC détectées pour la surveillance apparaissent sur la page Cibles du conteneur Prometheus. Vous pouvez accéder à la page Cibles à l’aide de l’URL suivante http://<k8s_cluster_ip>:<prometheus_nodeport>/targets :

Mesures

Pour afficher les mesures sous forme graphique :

  1. Connectez-vous à grafana en utilisant http://<k8s_cluster_ip>:<grafafa_nodeport> les informations d’identification par défaut admin:admin

  2. Dans le panneau de gauche, sélectionnez + et cliquez sur Importer pour importer l’ exemple de tableau de bord grafana.

    metrics-graph

    Un tableau de bord contenant les graphiques similaires au suivant s’affiche :

    dashboard

    Vous pouvez encore améliorer le tableau de bord en utilisant la documentation ou les vidéos de démonstrationde Grafana.

Afficher les mesures des Citrix ADC à l’aide de Prometheus et Grafana