RousselTMLEARNING

TP · Grafana : de la découverte à l'expertise

Projet 5 : Prise en main

Ce que vous allez apprendre dans ce TP
  • Créer un 'drill down' entre tableaux de bord
  • Créer des variables avancées (assistées): key-value
  • Créer des variables avancées (personnalisées): key-value
  • Identifier et reconnaître la source de donnée
  • Construction et utilisation d'une requête Lucene
  • Utilisation d'une visualisation de type Geomap
  • Personnalisation de la visualisation
  • Définir la plage horaire par défaut
  • Définir le titre et la description d'un panel
  • Faire des graphiques à bornes
  • Mettre en place un tableau avec feu tricolore
  • Utiliser le value mapping
  • Utiliser les regex
  • Faire des graphiques à secteurs
  • Construire unb panel à partir d'un autre
  • Prendre en main la visualisation de type Logs
  • Faire des requêtes sur des intervalles avec Lucene
  • Faire des séries temporelles
  • Utiliser le mode Metrics de la datasource Elasticsearch
  • Faire des regroupements selon un critère
  • exclure un champ par négation avec lucene
  • Mettre en place une alerte

Introduction #

Ce que vous allez apprendre dans cette section
  • Créer un 'drill down' entre tableaux de bord
  • Créer des variables avancées (assistées): key-value
  • Créer des variables avancées (personnalisées): key-value

Pour ce projet, vous devez avoir fait en intégralité le Projet 4

  1. Création du tableau de bord

    Dans le dossier que vous venez de créer, vous devez créer un tableau de bord que vous allez nommer 'projet 5' et lui affecter le tag 'projet 5'. Vous devez ensuite identifier la bonne source de données qui correspond à Elasticsearch.

  2. Variable host_avance1

    Vous devez créer une variable nommée 'host_avance1' et avec comme label 'Host avancé 1' qui va afficher la liste des domaines(champ 'host') présents Dans la source de donnée de type 'Infinity'. L'URL a utiliser pour construire les variables est la suivante : https://github.com/RousselTM/grafana-formation/blob/main/tp/data/host_avance1.json
    ATTENTION: Vous remarquez que Dans le json il y a deux champs particulier : '__text' et '__value' qui sont des champs spéciaux que Grafana sais interpréter comme clé et valeur de la variable.
  3. Variable host_avance2

    Vous devez créer une variable nommée 'host_avance2' et avec comme label 'Host avancé 2' qui va afficher la liste des domaines(champ 'host') présents Dans la source de donnée de type 'Infinity'. L'URL a utiliser pour construire les variables est la suivante : https://github.com/RousselTM/grafana-formation/blob/main/tp/data/host_avance2.json
    ATTENTION: Vous remarquez que Dans le json il n'y a plus les deux champs particulier : '__text' et '__value'. De plus, les champs n'ont plus de titre et sont de la forme clé:valeur. Vous devez donc vous servir du champ 'Regex' pour extraire les informations qui nous interesse.
  4. Variable host_avance3

    Vous devez créer une variable nommée 'host_avance3' et avec comme label 'Host avancé 3' qui va afficher la liste des domaines(champ 'host') présents Dans la source de donnée de type 'Infinity'. L'URL a utiliser pour construire les variables est la suivante : https://github.com/RousselTM/grafana-formation/blob/main/tp/data/host_avance3.json
    ATTENTION: Nouveau cas d'utilisation. Cette fois les informations qui nous interessent sont Dans un sous champ. Vous devez donc basculer du Type 'JSON' au type 'UQL'. Dans le champ 'UQL' qui va apparaître il vous faudra construire la syntaxe qui va bien.
  5. Test variables host_avanceX

    Vous devez créer 3 visualisations de type 'Text' et les positionner côte à côte. Chacune va affiche les 3 formats de variable suivants :
    Defaut: ${host_avanceX}
    Valeur: ${host_avanceX:value}
    Titre: ${host_avanceX:text}

Time series avec Annotations #

Ce que vous allez apprendre dans cette section
  • Identifier et reconnaître la source de donnée
  • Construction et utilisation d'une requête Lucene
  • Utilisation d'une visualisation de type Geomap
  • Personnalisation de la visualisation
  • Définir la plage horaire par défaut
  • Définir le titre et la description d'un panel

Prendre en main la représentation sous forme de carte

  1. Source de données

    Vous devez identifier et choisir la source de donnée de type Elasticsearch.
    INFORMATION : En entreprise, vous devez définir une norme de nommage Dans Grafana. L'erreur que certains font est de mettre le type de la source Dans le nom pourtant il est facilement identifiable Dans la console Grafana
  2. La requête

    Vous devez construire une requête Lucene pour afficher uniquement les documents qui ont un statut http à '503' et dont le champ 'machine.os' commence par 'win'. Pour rappel, vous avez créé une variable donc toutes les requêtes doivent l'inclure !

  3. Type de visualisation

    Vous devez choisir une visualisation qui correspond à une représentation sous forme de carte et utilise les champs suivants pour les coordonnées :
    • Latitude : geo.coordinates.lat
    • Longitude : geo.coordinates.lon
  4. Titre et description

    Vous devez définir, pour la visualisation, comme titre 'Répartition géographique des visiteurs' et comme description 'Représentation géographique des utilisateurs'

  5. Le détails des points

    Vous devez configurer le tableau pour qu'il affiche uniquement ces champs quand on se positionne sur un point :
    • host
    • clientip
    • @timestamp
    • geo.dest
    • geo.src
    • message
    Et tout champ qui est nécessaire au fonctionnement de la carte. Les champs doievent s'afficher Dans l'odre exacte des éléments.
  6. Plage horaire par défaut

    Vous devez configurer le tableau de bord pour qu'il affiche par défaut les données sur 30 jours.

Panel : SPC Histogram #

Ce que vous allez apprendre dans cette section
  • Faire des graphiques à bornes
  • Mettre en place un tableau avec feu tricolore
  • Utiliser le value mapping
  • Utiliser les regex
Vous devez créer un panel qui affiche un graphique à bornes représentant la répartition des codes retours. Vous devez mettre en place un feu tricolore sur ce modèle
  • Vert avec le message 'OK' : code 2xx
  • Jaune avec le message 'Redirection' : code 3xx
  • Orange avec le message 'Erreur client' : code 4xx
  • Rouge avec le message 'Erreur serveur' : code 5xx
  1. Regroupement des données

    Vous devez mettre en place, grâce aux transformations, le regroupement des données par code retour et compter le nombre de fois que ce dernier apparaît Dans le temps.

  2. Conversion des données

    Un graphe à borne utilise des champs de type 'string'. Vous devez donc convertir les codes retour en chaîne de caractère.

  3. Mode de coloration

    Vous devez indiquer à Grafana qu'il doit se servir du code retour pour la couleur de la borne.

  4. Feu tricolore

    Vous devez mettre en place le feu tricolore comme demandé en ci-dessus.

Panel : Graphiques à secteurs #

Ce que vous allez apprendre dans cette section
  • Faire des graphiques à secteurs
  • Construire unb panel à partir d'un autre
Vous devez créer un panel qui affiche un graphique à bornes représentant la répartition des codes retours. Vous devez personnaliser les labels sur ce modèle
  • Message 'OK' : code 2xx
  • Message 'Redirection' : code 3xx
  • Message 'Erreur client' : code 4xx
  • Message 'Erreur serveur' : code 5xx
  1. Dupliquer un panel

    Vous devez dupliquer le panel que vous venez de créer (Panel : Graphiques à bornes). Et les redimensionner pour qu'ils s'affichent sur une même ligne. Celui à Bornes occupe environ 2/3 de la ligne et le clone 1/3.

  2. Changer visualisation

    Vous devez modifier la visualisation pour que les données soient désormais affichées sous forme de secteurs.

  3. Feu tricolore

    Est-il possible de faire du feu tricolore avec ce type de visualisation ?

Panel : Logs #

Ce que vous allez apprendre dans cette section
  • Prendre en main la visualisation de type Logs
  • Faire des requêtes sur des intervalles avec Lucene

Vous devez ajouter au tableau de bord un panel pour visualiser des Logs.

  1. Erreurs HTTP

    Vous devez ajouter un panel pour représenter des logs et qui affiche uniquement les logs d'erreurs HTTP.
    INFORMATION: une log d'erreur HTTP est une log qui a un code retour http de 4xx à 5xx

Panel : série temporelle #

Ce que vous allez apprendre dans cette section
  • Faire des séries temporelles
  • Utiliser le mode Metrics de la datasource Elasticsearch
  • Faire des regroupements selon un critère
  • exclure un champ par négation avec lucene

Créer une série temporelle avec des données issues d'Elasticsearch. Ce graphe doit donner l'évolution du nombre de documents par code retour HTTP

  1. Le type de requête

    Vous devez positionner le bon mode pour faire de la série temporelle. ET Dans la requête exclure tous les status HTTP à 2xx et 3xx

  2. Le regroupement

    Vous devez configurer Grafana pour qu'il regroupe les métriques par temps (Dans Elasticsearch le champ par défaut du temps est '@timestamp') et par code retour HTTP.

  3. La visualisation

    Vous devez sélectionner la visualisation qui permet d'afficher des series temporelles.

Alertes #

Ce que vous allez apprendre dans cette section
  • Mettre en place une alerte
Vous devez positionner une alerte sur des erreurs serveurs.
INFORMATION: une erreur serveur est une log qui a un code retour http 5xx
  1. Erreur serveur

    Vous devez mettre en place une alerte à chaque fois qu'on a une erreur serveur qui se produit. Les notifications doivent être envoyées sur le point de contect 'RousselTM'. Vous pouvez vérifier les notifications à l'adresse : Voir les notifications.

Niveau de difficulté : ●●●○○ (3/5)

Glossaire de la formation

Observabilité

La capacité à connaître l'état interne d'un système à partir des données qu'il émet.Ces données sont classées en 3 piliers : logsmétriquestracesprofil...

Grafana

Plateforme open source de visualisation de données et d'analyse de métriques interactives.

Prometheus

Système open source de surveillance et d'alerte, particulièrement adapté pour la collecte de métriques dans des environnements dynamiques (comme Kuber...

APM (Application Performance Monitoring)

Surveillance des performances applicatives pour identifier, diagnostiquer et résoudre les problèmes complexes liés aux performances et à la disponibil...

k6

Outil open source de test de charge (load testing) conçu pour l'ingénierie de performance, permettant d'évaluer la fiabilité et la scalabilité des sys...

Traces distribuées

Technique (issue du pilier des Traces) permettant de suivre le cheminement complet d'une requête à travers de multiples micro-services pour identifier...

Métriques

Mesures numériques collectées à intervalles réguliers (ex: CPU, RAM, temps de réponse) utilisées pour évaluer l'état de santé global d'un système au f...

Alerting

Processus consistant à notifier les équipes (via email, Slack, Teams) lorsqu'un événement spécifique, un dépassement de seuil ou une anomalie est déte...

HTTP Code

Codes de statut HTTP standardisés indiquant le résultat du traitement d'une requête.1xx (Information) : 100 Continue, 101 Switching Protocols.2xx (Suc...

Access Log

Fichier de journalisation enregistrant les requêtes traitées par un serveur web (Apache, Nginx, Lighttpd, etc.). Il permet de tracer l'activité du ser...

Client IP

L'adresse IP de l'utilisateur effectuant la requête vers le serveur web. Lorsqu'un utilisateur passe par un Load Balancer ou un proxy (ex: Cloudflare)...

Timestamp

La date et l'heure exactes auxquelles la requête a été reçue par le serveur.Configuration : %t dans Apache, $time_local ou $time_iso8601 dans Nginx.

Request

La ligne de requête initiale du client. Elle comprend généralement la méthode HTTP (ex: GET), l'URL demandée et la version du protocole HTTP.Configura...

Status Code

Le code de statut HTTP final renvoyé par le serveur au client (ex : 200 pour un succès, 404 pour ressource non trouvée).Configuration : %>s dans Apach...

Size

Le volume des données renvoyées au client, mesuré en octets (généralement sans les en-têtes HTTP).Configuration : %b ou %O dans Apache, $body_bytes_se...

Referrer

L'URL de la page web depuis laquelle le client a cliqué ou suivi un lien pour accéder à la ressource actuelle.Configuration : %{Referer}i dans Apache,...

User-Agent

Les informations d'identification fournies par le client concernant son navigateur, son système d'exploitation et son appareil. Sa structure standard ...

Response Time

La durée totale prise par le serveur pour traiter la requête et renvoyer la réponse au client.Configuration : %D (microsecondes) ou %T (secondes) dans...

Grafana Loki

Système de journalisation (logs) multi-tenant, hautement disponible et inspiré de Prometheus. Il est conçu pour être très économe en ressources en n'i...

Articles recommandés

Comprendre la notion de score

Le concept de score va permettre à Elasticsearch de classer vos documents par pertinence lors d u...

Différences entre Technologies et Services dans Dynatrace

Dans Dynatrace, les concepts de 'Technologie' et de 'Services' aident à organiser et surveiller l...

OpenTelemetry : Instrumentation Automatique vs Manuelle

Comprenez les différences entre l'instrumentation automatique et manuelle avec OpenTelemetry, leu...

Dynatrace : Différences entre SQL Modifications, SQL Queries or Procedures, et SQL Transactions

Cet article détaille les différences entre trois concepts essentiels dans l'exécution des instruc...

Types de consommation de licence

Comprendre l'évolution de la facturation dans Dynatrace : la différence entre l'ancien modèle de ...

Les Types de Services Dynatrace : Comprendre et Optimiser Votre Surveillance Applicative

Découvrez les différents types de services que Dynatrace peut surveiller, leur rôle, et comment l...

Les SLO Dynatrace : Comprendre et Gérer les Objectifs de Niveau de Service

Découvrez comment utiliser les SLO (Service Level Objectives) dans Dynatrace pour définir et surv...

Apdex vs Core Web Vitals

Découvrez les différences entre Apdex et Core Web Vitals, deux indicateurs de performance essenti...

Comprendre Elastic Common Schema(ECS)

Comme toujours dans nos missions de conseil, nous recommandons aux entreprises d'uniformiser, de ...

Pourquoi collecter des métriques

Découvrez les raisons clés pour collecter des métriques avec des exemples concrets pour chaque cas.

Les types de métriques dans Prometheus

Découvrez en détail les quatre types de métriques supportés par Prometheus (Counter, Gauge, Histo...

Grail : Dynatrace Data Lakehouse

Désormais vous disposez dans Dynatrace (SaaS) d'un Data Lakehouse nommé Grail dont vous pouvez co...

Introduction à PromQL

Apprenez à maîtriser PromQL, le langage de requête utilisé dans Prometheus, avec des exemples et ...

Dynatrace OneAgent : tags, props, vars CLI

Pense‑bête des commandes CLI/API pour gérer tags, propriétés, variables d'environnement, versions...

Grafana Alloy : Collecte et Transformation de Télémétrie

Apprenez à utiliser Grafana Alloy pour collecter, transformer et acheminer logs, métriques et tra...

Grafana Alloy : Collecter les métriques système et les logs locaux

Découvrez comment configurer Grafana Alloy pour superviser le serveur sur lequel il s'exécute, av...

Grafana Alloy : L'importance de l'auto-supervision (Self-Monitoring)

Découvrez pourquoi et comment configurer Grafana Alloy pour qu'il se supervise lui-même, en colle...

Grafana Alloy : Comprendre et exploiter l'Interface Utilisateur (UI)

Découvrez comment activer, sécuriser et utiliser l'interface web intégrée de Grafana Alloy pour v...

OTLP expliqué : comprendre le protocole OpenTelemetry

Découvrez le protocole OTLP expliqué simplement. Comprendre les différences entre gRPC et HTTP po...

Grafana Alloy : Guide complet pour collecter métriques, logs et traces

Tutoriel complet sur Grafana Alloy. Découvrez comment installer, configurer et utiliser ce collec...

Grafana Alloy : Syntaxe et Configuration (Alloy Language : River)

Dans le cadre d'une formation Grafana ou formation observabilité, maîtrisez la syntaxe déclarativ...

Grafana Alloy : Collecte de Métriques (Prometheus & Ecosystem)

Apprenez à configurer Grafana Alloy pour collecter, transformer et envoyer des métriques en utili...

C'est quoi l'observabilité

La capacité à connaître l'état interne d'un système à partir des données que cette dernière émet...

Grafana Alloy : Gestion des Logs avec Loki

Découvrez comment configurer Grafana Alloy pour lire des fichiers de logs, journald ou des flux r...

Grafana Alloy : Gestion des Traces avec Tempo

Plongez dans le traitement des traces distribuées. Apprenez à ingérer des traces OTLP, Jaeger ou ...

Grafana Alloy : Profilage Continu avec Pyroscope

Découvrez comment configurer le profilage continu (Continuous Profiling) dans vos environnements ...

Grafana Alloy : Déploiement Avancé et Clustering

Maîtrisez le déploiement avancé de Grafana Alloy en mode clustering. Comprenez ses avantages pour...

Grafana Assistant : L'IA au service de l'observabilité

Découvrez Grafana Assistant, l'intelligence artificielle intégrée à Grafana Cloud. Apprenez comme...

Grafana Alloy vs OpenTelemetry Collector : Lequel choisir ?

Comparaison détaillée entre Grafana Alloy et l'OpenTelemetry Collector. Découvrez les avantages, ...

Grafana Alloy vs Dynatrace ActiveGate : Lequel choisir ?

Comparaison entre Grafana Alloy et Dynatrace ActiveGate. Comprenez les différences fondamentales ...

Grafana Alloy vs Grafana Agent vs Promtail : Lequel choisir ?

Découvrez l'évolution des collecteurs de télémétrie de l'écosystème Grafana. Comparatif détaillé ...

Référence des Composants Grafana Alloy

Un guide de référence complet sur tous les composants disponibles dans Grafana Alloy, organisé pa...

Dynatrace : Maîtriser les Entity Selectors pour une observabilité à grande échelle

Découvrez l'importance stratégique des Entity Selectors, maîtrisez leur syntaxe avancée, et adopt...

Dynatrace : Gestion du RGPD et protection de la vie privée (Data Privacy)

Apprenez à configurer Dynatrace pour respecter le RGPD, masquer les données sensibles et activer ...

Dynatrace Synthetic Monitoring : Guide complet et bonnes pratiques

Découvrez comment utiliser le Synthetic Monitoring de Dynatrace pour surveiller proactivement vos...

Dynatrace Credential Vault : Sécuriser et gérer vos secrets

Découvrez comment l'application Credential Vault de Dynatrace permet de gérer de manière sécurisé...

Les variantes du DevOps : Comprendre l'évolution de la culture de l'ingénierie

Découvrez les différentes déclinaisons du DevOps : DevSecOps, AIOps, NoOps, GitOps et FinOps. Com...

Dynatrace vs Datadog : Le duel des leaders de l'APM

Comparatif complet entre les deux géants de l'observabilité. Automatisation par IA contre flexibi...

Grafana vs Kibana : Quel outil de visualisation choisir ?

Découvrez les différences fondamentales entre Grafana, le roi des métriques multi-sources, et Kib...

Grafana Loki vs Elasticsearch : La bataille du stockage de logs

Comparatif entre Loki, le système de logs inspiré par Prometheus, et Elasticsearch, le moteur de ...

Prometheus vs VictoriaMetrics : Scalabilité des métriques

Pourquoi choisir VictoriaMetrics comme alternative à Prometheus pour le stockage à long terme et ...

OpenTelemetry vs Dynatrace OneAgent : Standard ouvert ou magie propriétaire ?

Comprenez la différence entre l'instrumentation manuelle standardisée d'OpenTelemetry et l'automa...

XLA : Pourquoi l'Expérience Utilisateur est le nouveau standard de l'Observabilité

Découvrez le concept de XLA (Experience Level Agreements), la différence avec les SLAs traditionn...

Dynatrace : Management Zones vs Segments

Comprenez les différences fondamentales entre les Management Zones et les Segments dans Dynatrace...

Exploiter l'API Dynatrace v2 : Guide Complet de l'Automatisation

Apprenez à utiliser l'API Dynatrace pour automatiser votre observabilité : gestion des scopes, ro...

Qu'est-ce que le Cloud Computing ? La définition du NIST

Comprenez les fondamentaux du Cloud Computing à travers les 5 caractéristiques essentielles défin...

IaaS, PaaS, SaaS : Comprendre les modèles de service

Découvrez les différences entre l'infrastructure, la plateforme et le logiciel en tant que service.

Le modèle de responsabilité partagée en sécurité

Apprenez qui est responsable de quoi en matière de sécurité dans le Cloud.

Élasticité vs Scalabilité : Les clés de la performance

Comprenez comment le cloud s'adapte automatiquement à la charge de vos utilisateurs.

Introduction au FinOps : Maîtriser sa facture Cloud

Comment passer du CapEx à l'OpEx tout en gardant le contrôle financier.

Le Serverless : L'informatique sans serveurs à gérer

Focus sur le Function as a Service (FaaS) et l'abstraction de l'infrastructure.

Edge Computing : Amener le Cloud au plus près des données

Découvrez pourquoi le traitement à la périphérie du réseau est essentiel pour l'IoT et la latence.

Qu'est-ce qu'une application Cloud Native ?

Comprendre les principes des microservices, des conteneurs et des APIs.

Les 6 Rs : Stratégies de migration vers le Cloud

Découvrez les différentes approches pour déplacer votre infrastructure on-premise vers le nuage.

Synthetic Monitoring as Code : Industrialisez la gestion des scénarios synthétiques

Découvrez comment intégrer le Synthetic Monitoring dans vos pipelines CI/CD pour des tests de per...

Grafana Provisioning : Automatisez la gestion de vos tableaux de bord et sources de données

Découvrez comment utiliser le provisioning de Grafana pour gérer vos configurations (dashboards, ...

Les Data Sources dans Grafana : Connectez et unifiez vos données

Apprenez à étendre les capacités de Grafana via les Data Sources. Découvrez les plugins essentiel...

Maîtriser les Transformations dans Grafana : Manipulez vos données avec agilité

Apprenez à utiliser les transformations Grafana pour reformater, calculer et combiner vos données...

Maîtriser les Variables dans Grafana : Dynamisez vos Tableaux de Bord

Apprenez à utiliser les variables pour créer des tableaux de bord interactifs et réutilisables. D...

Guide des Bonnes Pratiques Dynatrace : Vers une Observabilité Mature

Optimisez votre plateforme Dynatrace grâce à nos recommandations d'experts : automatisation du ta...

Les types de transactions dans les base de données

Cet article détaille les différences entre trois concepts essentiels dans l'exécution des instruc...

Bonnes Pratiques OpenTelemetry (OTel) : Le Guide de l'Observabilité Moderne

Maîtrisez OpenTelemetry grâce à nos conseils d'experts : implémentation du Collector, respect des...

Protection des Applications

Découvrez comment sécuriser vos backends contre les abus et les attaques courantes. Guide pratiqu...

Haute Disponibilité

Assurez la continuité de service de vos applications avec les stratégies de haute disponibilité. ...

Bonnes Pratiques Grafana Alloy : Optimiser sa Collecte de Télémétrie

Découvrez les règles d'or pour configurer Grafana Alloy de manière robuste : modularité, gestion ...

Architecture OpenTelemetry : Comprendre les 3 niveaux

Plongée au cœur de l'architecture OpenTelemetry. Apprenez comment les données circulent de l'appl...