Comment utiliser le terminal de votre hébergement web pour analyser le trafic et l’utilisation de l’espace disque

Polar55 propose un hébergement web adapté aux développeurs. Vous avez donc naturellement accès au terminal, aussi bien via SSH que directement depuis votre cPanel.

Utiliser le terminal peut sembler un peu intimidant, et peu de personnes savent par où commencer. Avec l’IA, c’est toutefois devenu beaucoup plus simple : vous pouvez copier les commandes qu’elle vous fournit dans le terminal, puis lui transmettre le résultat. Elle peut ensuite vous proposer une nouvelle commande en fonction de ce que vous souhaitez examiner.

Dans ce guide, nous allons vous montrer quelques exemples d’utilisation du terminal. Il est toutefois important de souligner que cette approche devient vraiment efficace lorsque vous faites appel à une IA pour générer vos commandes et analyser leurs résultats.

Examiner une utilisation élevée du CPU et un éventuel trafic de bots

Votre hébergement web utilise beaucoup de CPU ou votre site est lent ? Cela peut être dû à des bots automatisés ou à de nombreuses requêtes répétées vers votre site.

Le terminal cPanel vous permet d’examiner le trafic de vos sites. Vous trouverez Terminal dans Advanced → Terminal dans cPanel. Les commandes ci-dessous sont en lecture seule et ne modifient rien sur votre compte d’hébergement.

Identifier les User-Agents les plus actifs

Un User-Agent est la chaîne d’identification qu’un navigateur ou un bot envoie avec sa requête. La commande suivante indique quels User-Agents ont effectué le plus de requêtes ayant reçu une réponse HTTP 200 au cours des 60 dernières minutes :

grep -hE "$(for i in $(seq 0 59); do LC_ALL=C date -d "$i minutes ago" '+%d/%b/%Y:%H:%M'; done | paste -sd'|' -)" \
~/access-logs/* 2>/dev/null \
| awk -F'"' '$3 ~ /^ 200 / {
    ua=$6;
    if (ua=="") ua="-";
    print ua
}' \
| sort | uniq -c | sort -nr | head -100

Exemple de résultat :

1662 Mozilla/5.0 ... Edg/156.0.0.0
 810 Mozilla/5.0 ... Chrome/156.0.0.0 Mobile
 479 WP Rocket/Preload
  96 Mozilla/5.0 ... bingbot/2.0

Le nombre à gauche indique le nombre de requêtes. Si un User-Agent se démarque nettement, vous pouvez examiner les adresses IP dont provient le trafic.

Remarque : Un grand nombre de requêtes n’est pas forcément suspect. Par exemple, WP Rocket peut générer de nombreuses requêtes lors de la création du cache. Les User-Agents peuvent également être falsifiés. La commande affiche uniquement les réponses HTTP 200, et non les réponses HTTP 403 ou 429, par exemple.

Identifier les adresses IP derrière un User-Agent précis

Copiez le User-Agent que vous souhaitez examiner et collez-le entre les guillemets après UA=. Ici, nous prenons Microsoft Edge comme exemple :

UA='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36 Edg/156.0.0.0'

grep -hE "$(for i in $(seq 0 59); do LC_ALL=C date -d "$i minutes ago" '+%d/%b/%Y:%H:%M'; done | paste -sd'|' -)" \
~/access-logs/* 2>/dev/null \
| awk -F'"' -v ua="$UA" '
    $3 ~ /^ 200 / && $6 == ua {
        split($1,a," ")
        print a[1]
    }
' \
| sort | uniq -c | sort -nr | head -20

Exemple de résultat :

865 192.0.2.10
591 198.51.100.20
  1 203.0.113.30

Vous pouvez voir ici que la majorité des requêtes proviennent de deux adresses IP.

Bloquer une adresse IP via cPanel

Si vous avez examiné le trafic et estimez qu’une adresse IP pose problème, vous pouvez la bloquer via cPanel :

  1. Connectez-vous à cPanel.
  2. Ouvrez Security → IP Blocker.
  3. Saisissez l’adresse IP que vous souhaitez bloquer.
  4. Cliquez sur Add.
  5. Répétez l’opération pour d’autres adresses IP si nécessaire.

Vous pourrez débloquer l’adresse IP au même endroit ultérieurement. Gardez à l’esprit qu’une adresse IP peut aussi appartenir à un visiteur légitime ou à une connexion Internet partagée.

Déterminer quel domaine reçoit le plus de trafic

Si vous hébergez plusieurs sites sur le même compte cPanel, vous pouvez déterminer quel domaine a reçu le plus de requêtes au cours des 60 dernières minutes. Cela peut vous aider à identifier le site à examiner de plus près lorsque l’utilisation du CPU est élevée.

python3 - <<'PY'
import glob
import json
import os
import re
import subprocess
from collections import Counter
from datetime import datetime, timedelta

now = datetime.now().astimezone()
start = now - timedelta(minutes=60)

counts = Counter()
domains = {}

# Retrouver la correspondance correcte des domaines dans cPanel
try:
    result = subprocess.run(
        ['uapi', '--output=json', 'DomainInfo', 'domains_data'],
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
        universal_newlines=True,
        timeout=15
    )

    if result.returncode == 0:
        response = json.loads(result.stdout)
        data = response.get('result', {}).get('data') or {}

        for category in ('addon_domains', 'sub_domains'):
            for item in data.get(category) or []:
                if not isinstance(item, dict):
                    continue

                internal = item.get('servername')
                public = item.get('domain')

                if internal and public:
                    domains[internal] = public

        main = data.get('main_domain') or {}
        if isinstance(main, dict):
            internal = main.get('servername')
            public = main.get('domain')

            if internal and public:
                domains[internal] = public

except (OSError, ValueError, subprocess.TimeoutExpired):
    pass

# Parcourir les journaux d’accès des 60 dernières minutes
seen = set()

for path in glob.glob(os.path.expanduser('~/access-logs/*')):
    try:
        if not os.path.isfile(path):
            continue

        stat = os.stat(path)
        identity = (stat.st_dev, stat.st_ino)

        # Éviter de lire le même fichier via plusieurs liens physiques
        if identity in seen:
            continue
        seen.add(identity)

        name = os.path.basename(path)
        name = re.sub(r'-ssl_log$', '', name)

        # Afficher le nom de domaine correct fourni par cPanel
        domain = domains.get(name, name)

        with open(path, errors='replace') as logfile:
            for line in logfile:
                match = re.search(r'\[([^\]]+)\]', line)

                if not match:
                    continue

                try:
                    timestamp = datetime.strptime(
                        match.group(1),
                        '%d/%b/%Y:%H:%M:%S %z'
                    )
                except ValueError:
                    continue

                if start <= timestamp <= now:
                    counts[domain] += 1

    except OSError:
        continue

print('REQUÊTES PAR DOMAINE – 60 DERNIÈRES MINUTES')
print()

for domain, count in counts.most_common():
    print('{:8}  {}'.format(count, domain))
PY

Exemple de résultat :

REQUÊTES PAR DOMAINE – 60 DERNIÈRES MINUTES

    4821  site-a.fr
     936  site-b.fr
     124  site-c.fr

Dans cet exemple, site-a.fr reçoit beaucoup plus de trafic que les autres sites.

Un grand nombre de requêtes ne signifie toutefois pas nécessairement une utilisation élevée du CPU. Une seule requête WordPress gourmande en ressources peut solliciter davantage le serveur que de nombreuses requêtes mises en cache. Ces chiffres constituent donc un indice, et non une mesure directe de l’utilisation du CPU.

Examiner l’utilisation de l’espace disque et trouver les fichiers les plus volumineux

Votre compte d’hébergement manque d’espace disque ? Le terminal vous permet de trouver les fichiers les plus volumineux de votre compte. C’est particulièrement utile pour repérer d’anciennes sauvegardes, de gros fichiers journaux et d’autres fichiers qui ne sont peut-être plus nécessaires.

Trouver les 20 fichiers les plus volumineux

find ~ -type f -printf '%s %p\n' 2>/dev/null \
| sort -nr | head -20 \
| awk '{printf "%.1f MB  %s\n", $1/1048576, $2}'

Exemple de résultat :

1850.4 MB  /home/user/backups/backup-old.zip
 724.2 MB  /home/user/public_html/wp-content/backup.zip
 312.8 MB  /home/user/public_html/error_log

Soyez patient : La commande peut prendre plusieurs minutes, surtout si votre compte contient de nombreux fichiers.

Cette commande permet de repérer les possibilités de libérer de l’espace sur votre hébergement. Elle ne supprime rien.

Important : Ne supprimez jamais de fichiers si vous ne savez pas à quoi ils servent. Examinez-les éventuellement dans le gestionnaire de fichiers de cPanel avant de les supprimer.

  • 0 Utilisateurs l'ont trouvée utile
Cette réponse était-elle pertinente ?

Vous n’avez pas trouvé de solution ?

Si vous n’avez pas trouvé de solution en recherchant ou en explorant nos catégories, vous pouvez ouvrir un nouveau ticket de support.

Ouvrir un nouveau ticket

Articles connexes

Je n’arrive pas à accéder à mes propres pages, mais les autres y arrivent

Si vous constatez que vous n’arrivez pas à vous connecter à cPanel chez nous ou à voir vos...

Comment héberger mon site web Lovable chez Polar55 ?

Nous avons rédigé un guide expliquant comment exporter votre site web Lovable depuis Lovable et...

Script pour nettoyer les processus Node.js qui bloquent votre hébergement web

Ce script doit être exécuté comme une tâche cron sur votre hébergement web cPanel.Ce n’est pas la...

Comment corriger les erreurs 503 sur votre site web

Une erreur 503 se produit lorsque les ressources disponibles ne suffisent pas pour exécuter un...

Comment limiter la taille de vos fichiers error_log

Chaque fois qu’une erreur PHP se produit sur votre site – qu’il s’agisse simplement d’un...