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:
- Kirjaudu cPaneliin.
- Avaa Security → IP Blocker.
- Syötä estettävä IP-osoite.
- Napsauta Add.
- 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.