Prometheus est un système de surveillance et d'alerte open-source qui permet de collecter et de surveiller les métriques en temps réel. Il est largement utilisé pour la surveillance des performances des applications, des infrastructures et des services. Prometheus est particulièrement utile pour les équipes de développement et d'opérations qui souhaitent surveiller et analyser les métriques de leurs environnements.

Présentation de Prometheus

Qu'est-ce que Prometheus ?

Prometheus est un système de surveillance et d'alerte qui vous permet de :

  • Collecter des métriques : Recueillir des données de performance et de diagnostic à partir de vos ressources.
  • Stocker des métriques : Stocker les métriques dans une base de données de séries temporelles.
  • Analyser les métriques : Utiliser des requêtes pour analyser les métriques.
  • Générer des alertes : Configurer des alertes basées sur des conditions spécifiques.
  • Intégrer avec d'autres outils : Intégrer avec des outils de visualisation comme Grafana pour créer des tableaux de bord interactifs.

Installation de Prometheus

Pour installer Prometheus, vous pouvez télécharger les binaires depuis le site officiel de Prometheus.

Télécharger et Installer Prometheus

  • Télécharger Prometheus :

wget https://github.com/prometheus/prometheus/releases/download/v2.30.0/prometheus-2.30.0.linux-amd64.tar.gz

  • Décompresser l'archive :

tar -xvf prometheus-2.30.0.linux-amd64.tar.gz

  • Déplacer les binaires Prometheus dans un répertoire accessible :

sudo mv prometheus-2.30.0.linux-amd64/prometheus /usr/local/bin/
sudo mv prometheus-2.30.0.linux-amd64/promtool /usr/local/bin/

  • Créer un répertoire pour les données Prometheus :

sudo mkdir /var/lib/prometheus

  • Créer un fichier de configuration Prometheus :

sudo nano /etc/prometheus/prometheus.yml

Ajoutez la configuration suivante dans le fichier prometheus.yml :

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

 

  • Créer un service systemd pour Prometheus :

sudo nano /etc/systemd/system/prometheus.service

Ajoutez la configuration suivante dans le fichier prometheus.service :

[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

 

  • Créer un utilisateur et un groupe pour Prometheus :

sudo useradd --no-create-home --shell /bin/false prometheus
sudo mkdir /etc/prometheus
sudo chown prometheus:prometheus /etc/prometheus

  • Démarrer et activer le service Prometheus :

sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus

Exemples de Ligne de Commande

Voici quelques exemples de commandes avancées pour utiliser Prometheus.

Démarrer Prometheus

Pour démarrer Prometheus :

sudo systemctl start prometheus

Arrêter Prometheus

Pour arrêter Prometheus :

sudo systemctl stop prometheus

Redémarrer Prometheus

Pour redémarrer Prometheus :

sudo systemctl restart prometheus

Vérifier le Statut de Prometheus

Pour vérifier le statut de Prometheus :

sudo systemctl status prometheus

Accéder à l'Interface Web de Prometheus

Pour accéder à l'interface web de Prometheus, ouvrez un navigateur web et accédez à http://localhost:9090.

Configurer une Alerte

Pour configurer une alerte, vous pouvez ajouter une section alerting dans votre fichier de configuration prometheus.yml :

alerting:
  alertmanagers:
    - static_configs:
        - targets: ['localhost:9093']

rule_files:
  - "alerts.yml"

 

Ensuite, créez un fichier alerts.yml avec les règles d'alerte :

groups:
  - name: example
    rules:
      - alert: InstanceDown
        expr: up == 0
        for: 5m
        labels:
          severity: page
        annotations:
          summary: "Instance {{ $labels.instance }} down"
          description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 5 minutes."

 

Intégrer Prometheus avec Grafana

Pour intégrer Prometheus avec Grafana, suivez les étapes suivantes :

  • Accédez à l'interface web de Grafana.
  • Allez dans "Configuration" > "Data Sources".
  • Cliquez sur "Add data source".
  • Sélectionnez "Prometheus" et configurez les paramètres de connexion.

Intégrer Prometheus dans un Pipeline CI/CD

Pour intégrer Prometheus dans un pipeline CI/CD, vous pouvez ajouter une étape de surveillance et d'alerte dans votre fichier de configuration CI/CD. Par exemple, pour GitHub Actions, vous pouvez ajouter une étape comme suit :

name: Prometheus Monitoring

on: [push, pull_request]

jobs:
  prometheus:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Set up Prometheus
      run: |
        wget https://github.com/prometheus/prometheus/releases/download/v2.30.0/prometheus-2.30.0.linux-amd64.tar.gz
        tar -xvf prometheus-2.30.0.linux-amd64.tar.gz
        sudo mv prometheus-2.30.0.linux-amd64/prometheus /usr/local/bin/
        sudo mv prometheus-2.30.0.linux-amd64/promtool /usr/local/bin/
        sudo mkdir /var/lib/prometheus
        sudo nano /etc/prometheus/prometheus.yml
        sudo nano /etc/systemd/system/prometheus.service
        sudo useradd --no-create-home --shell /bin/false prometheus
        sudo mkdir /etc/prometheus
        sudo chown prometheus:prometheus /etc/prometheus
        sudo systemctl daemon-reload
        sudo systemctl start prometheus
        sudo systemctl enable prometheus

 

Conclusion

Prometheus est un outil puissant pour la surveillance et l'analyse des métriques en temps réel. En utilisant Prometheus, vous pouvez collecter, stocker, analyser et générer des alertes basées sur les métriques de vos environnements. Ces exemples de commandes et de configurations vous donnent un bon point de départ pour commencer à utiliser Prometheus.


Mise en garde concernant l'utilisation des outils de cybersécurité

L'utilisation des outils de cybersécurité présentés sur ce site est soumise à des considérations légales et éthiques importantes. Avant d'utiliser ces outils, nous vous encourageons à prendre en compte les points suivants :

- Cadre légal : L'utilisation de certains outils de cybersécurité peut être réglementée par la loi dans votre pays ou région. Il est de votre responsabilité de vous informer sur les lois en vigueur concernant la cybersécurité, la protection des données et la vie privée. L'utilisation non autorisée de ces outils peut entraîner des poursuites judiciaires et des sanctions pénales.

- Consentement : Assurez-vous d'obtenir le consentement explicite des parties concernées avant d'utiliser des outils qui pourraient intercepter, surveiller ou analyser des données. Le respect de la vie privée des individus est primordial.

- Utilisation éthique : Les outils de cybersécurité doivent être utilisés de manière éthique et responsable. Ils ne doivent pas être employés à des fins malveillantes, telles que le piratage, le vol de données ou toute autre activité illégale.

- Responsabilité : En utilisant ces outils, vous reconnaissez que vous le faites à vos propres risques. Nous ne saurions être tenus responsables des conséquences résultant de l'utilisation de ces outils, y compris, mais sans s'y limiter, les dommages matériels, les pertes de données ou les poursuites judiciaires.

- Formation et expertise : Il est recommandé de suivre une formation adéquate et de posséder les compétences nécessaires avant d'utiliser des outils de cybersécurité. Une mauvaise utilisation peut entraîner des résultats indésirables et des risques pour la sécurité.

En utilisant ce site et les outils qui y sont présentés, vous acceptez de respecter ces conditions et de vous conformer à toutes les lois applicables.

Formateur

Bertrand LECLERCQ

Consultant DevSecOps & Data Engineer


Avec 25 ans d'expérience dans le développement logiciel et une certification en Data Engineering de l'École des Mines Paris - PSL, je suis passionné par la cybersécurité, le big data et le DevOps. J'aime partager mes connaissances et aider la communauté à renforcer sa posture de sécurité.

J'ai créé une base de vulnérabilités librement accessible et je me forme en continu sur des plateformes comme TryHackMe. Mon objectif ? Démocratiser la cybersécurité et permettre à chacun de mieux comprendre les enjeux.

J'ai une solide expertise dans la conception et le déploiement de solutions sécurisées, ainsi qu'une expérience éprouvée dans la gestion de projets complexes. Maîtrisant un large éventail de technologies (Python, Go, Java, Docker, Kubernetes, etc.), je suis convaincu que la sécurité doit être intégrée dès le début du cycle de développement.

Le projet NoHackMe vous permet d'effectuer une veille Cyber, vous permet de découvrir le monde de la Cybersécurité ainsi qu'une section formation Cyber

Soutenez No Hack Me sur Tipeee