Les systèmes distribués contiennent de nombreuses pièces mobiles, et il est essentiel de surveiller les données de télémétrie telles que les métriques, les journaux et les traces pour gagner en visibilité et permettre aux équipes de déterminer la cause première d'un problème. L'objectif de nombreuses initiatives d'observabilité est d'augmenter la disponibilité et les performances. Grafana Labs fabrique l'une des piles d'observabilité open source les plus utilisées (Grafana pour la visualisation, Loki pour les journaux, Mimir pour les métriques, Tempo pour les traces, Alertmanager pour les alertes), et vend Grafana Cloud et Grafana Enterprise .
Grafana Mimir est un projet de logiciel open source sous licence AGPLv3 qui, lorsqu'il est associé à MinIO, fournit un stockage évolutif et à long terme pour les métriques Prometheus. Mimir a été construit à l'aide d'une architecture basée sur des microservices qui est évolutive horizontalement. Chaque microservice est appelé un composant et Mimir s'exécute comme un binaire unique composé de ces composants. La plupart des composants sont sans état et ne nécessitent pas la persistance de données entre les redémarrages.
Lorsque vous combinez Mimir et MinIO, vous produisez une infrastructure particulièrement bien adaptée pour répondre aux besoins d'observabilité cloud native des entreprises avec :
Performance : la combinaison d'évolutivité et de hautes performances de MinIO met chaque charge de travail, aussi exigeante soit-elle, à portée de main. MinIO est capable de performances exceptionnelles - une référence récente a atteint 325 Gio/s (349 Go/s) sur les GET et 165 Gio/s (177 Go/s) sur les PUT avec seulement 32 nœuds de SSD NVMe prêts à l'emploi.
Échelle : MinIO ne connaît aucune limite car il évolue horizontalement à travers les pools de serveurs. Chaque pool de serveurs est un groupe indépendant de nœuds avec leurs propres ressources de calcul, de réseau et de stockage. Dans les configurations multilocataires, chaque locataire est un cluster de pools de serveurs dans un espace de noms unique, entièrement isolé des pools de serveurs des autres locataires. La capacité peut facilement être ajoutée à un système existant en pointant MinIO vers un nouveau pool de serveurs et MinIO le prépare automatiquement et le met en service.
Simplicité : Si vous préférez utiliser Mimir plutôt que de passer des heures à jouer avec le stockage d'objets, vous ne pouvez pas trouver de solution plus simple que MinIO. MinIO ne sert que des objets - c'est tout ce que nous faisons et nous sommes obsédés par le fait d'être les meilleurs. D'autres produits combinent le stockage d'objets et de fichiers, ce qui se traduit par plusieurs couches de stockage qui introduisent une latence dans les temps de réponse aux requêtes de Mimir et créent une architecture plus complexe avec un plus grand risque d'échec.
Multi-Cloud : MinIO, né dans le cloud, fonctionne n'importe où sur n'importe quelle combinaison de matériel et de logiciel. Un riche ensemble d'intégrations signifie que MinIO se connecte de manière transparente aux outils et services de sécurité et de gestion existants pour centraliser la gestion des identités, la gestion des clés de chiffrement, etc. MinIO fournit un stockage d'objets compatible avec l'API S3 sur baremetal ou toute version de Kubernetes - y compris GKE, EKS, AKS, Red Hat OpenShift, VMware Tanzu - et synchronise efficacement les données à l'aide de la réplication active-active .
Certaines des principales forces de Grafana Mimir incluent :
Facile à installer et à entretenir : la documentation complète, les didacticiels et les outils de déploiement de Grafana Mimir permettent de démarrer rapidement. En utilisant son mode monolithique, vous pouvez faire fonctionner Grafana Mimir avec un seul binaire et aucune dépendance supplémentaire. Une fois déployés, les tableaux de bord, les alertes et les manuels de bonnes pratiques fournis avec Grafana Mimir facilitent la surveillance de la santé du système.
Évolutivité massive : vous pouvez exécuter l'architecture évolutive horizontalement de Grafana Mimir sur plusieurs machines, ce qui vous permet de traiter des ordres de grandeur plus de séries temporelles qu'une seule instance Prometheus. Des tests internes montrent que Grafana Mimir gère jusqu'à 1 milliard de séries chronologiques actives.
Vue globale des métriques : Grafana Mimir vous permet d'exécuter des requêtes qui agrègent des séries de plusieurs instances Prometheus, vous donnant une vue globale de vos systèmes. Son moteur de requêtes parallélise largement l'exécution des requêtes, de sorte que même les requêtes de cardinalité la plus élevée se terminent à une vitesse fulgurante.
Stockage métrique bon marché et durable : Grafana Mimir utilise le stockage d'objets pour le stockage de données à long terme, ce qui lui permet de tirer parti de cette technologie omniprésente, rentable et à haute durabilité. Il est compatible avec plusieurs implémentations de magasins d'objets, notamment AWS S3, Google Cloud Storage, Azure Blob Storage, OpenStack Swift, ainsi que tout stockage d'objets compatible S3.
Haute disponibilité : Grafana Mimir réplique les métriques entrantes, garantissant qu'aucune donnée n'est perdue en cas de panne de la machine. Son architecture évolutive horizontalement signifie également qu'il peut être redémarré, mis à niveau ou rétrogradé sans aucun temps d'arrêt, ce qui signifie qu'il n'y a aucune interruption de l'ingestion ou de l'interrogation des métriques.
Multi-locataire natif : l'architecture multi-locataire de Grafana Mimir vous permet d'isoler les données et les requêtes d'équipes ou d'unités commerciales indépendantes, ce qui permet à ces groupes de partager le même cluster. Des limites avancées et des contrôles de qualité de service garantissent que la capacité est partagée équitablement entre les locataires.
Mimir a été développé pour être la base de données de séries chronologiques open source la plus évolutive et la plus performante disponible. Mimir s'adapte facilement à 1 milliard de métriques et au-delà, avec des performances de requête ultra rapides jusqu'à 40 fois plus rapides que Cortex, le TSDB Mimir a été conçu pour le remplacer. Cortex est un projet CNCF depuis 2018 et est largement utilisé pour stocker les métriques Prometheus. Lors de la création de Mimir, Grafana Labs a jeté les bases d'une observabilité prête pour l'entreprise avec des licences AGPLv3, des contrôles d'accès et des performances, une évolutivité et une disponibilité améliorées.
Grafana Labs a un objectif pour Mimir : être la meilleure base de données de séries chronologiques évolutive, quel que soit le format des métriques. Les entreprises devraient pouvoir utiliser les métriques Prometheus (et d'autres métriques lorsque d'autres fournisseurs collaborent) sans modifier le code existant.
Maintenant que nous avons appris ce qu'est Mimir, parcourons un didacticiel d'introduction.
Ce didacticiel s'appuie sur un didacticiel existant, Jouez avec Grafana Mimir pour montrer à quel point il est facile de démarrer avec Mimir à l'aide de Docker.
Créez une copie du dépôt Grafana Mimir à l'aide de la ligne de commande Git :
git clone https://github.com/grafana/mimir.git
Accédez au répertoire du didacticiel :
cd mimir/docs/sources/tutorials/play-with-grafana-mimir/
Démarrer MinIO, Mimir, Prometheus, Grafana et NGINX
docker compose up
Cela affichera ce qui suit :
Les ports suivants sont utilisés :
Grafana : http://localhost:9000
Grafana Mimir : http://localhost:9009 .
Les composants de notre tutoriel vont ensemble comme ceci :
Si vous souhaitez approfondir les configurations utilisées dans ce didacticiel, veuillez consulter les fichiers YAML enregistrés dans
~/mimir/docs/sources/tutorials/play-with-grafana-mimir/config/
Pour accéder à Grafana, lancez un navigateur et ouvrez http://localhost:9000
. Vous utiliserez Grafana pour afficher des tableaux de bord qui affichent l'état du cluster Mimir. Les tableaux de bord interrogent Mimir sur les métriques qu'ils affichent. Dans le menu en haut à gauche, cliquez sur Tableaux de bord, puis sur Parcourir pour voir les tableaux de bord qui ont été préchargés pour le didacticiel. Ces tableaux de bord proviennent du mixin Grafana Mimir, qui regroupe les tableaux de bord des meilleures pratiques de Grafana Labs, les règles d'enregistrement et les alertes pour la surveillance de Mimir.
Il faut généralement 3 à 5 minutes après le lancement de nos conteneurs de didacticiel pour que les métriques soient affichées dans les tableaux de bord Grafana. Nous exécutons également Mimir sans passerelle d'entrée, planificateur de requêtes ou memcached, de sorte que les tableaux de bord associés seront vides.
À ce stade précoce de l'apprentissage de Mimir, commencez par parcourir les tableaux de bord pour les écritures, les lectures, les requêtes et le magasin d'objets. Par exemple, le tableau de bord de la boutique d'objets montre les opérations qui ont eu lieu depuis que nous avons créé Mimir.
Les règles d'enregistrement sont un mécanisme qui précalcule les expressions fréquemment nécessaires ou coûteuses en calcul et enregistre le résultat sous la forme d'un nouvel ensemble de séries temporelles. Suivez ces instructions pour configurer une règle d'enregistrement dans Mimir à l'aide de Grafana.
Cette règle d'enregistrement sum:up
affichera le nombre d'instances Mimir actives et joignables pour être récupérées. Une fois la règle créée, elle sera disponible pour être interrogée et incluse dans les tableaux de bord.
Ouvrez le menu Alertes dans la barre d'outils de gauche et cliquez sur « Nouvelle règle d'alerte » :
Entrez ce qui suit pour configurer la règle d'enregistrement :
Mimir or Loki recording rule
sum:up
example-namespace
example-group
sum(up)
Pour vérifier que votre nouvelle règle d'enregistrement s'exécute correctement, ouvrez Explorer dans le menu de gauche :
Dans le menu déroulant Metric, choisissez sum:up
, puis cliquez sur Run query en haut à droite, puis cliquez sur le bouton Inspector. Ci-dessous, cliquez sur Données pour afficher une liste des heures et des résultats de la requête. Le résultat devrait être "3", indiquant que les trois instances locales de Mimir sont opérationnelles.
Les règles d'alerte construites sur Mimir suivent le même format PromQL que celles construites sur Prometheus et Loki. Grafana évalue l'expression et, si nécessaire, déclenche une alerte à l'aide d'Alertmanager. Nous avons creusé cela assez profondément dans un article de blog précédent, Surveillance et alerte multi-cloud avec Prometheus et Grafana .
Nous allons créer une alerte qui se déclenche lorsque le nombre d'instances Mimir tombe en dessous de trois.
Dans le menu de gauche, passez la souris sur Alerte, puis cliquez sur Nouvelle règle d'alerte.
Mimir or Loki alert
MimirNotRunning
Mimir
dans le champ Sélectionner la source de donnéesexample-namespace
example-group
up == 0
Accédez à la page Alerte et vous verrez notre règle d'enregistrement Mimir et notre règle d'alerte. Notez qu'il y a un beau, grand et réconfortant statut vert Normal affiché à côté de l'alerte car tous nos conteneurs Mimir sont toujours en cours d'exécution.
Nous allons simuler une condition d'erreur en mettant fin à l'une des trois instances Mimir (assurez-vous que vous êtes dans le répertoire ~/mimir/docs/sources/tutorials/play-with-grafana-mimir
:
docker compose kill mimir-3
Comme nous avons brusquement mis fin à une instance Mimir, il y aura une brève période où Grafana affichera une erreur lors de l'interrogation des règles. Cela se résoudra automatiquement dès que les contrôles de santé internes de Mimir détecteront l'instance résiliée comme étant défectueuse.
Dans environ une minute, l'alerte indiquera brièvement un état jaune En attente.
Après une autre minute, l'alerte passera à l'état de tir rouge :
Si nous avions configuré Alertmanager avec des canaux de notification, les alertes seraient envoyées au mécanisme et au contact appropriés. Veuillez consulter Surveillance et alertes multi-cloud avec Prometheus et Grafana pour obtenir des instructions.
Avant de restaurer notre instance Mimir résiliée, revenez à la page Explorer de Grafana et interrogez notre règle d'enregistrement sum:up
. Nous pouvons voir que Mimir a continué à enregistrer des métriques même si une instance Mimir était en panne.
Enfin, ramenez l'instance Mimir :
docker compose start mimir-3
Revenez à la page Alerte et notez que notre statut d'alerte est revenu à Normal.
Dans ce didacticiel, vous avez appris à exécuter Grafana Mimir et MinIO dans une configuration à haute disponibilité. Nous avons consommé les métriques Prometheus de Mimir lui-même, puis les avons interrogées et visualisées dans Grafana. Nous avons également configuré une règle d'enregistrement et une alerte et vérifié que l'alerte se déclenchait comme prévu lorsque la condition était remplie.
Vous pouvez également configurer Mimir et Grafana pour récupérer les métriques Prometheus de MinIO et déclencher des alertes via AlertManager. Mimir stocke les données dans le stockage d'objets pour la persistance, ce qui lui permet de tirer parti de MinIO omniprésent, rentable et à haute durabilité.
Essayez Grafana Mimir ! Si vous avez des questions, rejoignez notre chaîne Slack ou envoyez-nous un e-mail à [email protected].
Également publié ici .