Comme nous l’avons expliqué dans « Comment améliorer la visibilité dans Kubernetes », l’un des principaux défis auxquels sont confrontées les équipes de développement et de livraison d’applications consiste à obtenir des informations sur les performances, la sécurité et la disponibilité des applications. Ces informations permettent aux équipes de résoudre rapidement les problèmes et de se préparer de manière proactive aux pics de trafic.
Les outils de gestion du trafic – tels que les équilibreurs de charge, les proxys inverses, les passerelles d’API et les contrôleurs Ingress – génèrent une multitude d’informations sur l’état de santé de votre application et de votre infrastructure. Vous pouvez suivre ces précieuses métriques en temps réel dans le tableau de bord NGINX Plus, et NGINX Plus peut également transmettre des métriques à des outils de surveillance tiers afin de vous fournir des informations supplémentaires grâce à des visualisations des performances au fil du temps. Deux des outils les plus populaires fonctionnent ensemble pour vous fournir ces graphiques de séries chronologiques :
- Prometheus – Un projet open source de la Cloud Native Computing Foundation (CNCF) dédié à la surveillance et aux alertes
- Grafana – Un outil open source de visualisation et d’analyse qui génère des graphiques et d’autres représentations visuelles à partir de bases de données de séries temporelles telles que Prometheus
Le module Prometheus-njs permet de transmettre facilement les métriques de NGINX Plus à Prometheus et Grafana. Il utilise le module JavaScript NGINX (NJS) et l’API NGINX Plus pour exporter les métriques de NGINX Plus vers le serveur Prometheus.
Dans cette démonstration vidéo, nous présentons toutes les étapes nécessaires pour configurer NGINX Plus, Prometheus et Grafana, ainsi que pour créer des graphiques dans Grafana.
 
Pour vous aider à mettre en place votre propre implémentation, nous résumons les étapes dans les sections suivantes, en indiquant les repères temporels correspondants dans la vidéo :
- Prérequis
- Configurer le serveur NGINX Plus (1:20)
- Configurer le serveur Prometheus (5:30)
- Configurer le serveur Grafana (9:15)
- Créer des graphiques NGINX Plus dans Grafana (11:15)
Remarques :
- Ces instructions reposent sur l’API NGINX Plus et ne fonctionnent donc pas avec NGINX Open Source.
- Pour utiliser Prometheus et Grafana avec NGINX Ingress Controller, consultez notre documentation.
Prérequis
Avant de commencer la démonstration, nous avons rempli les conditions préalables suivantes.
- Installer NGINX Plus sur le serveur NGINX Plus. Pour les besoins de la démonstration, nous effectuons une nouvelle installation initiale. Si vous utilisez un serveur NGINX Plus existant, vous devrez peut-être adapter les modifications apportées aux fichiers de configuration au cours de la démonstration.
- Installez le module JavaScript NGINX (njs) sur le serveur NGINX Plus.
- Installez la dernière version de Docker sur le serveur Prometheus. Dans cette démonstration, nous suivons la pratique courante qui consiste à exécuter Prometheus sur un second serveur, distinct de NGINX Plus.
- Installez la dernière version de Docker sur le serveur Grafana (dans la démonstration, il s’agit d’un troisième serveur).
Configurer le serveur NGINX Plus (1:20)
- Installez le module Prometheus-njs. Nous utilisons Ubuntu 20.04 dans cette démonstration, et voici la commande appropriée. Pour les autres systèmes d’exploitation, consultez la documentation.
$ sudo apt-get install nginx-plus-module-prometheus- À l’aide de votre éditeur de texte préféré, ouvrez /etc/nginx/nginx.conf et ajoutez la directive
load_modulesuivante dans le contexte principal, en dehors du blochttp.
load_module modules/ngx_http_js_module.so;
# existing top-level directives
http {
#...
}- (Facultatif) Augmentez la taille du tampon destiné à stocker les corps de réponse des sous-requêtes (la taille par défaut est de 4 Ko ou 8 Ko, selon la plateforme). Cela évite les erreurs
toobigsubrequestresponse, qui apparaissent dans le journal des erreurs NGINX. Ajoutez la directivesubrequest_output_buffer_sizesuivante dans le blochttp.
http { #...
subrequest_output_buffer_size 32k;
}- Enregistrez nginx.conf et exécutez cette commande pour vérifier que la syntaxe de la configuration NGINX est correcte.
$ sudo nginx -tnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful- Accédez au répertoire « conf.d » et affichez la liste des fichiers.
$ cd conf.d$ ls
default.conf- Le fichier default.conf définit un serveur virtuel qui écoute sur le port 80. Le serveur virtuel de Prometheus doit écouter sur ce port ; supprimez donc default.conf pour le libérer.
$ sudo rm default.conf- À l’aide de l’éditeur de texte de votre choix, créez un nouveau fichier nommé « prometheus.conf », avec le contenu suivant.
js_import /usr/share/nginx-plus-module-prometheus/prometheus.js;
server {
location = /metrics {
js_content prometheus.metrics;
}
location /api {
api;
}
}- La directive
js_importindique l’emplacement du code JavaScript NGINX qui convertit les métriques générées par l’API NGINX Plus au format requis par Prometheus. (Il n’est pas nécessaire d’ajouter également une directiveload_modulepour Prometheus-njs.) Le premier bloclocationpermet d’accéder aux métriques au format Prometheus. Le second bloclocationactive l’API NGINX Plus, qui génère les métriques brutes et les expose à Prometheus. Remarque : Dans les environnements de production, nous recommandons vivement de restreindre l’accès à l’API NGINX Plus comme indiqué dans notre documentation. Pour plus d’informations sur le module Prometheus-njs, consultez notre documentation. - Enregistrez prometheus.conf, vérifiez que la syntaxe est correcte comme à l’étape 4, puis exécutez cette commande pour démarrer NGINX Plus.
$ sudo nginxConfigurer le serveur Prometheus (5:30)
- Créez un nouveau fichier de configuration Prometheus au format YAML nommé « prometheus.yml » dans le répertoire « /etc/prometheus », avec le contenu suivant (basé sur un fichier de configuration par défaut du site web de Prometheus). Comme indiqué, la seule modification à effectuer consiste à ajouter l’adresse IP et le port du serveur NGINX Plus dans le champ targets.
global:
scrape_interval: 15s
external_labels:
monitor: 'codelab-monitor'
scrape_configs:
- job_name: 'prometheus'
scrape_interval: 5s
static_configs:
- targets: ['NGINX_Plus_IP_address:80']- Pour plus d’informations sur la configuration de Prometheus, notamment sur les autres options que vous pouvez inclure dans le fichier de configuration, consultez la documentation de Prometheus.
- Enregistrez « prometheus.yml », puis exécutez la commande suivante. Elle télécharge Prometheus depuis Docker Hub et le rend accessible sur le port 9090.
$ sudo docker run --network="host" -d -p 9090:9090 -v ~/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus- Dans un navigateur, accédez à l’adresse IP et au port du nouveau serveur Prometheus. Une page comme celle ci-dessous confirme que le serveur fonctionne.

- Vérifiez que Prometheus accède au flux de métriques de NGINX Plus. Cliquez sur l’icône en forme de globe située à gauche du bouton Exécuter dans le coin supérieur droit de la fenêtre. Une liste de métriques semblable à la suivante s’affiche.

Configurer le serveur Grafana (9:15)
- Exécutez cette commande pour récupérer Grafana depuis Docker Hub et le rendre accessible sur le port 3000 :
[terminal]$ sudo docker run -d -p 3000:3000 grafana/grafana- Pour connaître les autres méthodes d’installation, consultez la documentation de Grafana.
- Dans un navigateur, accédez à l’adresse IP et au port du nouveau serveur Grafana. La page de connexion Grafana confirme que le serveur fonctionne.

- Connectez-vous en saisissant admin dans les champs Adresse e-mail ou nom d’utilisateur et Mot de passe. Nous vous recommandons vivement de définir un nouveau mot de passe sécurisé lorsque vous y êtes invité, mais, par souci de concision, nous ignorons cette étape dans la démonstration.
- Sur la page d’accueil de Grafana qui s’affiche, enregistrez Prometheus en tant que source de données en suivant les instructions de la documentation de Grafana. La vidéo présente les étapes à suivre dans l’interface graphique de Grafana. Remarque : à l’étape 5 des instructions de Grafana, au lieu de l’exemple d’URL indiqué (http://localhost:9090), saisissez l’adresse IP de votre serveur Prometheus (ainsi que le port 9090). Après avoir cliqué sur le bouton Save & test à l’étape 7 des instructions de Grafana, l’encadré vert avec une coche et le message Data source is working indiquent que Grafana s’est correctement connecté au serveur Prometheus.


Créer des graphiques NGINX Plus dans Grafana (11:15)
Si Prometheus est utile pour examiner une seule métrique, Grafana permet de visualiser facilement un ensemble de métriques sur un même graphique.
Pour créer un graphique Grafana :
- Cliquez sur le signe plus (« + ») dans la barre de navigation située à gauche de la page (voir la capture d’écran de l’étape 4 de la section précédente). Sélectionnez « Tableau de bord » dans le menu déroulant « Créer ».
- Cliquez sur la case « Ajouter un panneau vide ».
- Sur la page Nouveau tableau de bord/Modifier le panneau qui s’affiche, vérifiez que Prometheus apparaît dans le champ Source de données de l’onglet Requête situé dans la moitié inférieure de la page. Si ce n’est pas le cas, sélectionnez Prometheus dans le menu déroulant.
- Saisissez «
nginx» dans le champ Metrics browser >. Une liste de métriques NGINX Plus s’affiche.Voici de brèves descriptions pour vous donner une idée des informations qu’elles fournissent.
nginxplus_connections_accepted– Connexions clientes acceptéesnginxplus_connections_active– Connexions clientes activesnginxplus_connections_dropped– Connexions clientes abandonnéesnginxplus_connections_idle– Connexions clientes inactivesnginxplus_http_requests_current– Requêtes HTTP en coursnginxplus_http_requests_total– Nombre total de requêtes HTTPnginxplus_nginx_meta– Métadonnées NGINXnginxplus_processes_respawned– Nombre total de processus enfants arrêtés anormalement et relancésnginxplus_ssl_handshakes– Négociations SSL réussiesnginxplus_ssl_handshakes_failed– Échecs de négociation SSLnginxplus_ssl_session_reuses– Réutilisations de session lors de la négociation SSLnginxplus_workers_mem_private– Mémoire privée utilisée par les processus de travail NGINX, hors bibliothèques partagéesnginxplus_workers_mem_rss– Mémoire utilisée par les processus de travail NGINX
- Sélectionnez une métrique dans la liste (dans la démonstration, nous sélectionnons
nginxplus_connections_active). Pour sélectionner une autre métrique, cliquez sur le bouton + Requête et sélectionnez une autre métrique dans le nouveau champ Explorateur de métriques > (dans la démonstration, nous sélectionnonsnginxplus_connections_idle). - Cliquez sur l’icône « Actualiser » (deux flèches formant un cercle) située au-dessus du graphique dans la moitié supérieure de la page. Les résultats commencent alors à s’afficher sur le graphique.

Bonus : informations et analyses unifiées pour tous vos déploiements NGINX Plus
Vous vous demandez peut-être : « Que faire si je dispose d’un déploiement NGINX de grande envergure, comprenant de nombreuses instances NGINX Plus ? » ou « Comment puis-je mettre à jour la configuration de mes instances en fonction des informations et analyses fournies par Prometheus et Grafana ? » NGINX Controller, notre solution de plans de contrôle et de gestion pour les déploiements NGINX, vous aide à répondre à ces questions et à bien d’autres.
Bien que Prometheus et Grafana soient d’excellentes solutions de surveillance, d’alerte et de visualisation, ils ne permettent pas de mettre à jour les configurations et les politiques. Pour agir sur la base de ces informations, il faut encore se connecter à chaque instance NGINX Plus afin d’y apporter des modifications, ce qui peut être chronophage et source d’erreurs, en particulier dans les déploiements NGINX Plus vastes et complexes.

NGINX Controller offre des informations détaillées et des analyses sur plus de 200 métriques NGINX Plus, notamment le nombre de requêtes par seconde, l’utilisation du processeur, les erreurs 4xx et 5xx, les échecs des contrôles d’intégrité et bien plus encore, le tout présenté sur une plateforme intuitive, unifiée et centrée sur les applications. Vous pouvez ensuite explorer les données en profondeur, les exporter dans des rapports et apporter les modifications nécessaires à la configuration et aux politiques en vous appuyant sur des workflows automatisés et adaptés à chaque rôle, conçus par les experts de NGINX pour masquer la complexité.
Avec NGINX Controller, vous pouvez suivre de près vos déploiements d’applications et gérer à grande échelle les instances NGINX Plus ainsi que les objets de configuration (par exemple, les environnements, les passerelles et les applications). Vous n’avez pas non plus à renoncer à vos solutions de surveillance et d’alerte préférées : grâce à la conception API-first de Controller, l’intégration de solutions tierces est particulièrement simple.
 
Démarrer avec NGINX Plus et NGINX Controller
Si vous n’avez pas encore essayé NGINX Plus, nous vous invitons à le découvrir en tant qu’équilibreur de charge, proxy inverse et passerelle d’API, ou en tant que serveur web entièrement pris en charge, doté d’API avancées de surveillance et de gestion. Commencez dès aujourd’hui avec un essai gratuit de 30 jours ou contactez-nous pour discuter de vos cas d’utilisation.
Et si vous pensez que NGINX Controller pourrait être la solution idéale pour visualiser et surveiller votre parc NGINX Plus, découvrez l’essai gratuit de 30 jours qui inclut les modules Application Delivery et API Management, ainsi que Controller App Security.
À propos de l’auteur
Articles de blog associés

Tendances actuelles des technologies cloud natives, de l’ingénierie de plateforme et de l’IA
Découvrez les principaux enseignements tirés des réponses à l’enquête annuelle F5 NGINX sur les dernières tendances en matière de technologies cloud natives, de sécurité, d’ingénierie de plateforme et d’IA.
Quels contrôleurs Ingress NGINX sont affectés par les vulnérabilités CVE-2022-4886, CVE-2023-5043 et CVE-2023-5044 ?
Lorsque de nouvelles CVE sont signalées, il est facile de ne plus savoir si elles concernent un outil de contrôleur Ingress NGINX particulier, car il existe plusieurs projets. Cet article présente les CVE et explique comment distinguer les différents projets de contrôleurs Ingress afin de dissiper toute confusion.
Votre API est-elle en temps réel ? Testez sa latence avec l’outil rtapi de NGINX
Votre API répond-elle aux requêtes en moins de 30 ms ? Si ce n’est pas le cas, il ne s’agit pas d’une API en temps réel offrant la faible latence exigée par la grande majorité des organisations. Mesurez la latence de votre API avec l’outil rtapi de NGINX et découvrez comment NGINX peut l’aider à offrir une réactivité en temps réel.

Un testeur d’expressions régulières pour NGINX et NGINX Plus
Le testeur d’expressions régulières (regex) pour NGINX et NGINX Plus vous évite de tâtonner en vous indiquant si une expression régulière utilisée dans un bloc location ou map correspond aux valeurs comme prévu. Il génère la configuration appropriée et affiche les valeurs des groupes de capture.
Caches partagés avec les clusters de cache NGINX Plus, partie 1
Optimisez la capacité de votre cache web en le répartissant entre plusieurs serveurs de cache web NGINX ou NGINX Plus. Découvrez comment procéder dans cet article.
Introduction aux microservices
Les microservices suscitent actuellement beaucoup d’intérêt. Cet article de blog est le premier d’une série de sept consacrée à la conception, au développement et au déploiement de microservices.