Näin käytät webhotellisi terminaalia liikenteen ja levytilan käytön analysointiin

Polar55 on kehittäjäystävällinen webhotelli, joten käytössäsi on luonnollisesti myös terminaali sekä SSH:n kautta että suoraan cPanelissa.

Terminaalin käyttö voi tuntua hieman pelottavalta, ja harva tietää, mistä aloittaa. Tekoäly on kuitenkin tehnyt siitä paljon helpompaa: voit kopioida sen antamat komennot terminaaliin ja antaa sitten tulokset takaisin tekoälylle. Se voi tämän jälkeen ehdottaa seuraavaa komentoa sen mukaan, mitä haluat tutkia.

Tässä oppaassa näytämme muutamia esimerkkejä siitä, mihin terminaalia voi käyttää. On kuitenkin tärkeää korostaa, että sen käytöstä tulee todella tehokasta, kun hyödynnät tekoälyä sekä komentojen laatimiseen että niiden tulosten analysointiin.

Tutki suurta suorittimen käyttöä ja mahdollista bottiliikennettä

Käyttääkö webhotellisi paljon suoritinresursseja tai onko verkkosivustosi hidas? Syynä voivat olla automaattiset botit tai suuri määrä toistuvia pyyntöjä verkkosivustollesi.

cPanelin terminaalilla voit tutkia verkkosivustojesi liikennettä. Löydät terminaalin cPanelista kohdasta Advanced → Terminal. Alla olevat komennot vain lukevat tietoja eivätkä muuta mitään webhotellitililläsi.

Selvitä aktiivisimmat User-Agent-tunnisteet

User-Agent on tunnistetieto, jonka selain tai botti lähettää pyyntönsä mukana. Seuraava komento näyttää, mitkä User-Agent-tunnisteet ovat tehneet eniten HTTP 200 -vastauksen saaneita pyyntöjä viimeisten 60 minuutin aikana:

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

Esimerkkitulos:

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

Vasemmalla oleva luku kertoo pyyntöjen määrän. Jos jokin User-Agent erottuu selvästi muista, voit tutkia, mistä IP-osoitteista liikenne tulee.

Huomaa: Suuri pyyntömäärä ei välttämättä ole epäilyttävä. Esimerkiksi WP Rocket voi tehdä paljon pyyntöjä välimuistia rakentaessaan. User-Agent-tunnisteita voidaan myös väärentää. Komento näyttää vain HTTP 200 -vastaukset, ei esimerkiksi HTTP 403- tai 429-vastauksia.

Selvitä tietyn User-Agent-tunnisteen takana olevat IP-osoitteet

Kopioi tutkittava User-Agent-tunniste ja liitä se lainausmerkkien väliin kohdan UA= jälkeen. Tässä käytämme esimerkkinä 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

Esimerkkitulos:

865 192.0.2.10
591 198.51.100.20
  1 203.0.113.30

Tästä näet, että suurin osa pyynnöistä tulee kahdesta IP-osoitteesta.

Estä IP-osoite cPanelin kautta

Jos olet tutkinut liikennettä ja arvioit, että jokin IP-osoite aiheuttaa ongelmia, voit estää sen cPanelin kautta:

  1. Kirjaudu cPaneliin.
  2. Avaa Security → IP Blocker.
  3. Syötä estettävä IP-osoite.
  4. Napsauta Add.
  5. Toista tarvittaessa muille IP-osoitteille.

Voit poistaa eston myöhemmin samassa paikassa. Muista, että IP-osoite voi kuulua myös oikealle kävijälle tai jaetulle internetyhteydelle.

Selvitä, mikä verkkotunnus saa eniten liikennettä

Jos samalla cPanel-tilillä on useita verkkosivustoja, voit selvittää, mikä verkkotunnus on saanut eniten pyyntöjä viimeisten 60 minuutin aikana. Tämä voi auttaa löytämään sivuston, jota kannattaa tutkia tarkemmin suorittimen käytön ollessa suurta.

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

# Hae oikeat verkkotunnusten vastaavuudet cPanelista
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

# Käy läpi viimeisten 60 minuutin käyttölokit
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)

        # Vältä saman tiedoston lukemista useiden kovien linkkien kautta
        if identity in seen:
            continue
        seen.add(identity)

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

        # Näytä oikea verkkotunnus cPanelin tietojen perusteella
        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('PYYNNÖT VERKKOTUNNUKSITTAIN – VIIMEISET 60 MINUUTTIA')
print()

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

Esimerkkitulos:

PYYNNÖT VERKKOTUNNUKSITTAIN – VIIMEISET 60 MINUUTTIA

    4821  verkkosivusto-a.fi
     936  verkkosivusto-b.fi
     124  verkkosivusto-c.fi

Tässä esimerkissä verkkosivusto-a.fi saa selvästi enemmän liikennettä kuin muut sivustot.

Suuri pyyntömäärä ei kuitenkaan välttämättä tarkoita suurta suorittimen käyttöä. Yksi raskas WordPress-pyyntö voi kuormittaa palvelinta enemmän kuin monet välimuistista palveltavat pyynnöt. Luvut ovat siis suuntaa antavia, eivät suora mittaus suorittimen käytöstä.

Tutki levytilan käyttöä ja etsi suurimmat tiedostot

Onko webhotellisi levytila loppumassa? Terminaalilla voit etsiä tilisi suurimmat tiedostot. Tämä on erityisen hyödyllistä, kun haluat löytää vanhoja varmuuskopioita, suuria lokitiedostoja ja muita tiedostoja, joita ei ehkä enää tarvita.

Etsi 20 suurinta tiedostoa

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

Esimerkkitulos:

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

Ole kärsivällinen: Komennon suorittaminen voi kestää useita minuutteja, etenkin jos tililläsi on paljon tiedostoja.

Komento auttaa löytämään mahdollisuuksia vapauttaa tilaa webhotellistasi. Se ei poista mitään.

Tärkeää: Älä koskaan poista tiedostoja, joiden käyttötarkoitusta et tiedä. Voit tarkistaa ne ensin cPanelin tiedostonhallinnassa ennen poistamista.

  • 0 Käyttäjät pitivät tätä hyödyllisenä
Oliko tämä vastaus hyödyllinen?

Etkö löytänyt ratkaisua?

Jos et ole löytänyt ratkaisua hakemalla tai selaamalla kategorioitamme, voit avata uuden tukipyynnön.

Avaa uusi pyyntö

Liittyvät artikkelit

En pääse omille sivuilleni, mutta muut pääsevät

Jos et pysty kirjautumaan cPaneliin tai tarkastelemaan omia sivujasi, mutta muut pystyvät, syynä...

Kuinka hostaan Lovable-verkkosivustoni Polar55:llä?

Olemme kirjoittaneet oppaan siitä, kuinka voit viedä Lovable-verkkosivustosi Lovablesta ja ladata...

Skripti Node.js-prosessien siivoamiseen, jotka lukitsevat webhotellisi

Tämä skripti tulee ajaa cron-työnä cPanel-webhotellissasi.Tämä ei ole täydellinen ratkaisu (koska...

503-virheiden korjaaminen verkkosivustolla

503-virhe ilmenee, kun skriptin suorittamiseen ei ole riittävästi resursseja ja palvelin...

Näin rajoitat error_log-tiedostojesi kokoa

Aina kun PHP-virhe ilmenee sivullasi – olipa kyse vain varoituksesta tai varsinaisesta virheestä...