NGINX Ingress Controller de F5 NGINX combiné à l'opérateur Prometheus ServiceMonitor
CRD rend la collecte des métriques à partir des déploiements NGINX Ingress Controller beaucoup plus facile et beaucoup plus rapide à l'aide de Helm. Le graphique de gestion NGINX Ingress Controller prend désormais en charge la possibilité de tirer immédiatement parti de votre infrastructure Prometheus et prometheus-operator existante, vous permettant de déployer une carte réseau et de disposer de mesures prêtes à l'emploi exploitant Prometheus ServiceMonitor
. Cet article vous explique ce qu'est ServiceMonitor
, comment vous pouvez l'installer et comment vous pouvez utiliser le graphique de gestion NGINX Ingress Controller pour définir ces paramètres spécifiques.
La définition de ressource personnalisée (CRD) Prometheus ServiceMonitor vous permet de définir de manière déclarative comment surveiller un ensemble dynamique de services. Vous définissez les services surveillés à l’aide des sélecteurs d’étiquettes Kubernetes. Cela vous permet d’instaurer des conventions sur la manière d’exposer les métriques. En suivant ces conventions, vous découvrez automatiquement les nouveaux services et Prometheus commence à collecter les métriques sans avoir à reconfigurer le système. ServiceMonitor
fait partie de l’Opérateur Prometheus. Ces ressources décrivent et gèrent les cibles de surveillance que Prometheus doit scruter. La ressource Prometheus se connecte à ServiceMonitor
grâce au champ Sélecteur ServiceMonitor
. Prometheus identifie facilement les cibles prévues pour le scraping. Vous bénéficiez d’un contrôle et d’une flexibilité accrus pour utiliser les ressources ServiceMonitor
dans votre cluster Kubernetes afin de superviser des solutions comme NGINX Ingress Controller. Pour simplifier le processus et fournir des métriques prêtes à l’emploi pour NGINX Ingress Controller, nous avons récemment intégré la possibilité d’utiliser Prometheus ServiceMonitor
dans notre chart Helm. Cela vous permet d’activer facilement les métriques pour que Prometheus commence à scraper dès le déploiement de NGINX Ingress Controller. Pour exploiter cette fonctionnalité, vous devez ajouter un second service créé spécifiquement pour la collecte des métriques, auquel ServiceMonitor
se « connectera ». Cela informe l’opérateur Prometheus sur le service à surveiller (via les étiquettes dans les métadonnées), déterminant ainsi quoi et où scraper. Voici un exemple de ce à quoi ressemblerait un service pour NGINX Ingress Controller dans les fichiers de déploiement ou Helm :
apiVersion: v1
kind: Service
metadata:
name: nginx-ingress-servicemonitor
labels:
app: nginx-ingress-servicemonitor
spec:
ports:
- name: prometheus
protocol: TCP
port: 9113
targetPort: 9113
selector:
app: nginx-ingress
Ce qui précède fera partie du déploiement. L'étiquette, app: nginx-ingress-servicemonitor
« se connecte » au serviceMonitor
pour le scraping des métriques Prometheus. Vous trouverez ci-dessous un exemple de serviceMonitor
qui serait lié au service ci-dessus nommé nginx-ingress-servicemonitor
:
apiVersion : monitoring.coreos.com/v1
type : ServiceMonitor
métadonnées :
nom : nginx-ingress-servicemonitor
étiquettes :
application : nginx-ingress-servicemonitor
spécification :
sélecteur :
matchLabels :
application : nginx-ingress-servicemonitor
points de terminaison :
- port : prometheus
Vous devez créer une ressource Prometheus configurée pour rechercher les ressources serviceMonitor
, ce qui permet à Prometheus d’identifier rapidement et facilement les points de terminaison à collecter pour les métriques. Dans notre exemple ci-dessous, cette ressource indique à Prometheus les éléments à surveiller dans la spécification. Ici, nous surveillons spec.serviceMonitorSelector.matchLabels:
. On voit que Prometheus recherche des matchLabels avec app.nginx-ingress-servicemonitor
dans tous les namespaces. Cela correspond à la ressource serviceMonitor
déployée par les Helm charts du NGINX Ingress Controller.
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
name: prometheus
labels:
prometheus: prometheus
spec:
replicas: 1
serviceAccountName: prometheus
serviceMonitorNamespaceSelector: {}
serviceMonitorSelector:
matchLabels:
app: nginx-ingress-servicemonitor
resources:
requests:
memory: 500Mi
Voici un schéma qui relie les différentes pièces : Figure 1 : relation entre l'objet service et l'objet moniteur
Nous allons utiliser prometheus-community/kube-prometheus-stack
pour installer le déploiement complet. Cela installera prometheus, prometheus-operator et Grafana. Nous allons également spécifier que nous souhaitons l’installer dans l’espace de noms de surveillance pour l’isolation. Voici comment nous pouvons installer avec helm : helm install metrics01 prometheus-community/kube-prometheus-stack -n monitoring --create-namespace
Une fois Prometheus et les CRDs Prometheus installés dans le cluster, vous pouvez créer votre ressource Prometheus. En déployant cela à l'avance, vous préconfigurez votre setup Prometheus avec les labels utilisés dans le chart Helm. Avec cette méthode, Prometheus commencera automatiquement à rechercher le contrôleur NGINX Ingress et à collecter les métriques. Nous déployons la ressource Prometheus avant d’installer le contrôleur NGINX Ingress. Cela permet à prometheus-operator
d’identifier et de collecter automatiquement les métriques du contrôleur NGINX Ingress dès son déploiement.
apiVersion: monitoring.coreos.com/v1
kind : Prometheus
metadata :
name : prometheus
namespace : default
labels :
prometheus : monitoring
spec :
replicas : 1
serviceAccountName : prometheus
serviceMonitorNamespaceSelector : {}
serviceMonitorSelector :
matchLabels :
app : nginx-ingress-servicemonitor
resources :
requests :
memory : 500Mi
Notre exemple ci-dessus est un exemple de base. L'élément clé est la valeur spec.serviceMonitorSelector.matchLabels
que nous avons spécifiée. Cette valeur est celle que nous allons utiliser lorsque nous déploierons le contrôleur NGINX Ingress avec le graphique Helm. Nous souhaitons fournir des métriques Prometheus prêtes à l'emploi. Pour ce faire, nous allons utiliser le graphique de gestion NGINX Ingress Controller.
des valeurs
du fichier yaml du contrôleur d'entrée NGINXNous pouvons examiner le fichier values.yaml
du chart Helm. Concentrons-nous sur la section Prometheus, car elle contient les éléments essentiels pour activer Prometheus, créer le service requis, et générer une ressource serviceMonitor
. Dans cette section Prometheus, vous trouverez plusieurs paramètres : prometheus.service prometheus.serviceMonitor
. Nous allons activer ces deux paramètres pour créer automatiquement le service et le serviceMonitor lors du déploiement avec le chart Helm. Voici le passage précis où nous activons le service, le serviceMonitor
et où nous définissons les labels dans la section serviceMonitor
:
La prise en charge de `servicemonitor` a récemment été ajoutée au graphique de gestion du contrôleur NGINX Ingress.
prometheus :
## Exposez les métriques NGINX ou NGINX Plus au format Prometheus.
create : true
## Configure le port pour récupérer les métriques.
port : 9113
secret : ""
## Configure le schéma HTTP utilisé.
scheme : http
service :
## Nécessite prometheus.create=true
create : true
serviceMonitor :
create : true
labels : { app : nginx-ingress-servicemonitor }
Décomposer les valeurs ci-dessus :
prometheus :
## Exposez les métriques NGINX ou NGINX Plus au format Prometheus.
create : true
Indique à Helm que vous souhaitez activer le point de terminaison NIC Prometheus. Vous pouvez également définir un port, un schéma et un secret si nécessaire. En définissant la valeur de prometheus.service.create
sur true, Helm créera automatiquement le service NIC ServiceMonitor.
service :
## Crée un service ClusterIP pour exposer les métriques Prometheus en interne
## Nécessite prometheus.create=true
create : true
Enfin, vous devez créer le serviceMonitor
. En paramétrant sur vrai et en ajoutant les bonnes étiquettes, vous créez et ajoutez celles qui correspondent à notre ressource Prometheus.
serviceMonitor :
## Crée un serviceMonitor pour exposer des statistiques sur les pods Kubernetes.
create : true
## Étiquettes d'objet Kubernetes à attacher à l'objet serviceMonitor.
labels : { app : nginx-ingress-servicemonitor }
L'étiquette renvoie au nom du service.labels : { app: nginx-ingress-servicemomentor }
Pour résumer. Activez Prometheus, cela expose la capacité d'exportation Prometheus de la carte réseau. Définissez un objet Service, c'est ainsi que Prometheus ServiceMonitor découvre les points de terminaison d'exportation Prometheus de la carte réseau. Définissez un objet serviceMonitor. Cela indique à Prometheus ServiceMonitor de surveiller cet élément.
helm
.Après avoir modifié notre values.yaml
, vous pouvez installer le contrôleur NGINX Ingress avec la commande helm install nic01 -n nginx-ingress --create-namespace -f values.yaml .
Une fois NGINX Ingress Controller déployé, ouvrez le tableau de bord Prometheus et allez dans le menu statut. Vous pourrez y consulter les vues des cibles et de la découverte des services. Dès que Prometheus détectera notre nouvelle ressource ServiceMonitor, il commencera à interroger le point de terminaison et à collecter des métriques visibles immédiatement sur le tableau de bord.
Figure 2 : Découverte de services Prometheus
Figure 3 : Cible Prométhée
Figure 4 : Requête Prometheus NGINX
Nous pouvons voir qu’en utilisant des outils Kubernetes natifs comme Helm et Prometheus, NGINX Ingress Controller peut rendre la collecte de métriques au début du déploiement beaucoup plus facile, en fournissant des « métriques prêtes à l’emploi ». Voici les documents de référence pour l'installation de prometheus-operator : https://prometheus-operator.dev/ https://github.com/prometheus-operator/prometheus-operator
« Cet article de blog peut faire référence à des produits qui ne sont plus disponibles et/ou qui ne sont plus pris en charge. Pour obtenir les informations les plus récentes sur les produits et solutions F5 NGINX disponibles, explorez notre famille de produits NGINX . NGINX fait désormais partie de F5. Tous les liens NGINX.com précédents redirigeront vers un contenu NGINX similaire sur F5.com."