Fermer

septembre 17, 2024

Configuration étape par étape : surveillance Grafana et Prometheus à l’aide de Node Exporter

Configuration étape par étape : surveillance Grafana et Prometheus à l’aide de Node Exporter


Introduction

La surveillance est un aspect crucial de la gestion des environnements cloud, garantissant que vous pouvez suivre la santé, les performances et la fiabilité de votre infrastructure. Prometheus et Grafana sont des outils puissants couramment utilisés pour la surveillance et la visualisation. Prometheus excelle dans la collecte et l’interrogation de métriques, tandis que Grafana fournit une interface pour visualiser ces données via des tableaux de bord personnalisables.

L’utilisation d’AWS EC2 pour héberger ces outils offre flexibilité et évolutivité, ce qui en fait un choix idéal pour mettre en place une solution de surveillance robuste.

Conditions préalables

Avant de vous lancer dans la configuration, assurez-vous d’avoir les éléments suivants :

  • Instance AWS EC2 : Un compte AWS actif et une instance EC2 exécutant Amazon Linux 2.
  • Connaissances de base : Familiarité avec les commandes Linux et les services AWS de base.
  • Outils nécessaires : Un client SSH pour vous connecter à votre instance EC2 et à l’AWS CLI pour gérer les ressources AWS.
    Remarque : ce blog est basé sur la configuration de Grafana et Prometheus sur Amazon Linux 2, vous pouvez également utiliser d’autres versions de système d’exploitation selon vos besoins.

Configuration de l’instance EC2

Lancement d’une instance EC2 :

  1. Connectez-vous à votre console AWS et accédez au tableau de bord EC2.
  2. Lancer une nouvelle instance en sélectionnant « Lancer l’instance ».
  3. Choisissez Amazon Linux 2 comme Amazon Machine Image (AMI).
  4. Sélectionnez un type d’instance : T2.small est suffisant pour les besoins de surveillance de base ou, si vous le souhaitez, vous pouvez opter pour un type d’instance supérieur.
  5. Configurez les groupes de sécurité : Autorisez le trafic entrant pour SSH (port 22), HTTP (port 80), HTTPS (port 443) et les ports personnalisés pour Prometheus (9090) et Grafana (3000).
    Groupe de sécurité

    Groupe de sécurité

  6. Lancer l’instance et téléchargez la paire de clés pour l’accès SSH.

Connexion à l’instance :

  1. Connectez-vous en SSH à votre instance EC2 à l’aide de la paire de clés téléchargée :
    ssh -i your-key.pem ec2-user@your-ec2-public-ip
  2. Mettez à jour la liste des packages et installez les packages essentiels :
    sudo yum update -y
    sudo yum install git wget -y

Installation et configuration de Prometheus sur Amazon Linux 2

Installation étape par étape de Prometheus :

  1. Créez un utilisateur système pour Prometheus :
    sudo useradd --no-create-home --shell /bin/false prometheus
  2. Créez des répertoires pour la configuration et les données de Prometheus :
    sudo mkdir /etc/prometheus
    sudo mkdir /var/lib/prometheus
  3. Définissez la propriété du répertoire de données :
    sudo chown prometheus:prometheus /var/lib/prometheus
  4. Accédez au répertoire /tmp :
    cd /tmp/
  5. Téléchargez Prométhée :
    wget https://github.com/prometheus/prometheus/releases/download/v2.31.1/prometheus-2.31.1.linux-amd64.tar.gz
  6. Extrayez le package Prometheus téléchargé :
    tar -xvf prometheus-2.31.1.linux-amd64.tar.gz
  7. Accédez au répertoire extrait :
    cd prometheus-2.31.1.linux-amd64
  8. Déplacez les fichiers de configuration et définissez la propriété :
    sudo mv console* /etc/prometheus
    sudo mv prometheus.yml /etc/prometheus
    sudo chown -R prometheus:prometheus /etc/prometheus
  9. Déplacez les binaires et définissez la propriété :
    sudo mv prometheus /usr/local/bin/
    sudo chown prometheus:prometheus /usr/local/bin/prometheus

Création du service Prometheus Systemd :

  1. Créez un fichier de service systemd pour Prometheus :
    sudo nano /etc/systemd/system/prometheus.service
  2. Ajoutez le contenu suivant :
    [Unit]
    Description=Prometheus
    Wants=network-online.target
    After=network-online.target
    
    [Service]
    User=prometheus
    Group=prometheus
    Type=simple
    ExecStart=/usr/local/bin/prometheus \
        --config.file /etc/prometheus/prometheus.yml \
        --storage.tsdb.path /var/lib/prometheus/ \
        --web.console.templates=/etc/prometheus/consoles \
        --web.console.libraries=/etc/prometheus/console_libraries
    
    [Install]
    WantedBy=multi-user.target
    Service Prométhée

    Service Prométhée

  3. Rechargez systemd pour appliquer le nouveau service :
    sudo systemctl daemon-reload
  4. Activez et démarrez le service Prometheus :
    sudo systemctl enable prometheus
    sudo systemctl start prometheus
  5. Vérifiez si le service Prometheus est en cours d’exécution
    sudo systemctl status prometheus
Statut de Prométhée

Statut de Prométhée


Tester Prometheus :

Accédez à l’interface utilisateur de Prometheus : Ouvrez votre navigateur et accédez à http://your-ec2-public-ip:9090 pour vérifier que Prometheus est en cours d’exécution.

http://votre-ec2-public-ip:9090

http://votre-ec2-public-ip:9090

Installation étape par étape de Node Exporter :

  1. Accédez à la page de téléchargement de Prometheus :
    http://prometheus.io/download
  2. Copiez le lien de téléchargement de Node Exporter :
    wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz
  3. Extrayez le fichier téléchargé :
    tar xvf node_exporter-1.5.0.linux-amd64.tar.gz
  4. Accédez au répertoire Node Exporter extrait :
    cd node_exporter-1.5.0.linux-amd64/
  5. Démarrez Node Exporter en exécutant l’exécutable :
    ./node_exporter

    Vous verrez Node Exporter écouter sur le port 9100.

  6. Vérifiez si Node Exporter est en cours d’exécution :
    curl localhost:9100/metrics
    curl localhost : 9100/métriques

    curl localhost : 9100/métriques


    Vous pouvez également visiter http://your-ec2-public-ip:9100/metrics depuis un navigateur.

Configuration de l’exportateur de nœuds en tant que service :

Pour vous assurer que Node Exporter s’exécute en tant que service en arrière-plan et démarre automatiquement au redémarrage, suivez les étapes ci-dessous :

  1. Copiez le binaire de Node Exporter dans /usr/local/bin :
    sudo cp node_exporter /usr/local/bin
  2. Créez un utilisateur système pour Node Exporter :
    sudo useradd node_exporter --no-create-home --shell /bin/false
  3. Changez la propriété du binaire Node Exporter :
    sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter
  4. Créez un fichier de service systemd pour Node Exporter :
    sudo nano /etc/systemd/system/node_exporter.service
  5. Ajoutez le contenu suivant au fichier de service :
    [Unit]
    Description=Node Exporter
    Wants=network-online.target
    After=network-online.target
    
    [Service]
    User=node_exporter
    Group=node_exporter
    Type=simple
    ExecStart=/usr/local/bin/node_exporter
    
    [Install]
    WantedBy=multi-user.target
  6. Recharger systemd :
    sudo systemctl daemon-reload
  7. Démarrez et activez Node Exporter en tant que service :
    sudo systemctl start node_exporter
    sudo systemctl enable node_exporter
  8. Vérifiez l’état du service Node Exporter :
    sudo systemctl status node_exporter

Ajout de cibles dans prometheus.yml

Configuration de Prometheus pour supprimer les métriques de l’exportateur de nœuds –

  1. Modifiez le fichier prometheus.yml :
    sudo nano /etc/prometheus/prometheus.yml
  2. Ajoutez les cibles Node Exporter sous scrape_configs :
    scrape_configs:
      - job_name: 'node_exporter'
        static_configs:
          - targets: ['localhost:9100']
    prometheus.yml

    prometheus.yml


    Remarque : Remplacer localhost:9100 avec l’adresse IP et le port réels si vous supprimez plusieurs instances EC2 et autorisez le port sur les instances pour Prometheus. Ainsi, les métriques peuvent être escamotées par Prometheus.

  3. Redémarrez Prometheus pour appliquer les modifications :
    sudo systemctl restart prometheus
    
  4. Vérifiez les cibles dans l’interface utilisateur de Prometheus :
    visitez http://your-ec2-public-ip:9090/targets depuis un navigateur.
    http://votre-ec2-public-ip:9090/targets

    http://votre-ec2-public-ip:9090/targets

Installation et configuration de Grafana

Configuration de Grafana :

Nous allons d’abord ajouter le dépôt Grafana pour que le système sache où le récupérer :

  1. Créez un fichier de référentiel pour Grafana :
    sudo nano /etc/yum.repos.d/grafana.repo
  2. Ajoutez le contenu suivant au fichier du référentiel :
    [grafana]
    name=grafana
    baseurl=https://packages.grafana.com/oss/rpm
    repo_gpgcheck=1
    enabled=1
    gpgcheck=1
    gpgkey=https://packages.grafana.com/gpg.key
    sslverify=1
    sslcacert=/etc/pki/tls/certs/ca-bundle.crt
  3. Installez Grafana :
    sudo yum install grafana -y
  4. Rechargez la configuration du gestionnaire systemd :
    sudo systemctl daemon-reload
  5. Démarrez le serveur Grafana :
    sudo systemctl start grafana-server
  6. Vérifiez l’état du service Grafana :
    sudo systemctl status grafana-server
  7. Activez Grafana pour démarrer au démarrage :
    sudo systemctl enable grafana-server.service

Test de Grafana :

Pour tester Grafana, ouvrez votre navigateur et visitez l’adresse IP publique de votre instance EC2 suivie de :3000 (par exemple, http://your-ec2-public-ip:3000).

http://votre-ec2-public-ip:3000

http://votre-ec2-public-ip:3000

Connectez-vous avec les identifiants par défaut : Nom d’utilisateur : administrateur et Mot de passe : administrateur. Vous serez invité à définir un nouveau mot de passe.

Installation et configuration de Nginx :

  1. Installez Nginx sur votre instance EC2 :
    sudo yum install nginx -y
  2. Obtenez un certificat SSL : Utilisez Let’s Encrypt pour un certificat SSL gratuit.
  3. Configurez Nginx pour rediriger HTTP vers HTTPS et le trafic proxy vers Grafana :
    sudo nano /etc/nginx/nginx.conf

    Ajoutez le bloc serveur suivant :

    server {
        listen 80;
        server_name your-domain.com www.your-domain.com;
        return 301 https://$host$request_uri;
    }
    
    server {
        listen 443 ssl;
        server_name your-domain.com www.your-domain.com;
    
        ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
    
        location / {
            proxy_pass http://localhost:3000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
    nginx.conf

    nginx.conf

  4. Redémarrez Nginx pour appliquer les modifications :
    sudo systemctl restart nginx

Ajout d’une entrée DNS sur la Route 53

Mise en place de la Route 53 :

  1. Accédez à Route 53 dans la AWS Management Console.
  2. Créer une nouvelle zone hébergée pour votre domaine si ce n’est pas déjà fait.
  3. Ajouter un enregistrement A :
    • Choisissez votre zone hébergée et cliquez sur « Créer un enregistrement ».
    • Définissez le type d’enregistrement sur A – Adresse IPv4.
    • Saisissez votre nom de domaine et l’adresse IP publique de votre instance EC2.
    • Activez « Alias ​​» si vous utilisez un AWS Load Balancer (facultatif).
  4. Sauvegarder l’enregistrement et attendez la propagation DNS.

Création et personnalisation de tableaux de bord

Connexion de la source de données Prometheus :

  1. Ajoutez Prometheus comme source de données dans Grafana :
    • Accédez à Configuration > Sources de données > Ajouter une source de données.
    • Choisissez Prometheus et définissez l’URL sur http://localhost:9090.
    • Cliquez Enregistrer et tester pour garantir que la connexion fonctionne.
la connexion fonctionne.

la connexion fonctionne.


Création de tableaux de bord :

  1. Créez un nouveau tableau de bord :

Configuration des alertes dans Grafana :

  1. Créez une règle d’alerte :
    • Accédez à un tableau de bord dans la section Tableaux de bord.
    • Dans le coin supérieur droit du panneau, cliquez sur les trois points (ellipses).
    • Dans le menu déroulant, sélectionnez Plus… puis choisissez Nouvelle règle d’alerte.Alertes
    • Définissez les conditions (par exemple, déclencher une alerte lorsque l’utilisation du processeur dépasse 80 %).
    • Configurez l’intervalle d’évaluation (à quelle fréquence l’alerte doit être vérifiée).
  2. Configurez les notifications d’alerte :
    • Définir les points de contact : Configurez vos points de contact, qui sont des intégrations (par exemple, e-mail, Slack) pour envoyer des notifications.
    • Créez une politique de notification : Définissez une politique de notification pour définir des règles d’acheminement des alertes vers vos points de contact. Dans cette politique, décidez quand et où les alertes doivent être envoyées en fonction de leur importance ou de leurs critères.
    • Ajouter des modèles de notification (facultatif) : Utilisez des modèles pour créer des messages cohérents pour vos notifications entre différents points de contact.

Conclusion

La mise en place d’une surveillance avec Grafana et Prometheus sur une instance AWS EC2, sécurisée avec Nginx et intégrée à Route 53 pour la gestion DNS, fournit une solution évolutive et flexible pour suivre la santé et les performances de votre infrastructure. Ce guide vous a accompagné tout au long du processus de configuration, du lancement d’une instance EC2 à la configuration de Prometheus et Grafana, en passant par l’installation de Node Exporter, la configuration de Nginx pour la terminaison SSL, la configuration des alertes dans Grafana et la sécurisation de votre configuration. Avec ces outils en place, vous pouvez obtenir des informations précieuses sur les performances de votre système et être alerté de tout problème avant qu’il ne devienne critique.

VOUS TROUVEZ CECI UTILE ? PARTAGEZ-LE






Source link