Citrix ADC Ingress Controller

Metriken von Citrix ADCs mit Prometheus und Grafana anzeigen

Sie können den Citrix ADC Metrik-Exporteur und Prometheus Operator verwenden, um Citrix ADC VPX- oder CPX-Eingangsgeräte und Citrix ADC CPX-Geräte (Ost-West) zu überwachen.

Citrix ADC-Metrik-Exporteur

Der Citrix ADC-Metrik-Exporteur ist ein einfacher Server, der Citrix ADC-Statistiken sammelt und mit nach Prometheus exportiert HTTP. Sie können dann Prometheus als Datenquelle zu Grafana hinzufügen und die Citrix ADC-Statistiken grafisch anzeigen. Weitere Informationen finden Sie unter Citrix ADC Metrik-Exporteur.

Prometheus Operator starten

Der Prometheus Operator verfügt über eine umfangreiche Methode zur Überwachung von Diensten auf Kubernetes. Zu Beginn werden in diesem Thema kube-prometheus und seine Manifestdateien verwendet. Die Manifestdateien helfen Ihnen bei der Bereitstellung eines grundlegenden Arbeitsmodells. Stellen Sie den Prometheus Operator mit den folgenden Befehlen in Ihrer Kubernetes-Umgebung bereit:

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

Sobald Sie Prometheus Operatorbereitgestellt haben, werden mehrere Pods und Dienste bereitgestellt. Von den bereitgestellten Pods aus dienen die prometheus-k8s-xx Pods für die Metrikaggregation und den Zeitstempel, und die grafana Pods dienen zur Visualisierung. Wenn Sie alle Container-Images anzeigen, die im Cluster ausgeführt werden, können Sie die folgende Ausgabe sehen:

$ 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

Hinweis: Die Dateien im manifests Ordner sind voneinander abhängig und daher ist die Reihenfolge, in der sie erstellt werden, wichtig. In bestimmten Szenarien können die Manifestdateien nicht in der richtigen Reihenfolge erstellt werden, was zu einer Fehlermeldung von Kubernetes führt. Um dieses Szenario zu lösen, führen Sie den kubectl create -f kube-prometheus/manifests/ Befehl erneut aus. Alle YAML-Dateien, die aufgrund unerfüllter Abhängigkeiten nicht zum ersten Mal erstellt wurden, werden jetzt erstellt.

Es wird empfohlen, die Prometheus- und Grafana-Pods über NodePorts freizulegen. Um dies zu tun, müssen Sie die grafana-service.yaml Dateien prometheus-service.yaml und wie folgt ändern:

Prometheus-Dienst ändern

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

Nachdem Sie die prometheus-service.yamlDatei geändert haben, wenden Sie die Änderungen mit dem folgenden Befehl auf den Kubernetes-Cluster an:

kubectl apply -f prometheus-service.yaml

Grafana-Dienst ändern

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

Nachdem Sie die grafana-service.yamlDatei geändert haben, wenden Sie die Änderungen mit dem folgenden Befehl auf den Kubernetes-Cluster an:

kubectl apply -f grafana-service.yaml

Konfigurieren des Citrix ADC-Metrikexpor

In diesem Thema wird beschrieben, wie der Citrix ADC-Metrikexporteur in Citrix ADC VPX- oder CPX-Ingress- oder Citrix ADC CPX-Geräte (Ost-West) integriert wird.

Konfigurieren des Citrix ADC-Metrikexporters für das Citrix ADC VPX Ingress-Gerät

Um ein Citrix ADC VPX-Gerät zu überwachen, wird das Citrix ADC-Metrikexporteur als Pod innerhalb des Kubernetes-Clusters ausgeführt. Die IP-Adresse des Citrix ADC VPX-Eingangsgeräts wird als Argument für das Citrix ADC-Metrikexporteur bereitgestellt. Um die Anmeldeinformationen für den Zugriff auf ADC bereitzustellen, erstellen Sie ein Secret und mounten Sie das Volume unter dem Einhängepfad “/mnt/nslogin”.

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

Im Folgenden finden Sie eine YAML-Beispieldatei zum Bereitstellen des Exportprogramms:

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

Die IP-Adresse und der Port des Citrix ADC VPX-Geräts müssen im --target-nsip Parameter angegeben werden. Beispiel: --target-nsip=10.0.0.20.

Konfigurieren des Citrix ADC-Metrikexporters für das Citrix ADC CPX Ingress-Gerät

Um ein Citrix ADC CPX-Eingangsgerät zu überwachen, wird der Citrix ADC-Metrikexporteur als Beiwagen zum Citrix ADC CPX hinzugefügt. Im Folgenden finden Sie eine YAML-Beispieldatei eines Citrix ADC CPX-Eingangsgeräts mit dem Exporteur als Seitenwagen:

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

Hier verwendet der Exporteur die lokale IP-Adresse (192.0.0.2), um Metriken vom Citrix ADC CPX abzurufen.

Konfigurieren des Citrix ADC-Metrikexporters für Citrix ADC CPX-Gerät (Ost-West)

Um ein Citrix ADC CPX (Ost-West) -Gerät zu überwachen, wird der Citrix ADC Metrik-Exporteur als Beiwagen zum Citrix ADCCPX hinzugefügt. Im Folgenden finden Sie eine YAML-Beispieldatei eines Citrix ADC CPX (Ost-West) -Geräts mit dem Exporteur als Seitenwagen:

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

Hier verwendet der Exporteur die lokale IP (192.168.0.2), um Metriken vom Citrix ADC CPX (Ost-West) -Gerät abzurufen.

ServiceMonitors zur Erkennung von Citrix ADC

Der Citrix ADC Metrik-Exporteur hilft beim Sammeln von Daten von den Citrix ADC VPX- oder CPX-Ingress- und Citrix ADC CPX-Geräten (Ost-West). Der Prometheus-Betreiber muss diese Exporteure erkennen, damit die Metriken mit einem Zeitstempel versehen, gespeichert und für die Visualisierung auf Grafana verfügbar gemacht werden können. Der Prometheus-Betreiber verwendet das Konzept von ServiceMonitors, um Pods zu erkennen, die zu einem Dienst gehören, mithilfe der an diesen Dienst angehängten Labels.

Die folgende YAML-Beispieldatei erkennt alle Exportdienste (die in den YAML-Beispieldateien angegeben sind), denen das Label service-type: citrix-adc-monitor zugeordnet ist.

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

Der ServiceMonitor weist Prometheus an, Exporter nur in den monitoring Namensräumen default und zu erkennen. Um Exporter aus anderen Namensräumen zu erkennen, fügen Sie die Namen dieser Namensräume unter das namespaceSelector: Feld ein.

Hinweis:

Wenn der zu überwachende Exporter in einem anderen Namespace als dem default oder monitoring -Namespace vorhanden ist, müssen Prometheus zusätzliche RBAC-Berechtigungen für den Zugriff auf diese Namespaces zur Verfügung gestellt werden. Das Folgende ist eine YAML (prometheus-clusterRole.yaml) -Beispieldatei, die Prometheus vollen Zugriff auf Ressourcen in den Namespaces bietet:

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

Um zusätzliche Berechtigungen Prometheus bereitzustellen, stellen Sie das Beispiel YAML mit dem folgenden Befehl bereit:

kubectl apply -f prometheus-clusterRole.yaml

Zeigen Sie die Metriken in grafana

Die Citrix ADC-Instanzen, die für die Überwachung erkannt werden, werden auf der Seite Ziele des Prometheus-Containers angezeigt. Sie können die Seite “ Ziele “ mit der folgenden URL aufrufen http://<k8s_cluster_ip>:<prometheus_nodeport>/targets:

Metriken

So zeigen Sie die Metriken grafisch an:

  1. Loggen Sie sich http://<k8s_cluster_ip>:<grafafa_nodeport> mit Standardanmeldeinformationen bei grafana ein admin:admin

  2. Wählen Sie im linken Bereich + und klicken Sie auf Importieren, um das Grafana-Beispiel-Dashboardzu importieren.

    metrics-graph

    Ein Dashboard mit Diagrammen ähnlich den folgenden wird angezeigt:

    dashboard

    Sie können das Dashboard mithilfe von Grafanas Dokumentation oder Demo-Videosweiter verbessern.

Metriken von Citrix ADCs mit Prometheus und Grafana anzeigen