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 comandokubectl 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.yaml
archivo, 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.yaml
archivo, 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
:
Para ver las métricas de forma gráfica:
-
Inicie sesión en grafana
http://<k8s_cluster_ip>:<grafafa_nodeport>
con las credenciales predeterminadas admin:admin -
En el panel izquierdo, seleccione + y haga clic en Importar para importar el panel de muestra de grafana.
Aparecerá un panel que contiene los gráficos similares a los siguientes:
Puede mejorar aún más el panel con la documentación o los videos de demostraciónde Grafana.