Une introduction à Prométhée et Grafana
Prometheus est un système de surveillance open source basé sur des métriques. Il collecte les données des services et des hôtes en envoyant des requêtes HTTP sur les points de terminaison de métriques. Il stocke ensuite les résultats dans une base de données chronologique et le rend disponible pour analyse et alerte.
Pourquoi surveiller ?
- Active les alertes lorsque les choses vont mal, de préférence avant qu'elles ne tournent mal. Pour que quelqu'un puisse y jeter un coup d'œil.
- Il fournit des informations pour permettre l'analyse, le débogage et la résolution du problème.
- Il vous permet de voir les tendances / changements au fil du temps. Par exemple, combien de sessions actives à un moment donné. Cela aide dans les décisions de conception et la planification des capacités.
La surveillance concerne généralement les événements. Un événement peut inclure la réception d'une requête HTTP, l'envoi d'une réponse, la lecture à partir du disque, une connexion utilisateur. La surveillance d'un système peut inclure le profilage, la journalisation, le traçage, les métriques, les alertes et la visualisation.
Surveillance Blackbox ou Whitebox
La surveillance relève de deux catégories principales:
Surveillance de la boîte noire
Dans la surveillance Blackbox, la surveillance se fait au niveau de l'application ou de l'hôte car ils sont observés de l'extérieur. Cela peut être assez limitatif.
Surveillance de la boîte blanche
La surveillance de la boîte blanche consiste à surveiller les composants internes d'un service. Cela exposerait des données sur l'état et les performances des composants internes.
Les quatre signaux d'or
Selon Google, si vous ne pouvez mesurer que quatre métriques de votre système orienté utilisateur, concentrez-vous sur les quatre suivantes, appelées les quatre signaux d'or:
# 1. Latence
Le temps nécessaire pour traiter une demande - réussie ou échouée. Il est important de suivre non seulement les demandes réussies, mais également celles qui ont échoué.
# 2. Traffic
Une mesure de la demande placée sur votre système. Pour un service Web, il s'agit généralement de requêtes HTTP par seconde.
# 3. Erreurs
Le taux de demandes qui échouent.
# 4. Saturation
À quel point votre service est complet. L'augmentation de la latence est souvent un indicateur important de saturation. De nombreux systèmes se dégradent bien avant d'atteindre 100% d'utilisation.
Types de métriques Prometheus
Les métriques Prometheus sont de quatre types principaux:
# 1. Counter
La valeur d'un compteur augmentera toujours. Il ne peut jamais diminuer, mais il peut être remis à zéro. Donc, si un scrape échoue, cela signifie seulement un point de données manqué. L'augmentation cumulative serait disponible à la prochaine lecture. Exemples:
- Nombre total de requêtes HTTP reçues
- Le nombre d'exceptions.
# 2. Jauge
Une jauge est un instantané à un moment donné. Il peut à la fois augmenter ou diminuer. Si une extraction de données échoue, vous perdez un échantillon; la prochaine extraction peut afficher une valeur différente: exemples d'espace disque, utilisation de la mémoire.
# 3. Histogramme
Un histogramme échantillonne les observations et les compte dans des compartiments configurables. Ils sont utilisés pour des choses comme la durée de la demande ou la taille des réponses. Par exemple, vous pouvez mesurer la durée de la requête pour une requête HTTP spécifique. L'histogramme aura un ensemble de compartiments, disons 1 ms, 10 ms et 25 ms. Plutôt que de stocker chaque durée de chaque demande, Prometheus stockera la fréquence des demandes qui tombent dans un compartiment particulier.
# 4. Résumé
Semblable aux observations d'échantillons d'histogramme, demande généralement des durées ou des tailles de réponse. Il fournira un nombre total d'observations et une somme de toutes les valeurs observées, vous permettant de calculer la moyenne des valeurs observées. Par exemple, en une minute, vous avez reçu trois demandes qui ont pris 2,3,4 secondes. La somme serait de 9 et le nombre de 3. La latence serait de 3 secondes.
Composants de l'écosystème Prometheus
Le serveur Prometheus
Collecte des métriques, les stocke et les rend disponibles pour l'interrogation, envoie des alertes en fonction des métriques collectées.
Grattage
Prométhée est un système basé sur l'extraction. Pour récupérer des métriques, Prometheus envoie une requête HTTP appelée scrape. Il envoie des notes aux cibles en fonction de sa configuration.
Chaque cible (définie statiquement ou découverte dynamiquement) est grattée à intervalle régulier (intervalle de grattage). Chaque capture lit le point de terminaison HTTP / metrics pour obtenir l'état actuel des métriques client et conserve les valeurs dans la base de données de séries temporelles Prometheus.
Il existe de plus bases de données chronologiques pour les solutions de surveillance que vous voudrez peut-être explorer.
Bibliothèques clientes
Pour surveiller un service, vous devez ajouter une instrumentation à votre code. Il existe des bibliothèques clientes disponibles pour tous les langages et environnements d'exécution courants. En utilisant ces bibliothèques, une fois que vous avez ajouté quelques lignes de code, votre code peut commencer à émettre des métriques. C'est ce qu'on appelle l'instrumentation directe. Ces bibliothèques vous permettent de définir des métriques internes et de les exposer également via un point de terminaison HTTP. Lorsque Prometheus récupère le point de terminaison HTTP des métriques, la bibliothèque cliente envoie les métriques au serveur.
Les bibliothèques client officielles sont proposées par Prometheus pour Go, Java, Python et Ruby. Prometheus a un écosystème ouvert. Il existe également des bibliothèques clientes créées par la communauté pour C, PHP, Node.js, C # /. NET et bien d'autres.
Exportateurs
De nombreuses applications exposent des métriques au format non Prometheus. Pour ceux-ci et pour les applications que vous ne possédez pas ou pour lesquelles vous n'avez pas accès au code, vous ne pouvez pas ajouter d'instrumentation directement. Par exemple, les serveurs MySQL, Kafka, JMX, HAProxy et NGINX. Dans ces scénarios, vous utilisez exportateurs.
Un exportateur est un outil que vous déployez avec l'application à partir de laquelle vous souhaitez obtenir des mesures. Un exportateur agit comme un proxy entre l'application et Prometheus. Il recevra les demandes du serveur Prometheus, collectera des données à partir des journaux d'accès, des journaux d'erreurs de l'application, le transformera dans le format correct et retournera enfin au serveur Prometheus.
Certains des exportateurs populaires sont:
- Windows - pour les métriques de serveur Windows
- Nœud - pour les métriques de serveur Linux
- Boîte noire - pour les mesures de performance DNS et site Web
- JMX - pour les métriques d'application basées sur Java
Une fois que les applications ont été instrumentées ou que les exportateurs sont en place, vous devez dire à Prometheus où ils se trouvent. Cela peut être fait en utilisant une configuration statique. Dans le cas d'environnements dynamiques, cela ne peut pas être fait; par conséquent, la découverte de service est utilisée.
Alertes
L'alerte avec Prometheus se compose de deux parties -
Les règles d'alerte envoient des alertes à Alertmanager.
Alertmanager gère ensuite ces alertes. Il envoie des notifications à l'aide de nombreuses intégrations prêtes à l'emploi telles que la messagerie électronique, Slack, Hipchat et PagerDuty. Alertmanager peut également effectuer une mise en sourdine ou une agrégation pour réduire le nombre de notifications.
Voici le guide pour surveiller le serveur Linux en utilisant Prometheus et Dashboard.
Visualiser avec des tableaux de bord
Prometheus dispose d'un certain nombre d'API à l'aide desquelles les requêtes PromQL peuvent produire des données brutes pour les visualisations.
Bien que Prometheus inclue un navigateur d'expressions qui peut être utilisé pour les requêtes ad hoc, le meilleur outil disponible est grafana. Grafana s'intègre entièrement à Prometheus et peut produire une grande variété de tableaux de bord.
Vous devrez configurer Prometheus comme source de données pour Grafana.
Vous pouvez ajouter des tableaux de bord par:
- Importation de tableaux de bord créés par la communauté
- Construire le vôtre
- Utilisation d'un tableau de bord prédéfini.
Voici à quoi ressemble un tableau de bord d'exportateur de nœuds prédéfini:
Grafana a un mondePing module qui vous permet de surveiller les mesures de performances du site et du DNS dans le monde entier.
Résumé
Prometheus a très peu d'exigences. Il peut être assez simple à exécuter car il s'agit d'un binaire unique avec un fichier de configuration. Il peut gérer des milliers de cibles et ingérer des millions d'échantillons par seconde. Prometheus est conçu pour suivre le système global, la santé et le comportement du système.
Grafana est le meilleur outil disponible pour la visualisation des métriques et s'intègre parfaitement à Prométhée.