Comme nous l'avons vu dans Comment améliorer la visibilité dans Kubernetes , l'un des principaux défis pour les équipes de développement et de livraison d'applications est d'obtenir un aperçu des performances, de la sécurité et de la disponibilité des applications. Ces informations aident les équipes à résoudre rapidement les problèmes et à 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 API et les contrôleurs d’entrée, génèrent une multitude d’informations sur l’état de votre application et de votre infrastructure. Vous pouvez suivre ces précieuses mesures en temps réel sur le tableau de bord NGINX Plus , et NGINX Plus peut également transmettre des mesures à des outils de surveillance tiers pour vous donner un aperçu supplémentaire à partir de visualisations des performances au fil du temps. Deux des outils les plus populaires fonctionnent ensemble pour vous fournir ces graphiques de séries chronologiques :
Le module Prometheus-njs permet de transmettre facilement les métriques 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 vidéo de démonstration, nous couvrons les étapes complètes de configuration de NGINX Plus, Prometheus et Grafana, ainsi que de création de graphiques Grafana.
Pour vous aider à configurer votre propre implémentation, nous résumons les étapes dans les sections suivantes, mappées sur des points temporels dans la vidéo :
Remarques :
Avant de commencer la démo, nous avons satisfait aux prérequis suivants.
Installez le module Prometheus-njs . Nous utilisons Ubuntu 20.04 dans la démo, et c'est 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_module
suivante dans le contexte de niveau supérieur, en dehors du bloc http
.
load_module modules/ngx_http_js_module.so;
# directives de niveau supérieur existantes
http {
#...
}
(Facultatif) Augmentez la taille de la mémoire tampon pour 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 de réponse
de sous-requête
trop
importantes
, qui apparaissent dans le journal des erreurs NGINX . Ajoutez la directive subrequest_output_buffer_size
suivante dans le bloc http
.
http { #...
taille_tampon_de_sortie_de_la_sous-requête 32 ko ;
}
Enregistrez nginx.conf et exécutez cette commande pour vérifier que la configuration NGINX est syntaxiquement correcte.
$ sudo nginx -t nginx : la syntaxe du fichier de configuration /etc/nginx/nginx.conf est correcte nginx : le test du fichier de configuration /etc/nginx/nginx.conf est réussi
Changez le répertoire vers conf.d et répertoriez les 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 pour Prometheus doit écouter sur ce port, supprimez donc default.conf pour le libérer.
$ sudo rm default.conf
À l’aide de votre éditeur de texte préféré, créez un nouveau fichier appelé prometheus.conf , avec le contenu suivant.
js_import /usr/share/nginx-plus-module-prometheus/prometheus.js;
serveur {
emplacement = /metrics {
js_content prometheus.metrics;
}
emplacement /api {
api;
}
}
La directive js_import
spécifie 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. (Vous n'avez pas non plus besoin d'ajouter une directive load_module
pour Prometheus-njs .)
Le premier bloc d'emplacement
donne accès aux métriques au format Prometheus. Le deuxième bloc d’emplacement
active l’ API NGINX Plus , qui génère les métriques brutes et les expose à Prometheus.
Note: Dans les environnements de production, nous recommandons fortement de restreindre l'accès à l' API NGINX Plus comme décrit dans notre documentation .
Pour plus d'informations sur le module Prometheus-njs , consultez notre documentation .
Enregistrez prometheus.conf , vérifiez la syntaxe correcte comme à l'étape 4 et exécutez cette commande pour démarrer NGINX Plus.
$ sudo nginx
Créez un nouveau fichier de configuration Prometheus au format YAML appelé prometheus.yml dans le répertoire /etc/prometheus , avec ce contenu (basé sur un fichier de configuration par défaut du site Web Prometheus). Comme indiqué, la seule modification à apporter consiste à ajouter l’adresse IP et le port du serveur NGINX Plus dans le champ des cibles.
global : intervalle_de_scrap : 15 s external_labels : moniteur : « codelab-monitor » scrape_configs : - job_name : « prometheus » scrape_interval : 5s static_configs : - cibles : [' adresse IP NGINX_Plus : 80']
Pour plus de détails sur la configuration de Prometheus, y compris d'autres options que vous pouvez inclure dans le fichier de configuration, consultez la documentation Prometheus .
Enregistrez prometheus.yml , puis exécutez la commande suivante. Il extrait Prometheus de Docker Hub et l'expose sur le port 9090.
$ sudo docker run --network="hôte" -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 confirme que le serveur fonctionne.
Vérifiez que Prometheus accède au flux des métriques NGINX Plus. Cliquez sur l’icône en forme de globe à gauche du bouton Exécuter dans le coin supérieur droit de la fenêtre. Une liste de mesures comme celle-ci apparaît.
Exécutez cette commande pour extraire Grafana de Docker Hub et l'exposer sur le port 3000 :
[terminal]$ sudo docker run -d -p 3000:3000 grafana/grafana
Pour d'autres méthodes d'installation, consultez la documentation 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 E-mail ou nom d'utilisateur et Mot de passe . Nous vous recommandons fortement de définir un nouveau mot de passe sécurisé lorsque vous y êtes invité, mais nous ignorons cette étape dans la démo pour des raisons de temps.
Sur la page d'accueil de Grafana qui apparaît, enregistrez Prometheus comme source de données en suivant les instructions de la documentation Grafana . La vidéo montre les étapes de l'interface graphique Grafana.
Note: À l’étape 5 des instructions Grafana, au lieu de l’exemple d’URL affiché ( http://localhost:9090 ), entrez l’adresse IP de votre serveur Prometheus (et le port 9090).
Après avoir cliqué sur le bouton Enregistrer et tester à l’étape 7 des instructions de Grafana, la case verte avec une coche et le message La source de données fonctionne indiquent que Grafana s’est connecté avec succès au serveur Prometheus.
Alors que Prometheus est utile pour examiner une seule métrique, Grafana permet d'examiner facilement une collection de métriques sur un seul graphique.
Pour construire un graphe Grafana :
Cliquez sur le signe plus ( + ) dans la barre de navigation sur le côté gauche de la page (voir la capture d’écran à 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/panneau d’édition qui s’affiche, vérifiez que Prometheus apparaît dans le champ Source de données de l’onglet Requête dans la moitié inférieure de la page. Sinon, sélectionnez Prometheus dans le menu déroulant.
Entrez nginx
dans le champ Navigateur de métriques > . Une liste des métriques NGINX Plus apparaît.
Voici quelques brèves descriptions pour vous donner une idée des informations qu’ils fournissent.
nginxplus_connections_accepted
– Connexions client acceptéesnginxplus_connections_active
– Connexions client activesnginxplus_connections_dropped
– Les connexions client abandonnées ont été abandonnéesnginxplus_connections_idle
– Connexions client inactivesnginxplus_http_requests_current
– Requêtes HTTP actuellesnginxplus_http_requests_total
– Nombre total de requêtes HTTPnginxplus_nginx_meta
– Méta-informations NGINXnginxplus_processes_respawned
– Nombre total de processus enfants anormalement terminés et régénérésnginxplus_ssl_handshakes
– Poignées de main SSL réussiesnginxplus_ssl_handshakes_failed
– Échec des négociations SSLnginxplus_ssl_session_reuses
– Réutilisation de session lors de la négociation SSLnginxplus_workers_mem_private
– Mémoire privée utilisée par les workers NGINX, n'inclut pas les bibliothèques partagéesnginxplus_workers_mem_rss
– Mémoire utilisée par les processus de travail NGINXSélectionnez une métrique dans la liste (dans la démo, 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 Navigateur de métriques (dans la démo, nous sélectionnons nginxplus_connections_idle
).
Cliquez sur l'icône « Actualiser » (deux flèches formant un cercle) au-dessus du graphique dans la moitié supérieure de la page, et les résultats commencent à apparaître sur le graphique.
Vous vous demandez peut-être « Que faire si j'ai un déploiement NGINX important, comprenant de nombreuses instances NGINX Plus ? » ou « Comment puis-je mettre à jour la configuration de mes instances en fonction des informations et des analyses de Prometheus et Grafana ? » NGINX Controller , notre solution de plan 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 fournissent pas de moyen de mettre à jour les configurations et les politiques. Pour prendre des mesures sur la base de ces informations, il faut toujours se connecter à des instances NGINX Plus individuelles pour apporter des modifications, ce qui peut prendre du temps et être sujet aux erreurs, en particulier pour les déploiements NGINX Plus volumineux et complexes.
NGINX Controller offre des informations et des analyses approfondies sur plus de 200 métriques NGINX Plus, notamment les requêtes par seconde, l'utilisation du processeur, 4xx
et 5xx
erreurs, échecs de contrôle de santé et bien plus encore – le tout présenté dans une plateforme centrée sur les applications, intuitive et unifiée. Vous pouvez ensuite approfondir les données, les exporter dans des rapports et apporter les modifications de configuration et de politique nécessaires en tirant parti de flux de travail automatisés et spécifiques aux rôles, conçus par des experts NGINX pour éliminer la complexité.
Avec NGINX Controller, vous pouvez garder le doigt sur le pouls de vos déploiements d'applications et prendre le contrôle des instances NGINX Plus et des objets de configuration (par exemple, les environnements, les passerelles et les applications) à grande échelle. Et vous n’avez pas à sacrifier l’utilisation de vos solutions de surveillance et d’alerte préférées ; la conception API-first de Controller rend l’intégration avec des solutions tierces très simple et directe.
Si vous n'avez pas essayé NGINX Plus, nous vous encourageons à l'essayer - en tant qu'équilibreur de charge, proxy inverse et passerelle API, ou en tant que serveur Web entièrement pris en charge avec des API de surveillance et de gestion améliorées. 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 le moyen de visualiser et de surveiller votre flotte NGINX Plus, consultez l' essai gratuit de 30 jours qui comprend les modules Application Delivery et API Management avec Controller App Security.
« 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."