Ako používať terminál na webhostingu na analýzu návštevnosti a využitia diskového priestoru

Polar55 je webhosting priateľský k vývojárom, a preto máte samozrejme prístup aj k terminálu, a to cez SSH aj priamo cez cPanel.

Používanie terminálu môže pôsobiť trochu odstrašujúco a málokto vie, ako začať. S umelou inteligenciou je to však oveľa jednoduchšie. Stačí skopírovať príkazy, ktoré vám poskytne, do terminálu a potom jej poslať výsledok. Následne vám môže navrhnúť ďalší príkaz podľa toho, čo chcete preskúmať.

V tomto návode vám ukážeme niekoľko príkladov využitia terminálu. Je však dôležité zdôrazniť, že skutočne efektívne to bude vtedy, keď necháte umelú inteligenciu vytvárať príkazy aj analyzovať ich výsledky.

Preskúmajte vysoké využitie CPU a možnú návštevnosť od botov

Využíva váš webhosting veľa CPU alebo je váš web pomalý? Príčinou môžu byť automatizované boty alebo množstvo opakovaných požiadaviek na váš web.

Pomocou terminálu v cPaneli môžete preskúmať návštevnosť svojich webov. Terminál nájdete v cPaneli v časti Advanced → Terminal. Nasledujúce príkazy údaje iba čítajú a na vašom hostingovom účte nič nemenia.

Nájdite najaktívnejšie identifikátory User-Agent

User-Agent je identifikačný reťazec, ktorý prehliadač alebo bot odosiela spolu s požiadavkou. Nasledujúci príkaz ukáže, ktoré identifikátory User-Agent vykonali za posledných 60 minút najviac požiadaviek s odpoveďou HTTP 200:

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

Príklad výsledku:

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

Číslo vľavo udáva počet požiadaviek. Ak niektorý identifikátor User-Agent výrazne vyčnieva, môžete preskúmať, z ktorých IP adries návštevnosť pochádza.

Poznámka: Veľa požiadaviek nemusí byť nevyhnutne podozrivých. Napríklad WP Rocket môže pri vytváraní vyrovnávacej pamäte generovať veľa požiadaviek. Identifikátory User-Agent sa navyše dajú sfalšovať. Príkaz zobrazuje iba odpovede HTTP 200, nie napríklad HTTP 403 alebo 429.

Nájdite IP adresy konkrétneho identifikátora User-Agent

Skopírujte identifikátor User-Agent, ktorý chcete preskúmať, a vložte ho medzi úvodzovky za UA=. V tomto príklade používame Microsoft Edge:

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

Príklad výsledku:

865 192.0.2.10
591 198.51.100.20
  1 203.0.113.30

Tu vidíte, že väčšina požiadaviek pochádza z dvoch IP adries.

Zablokujte IP adresu cez cPanel

Ak ste preskúmali návštevnosť a usúdili ste, že niektorá IP adresa spôsobuje problémy, môžete ju zablokovať cez cPanel:

  1. Prihláste sa do cPanelu.
  2. Otvorte Security → IP Blocker.
  3. Zadajte IP adresu, ktorú chcete zablokovať.
  4. Kliknite na Add.
  5. V prípade potreby postup zopakujte pre ďalšie IP adresy.

Blokovanie môžete neskôr zrušiť na rovnakom mieste. Pamätajte, že IP adresa môže patriť aj legitímnemu návštevníkovi alebo zdieľanému internetovému pripojeniu.

Zistite, ktorá doména má najväčšiu návštevnosť

Ak máte na rovnakom účte cPanel viacero webov, môžete zistiť, ktorá doména dostala za posledných 60 minút najviac požiadaviek. To vám pri vysokom zaťažení CPU pomôže určiť web, ktorý treba preskúmať podrobnejšie.

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 = {}

# Získanie správneho mapovania domén z cPanelu
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

# Prehľadanie prístupových protokolov za posledných 60 minút
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)

        # Zabránenie opakovanému čítaniu súboru cez viacero pevných odkazov
        if identity in seen:
            continue
        seen.add(identity)

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

        # Zobrazenie správneho názvu domény z cPanelu
        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('POŽIADAVKY PODĽA DOMÉNY – POSLEDNÝCH 60 MINÚT')
print()

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

Príklad výsledku:

POŽIADAVKY PODĽA DOMÉNY – POSLEDNÝCH 60 MINÚT

    4821  web-a.sk
     936  web-b.sk
     124  web-c.sk

V tomto príklade má web-a.sk výrazne väčšiu návštevnosť než ostatné weby.

Veľa požiadaviek však nemusí znamenať vysoké využitie CPU. Jedna náročná požiadavka vo WordPresse môže server zaťažiť viac než množstvo požiadaviek obslúžených z vyrovnávacej pamäte. Tieto čísla sú preto orientačné a nejde o priame meranie využitia CPU.

Preskúmajte využitie diskového priestoru a nájdite najväčšie súbory

Dochádza vám na webhostingu miesto na disku? Pomocou terminálu môžete nájsť najväčšie súbory vo svojom účte. Je to užitočné najmä pri hľadaní starých záloh, veľkých protokolových súborov a ďalších súborov, ktoré už možno nepotrebujete.

Nájdite 20 najväčších súborov

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

Príklad výsledku:

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

Buďte trpezliví: Dokončenie príkazu môže trvať niekoľko minút, najmä ak váš účet obsahuje veľa súborov.

Tento príkaz je užitočný pri hľadaní možností, ako uvoľniť miesto na webhostingu. Nič neodstraňuje.

Dôležité: Nikdy neodstraňujte súbory, ak neviete, na čo slúžia. Pred odstránením si ich prípadne prezrite v správcovi súborov cPanelu.

  • 0 používateľov označilo ako užitočné
Pomohla vám táto odpoveď?

Nenašli ste riešenie?

Ak ste nenašli riešenie hľadaním alebo prehliadaním našich kategórií, môžete otvoriť nový ticket.

Otvoriť nový ticket

Súvisiace články

Nemôžem sa dostať na svoju stránku, ale ostatní áno

Ak zistíte, že sa nemôžete prihlásiť do cPanelu alebo zobraziť vlastné stránky, zatiaľ čo ostatní...

Ako môžem hostovať svoju Lovable webovú stránku u Polar55?

Napísali sme návod, ako môžete exportovať svoju Lovable webovú stránku z Lovable a nahrať ju k...

Script na vyčistenie Node.js procesov, ktoré blokujú váš webhosting

Tento skript by mal bežať ako cron úloha na vašom cPanel webhostingu.Toto nie je dokonalé...

Ako opraviť chyby 503 na vašej webstránke

Chyba 503 sa objaví vtedy, keď nie je dostatok systémových zdrojov na vykonanie skriptu, čo...

Ako obmedziť veľkosť vašich súborov error_log

Zakaždým, keď sa na vašej stránke vyskytne PHP chyba – či už ide len o upozornenie alebo skutočnú...