วิเคราะห์ Log เซิร์ฟเวอร์เพื่อดูพฤติกรรม Googlebot
Search Console บอกผลลัพธ์ แต่ Log ของเซิร์ฟเวอร์บอกสิ่งที่เกิดขึ้นจริงทุกคำขอ นี่คือแหล่งข้อมูลเดียวที่บอกได้ว่า Googlebot เข้ามาที่ไหน เมื่อไร ได้รับคำตอบอะไร และใช้เวลาเท่าไร
สำหรับเว็บขนาดใหญ่ การวิเคราะห์ Log คือวิธีเดียวที่จะรู้ว่างบการเก็บข้อมูลถูกใช้ไปกับหน้าที่สร้างรายได้ หรือถูกผลาญไปกับหน้ากรองสินค้าที่มีนับหมื่นแบบ
สิ่งที่ต้องเตรียม
- สิทธิ์เข้าถึง Log ของเว็บเซิร์ฟเวอร์
- Log ย้อนหลังอย่างน้อย 7 วัน ยิ่งมากยิ่งดี
ls -lh /var/log/nginx/access.log*
sudo wc -l /var/log/nginx/access.log
ขั้นตอนที่ 1: หาคำขอของ Googlebot
sudo grep -i 'googlebot' /var/log/nginx/access.log | wc -l
# ดูตัวอย่าง
sudo grep -i 'googlebot' /var/log/nginx/access.log | head -3
รูปแบบมาตรฐานของ Nginx คือ IP, เวลา, คำขอ, รหัสตอบกลับ, ขนาด, ผู้อ้างอิง, และ User-Agent
ขั้นตอนที่ 2: ตรวจว่าเป็น Googlebot จริง
ใครก็ปลอม User-Agent เป็น Googlebot ได้ วิธีตรวจที่ถูกต้องคือ Reverse DNS แล้ว Forward DNS กลับ
#!/bin/bash
# ตรวจ IP ที่อ้างว่าเป็น Googlebot
sudo grep -i 'googlebot' /var/log/nginx/access.log \
| awk '{print $1}' | sort -u | head -20 \
| while read -r ip; do
host=$(dig +short -x "$ip" | sed 's/\.$//')
if [[ "$host" =~ \.(googlebot|google)\.com$ ]]; then
back=$(dig +short "$host")
if [ "$back" = "$ip" ]; then
echo "จริง $ip ($host)"
else
echo "ปลอม $ip (forward ไม่ตรง)"
fi
else
echo "ปลอม $ip ($host)"
fi
done
บอตปลอมที่แอบอ้างมักเป็นเครื่องมือขูดข้อมูล ควรบล็อกเพราะกินทรัพยากรโดยไม่ให้ประโยชน์
ขั้นตอนที่ 3: ดูว่า Googlebot เข้าหน้าไหนบ่อยที่สุด
sudo grep -i 'googlebot' /var/log/nginx/access.log \
| awk '{print $7}' \
| sed 's/?.*//' \
| sort | uniq -c | sort -rn | head -30
นี่คือรายงานที่สำคัญที่สุด ถามตัวเองสองข้อ
- หน้าที่สำคัญที่สุดของธุรกิจอยู่ในรายการต้น ๆ หรือไม่
- มีหน้าที่ไม่ควรถูกเก็บข้อมูลติดอันดับสูงหรือไม่ เช่น หน้าผลค้นหาภายใน หน้ากรองสินค้า หน้าปฏิทิน
ดูเฉพาะ URL ที่มีพารามิเตอร์ ซึ่งมักเป็นตัวผลาญงบประมาณ
sudo grep -i 'googlebot' /var/log/nginx/access.log \
| awk '{print $7}' | grep '?' \
| sed 's/=[^&]*/=X/g' \
| sort | uniq -c | sort -rn | head -20
คำสั่งนี้แทนค่าพารามิเตอร์ด้วย X เพื่อจัดกลุ่มรูปแบบที่เหมือนกัน หากเห็นรูปแบบใดมีจำนวนมหาศาล นั่นคือจุดที่ต้องจัดการ
ขั้นตอนที่ 4: ดูรหัสตอบกลับที่ Googlebot ได้รับ
sudo grep -i 'googlebot' /var/log/nginx/access.log \
| awk '{print $9}' | sort | uniq -c | sort -rn
สัดส่วนที่ดีคือ 200 เป็นส่วนใหญ่ 301 บ้าง และ 404 น้อยมาก
หาหน้าที่ตอบ 404 ให้ Googlebot
sudo grep -i 'googlebot' /var/log/nginx/access.log \
| awk '$9 == 404 {print $7}' \
| sort | uniq -c | sort -rn | head -20
หาหน้าที่ตอบ 5xx ซึ่งร้ายแรงที่สุด เพราะทำให้ Google ลดความถี่ในการเก็บข้อมูลทั้งเว็บ
sudo grep -i 'googlebot' /var/log/nginx/access.log \
| awk '$9 ~ /^5/ {print $9, $7}' | sort | uniq -c | sort -rn
ขั้นตอนที่ 5: ดูแนวโน้มตามเวลา
# จำนวนคำขอของ Googlebot ต่อวัน
sudo zgrep -h -i 'googlebot' /var/log/nginx/access.log* \
| awk -F'[][]' '{print $2}' | cut -d: -f1 \
| sort | uniq -c
การลดลงอย่างฉับพลันมักหมายถึงปัญหา เช่น เซิร์ฟเวอร์ตอบช้าลง มีข้อผิดพลาดจำนวนมาก หรือ robots.txt ถูกแก้โดยไม่ตั้งใจ
# ดูว่า Googlebot เข้ามาดู robots.txt เมื่อไรและได้อะไร
sudo grep 'robots.txt' /var/log/nginx/access.log | tail -10
ขั้นตอนที่ 6: วัดเวลาตอบสนองที่ Googlebot เจอ
ต้องเพิ่มเวลาตอบสนองเข้าไปในรูปแบบ Log ก่อน
sudo nano /etc/nginx/nginx.conf
log_format seo '$remote_addr - [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" rt=$request_time uct=$upstream_connect_time '
'urt=$upstream_response_time';
access_log /var/log/nginx/access.log seo;
sudo nginx -t && sudo systemctl reload nginx
จากนั้นวิเคราะห์
sudo grep -i 'googlebot' /var/log/nginx/access.log \
| grep -oP 'rt=\K[0-9.]+' \
| awk '{s+=$1; n++; if($1>max) max=$1} END {printf "เฉลี่ย %.3f วินาที สูงสุด %.3f จาก %d คำขอ\n", s/n, max, n}'
เกณฑ์ที่ควรรักษาคือเวลาตอบสนองเฉลี่ยต่ำกว่า 500 มิลลิวินาที หากสูงกว่านั้น Google จะลดความถี่การเก็บข้อมูลลงเพื่อไม่ให้เซิร์ฟเวอร์รับภาระหนักเกินไป
ขั้นตอนที่ 7: เทียบกับ Sitemap
หา URL ที่อยู่ใน Sitemap แต่ Googlebot ไม่เคยเข้าเลย
# ดึง URL จาก sitemap
curl -s https://example.com/sitemap.xml | grep -oP '(?<=<loc>)[^<]+' \
| sed 's|https://example.com||' | sort -u > /tmp/sitemap-urls.txt
# ดึง URL ที่ Googlebot เคยเข้า
sudo zgrep -h -i 'googlebot' /var/log/nginx/access.log* \
| awk '{print $7}' | sed 's/?.*//' | sort -u > /tmp/crawled-urls.txt
# หาที่อยู่ใน sitemap แต่ไม่เคยถูกเก็บข้อมูล
comm -23 /tmp/sitemap-urls.txt /tmp/crawled-urls.txt | head -30
URL เหล่านี้คือที่ควรเพิ่มลิงก์ภายในให้เข้าถึงง่ายขึ้น
และในทางกลับกัน หา URL ที่ถูกเก็บข้อมูลแต่ไม่อยู่ใน Sitemap
comm -13 /tmp/sitemap-urls.txt /tmp/crawled-urls.txt | head -30
หากมีจำนวนมาก แปลว่ามี URL ที่ไม่ควรมีอยู่ถูกสร้างขึ้น ควรตรวจสอบและจัดการ
ขั้นตอนที่ 8: ลงมือแก้ตามที่พบ
บล็อก URL ที่ผลาญงบประมาณ
User-agent: *
Disallow: /*?orderby=
Disallow: /*?filter_
Disallow: /*?s=
Disallow: /search/
Disallow: /*?add-to-cart=
บล็อกบอตปลอมที่ระบุได้
map $http_user_agent $bad_bot {
default 0;
~*(AhrefsBot|SemrushBot|MJ12bot|DotBot) 1;
}
server {
if ($bad_bot) { return 403; }
}
พิจารณาให้ดีก่อนบล็อกบอตของเครื่องมือ SEO เพราะทีมของคุณเองอาจใช้เครื่องมือนั้นอยู่
ปัญหาที่พบบ่อย
ไม่เห็น Googlebot ใน Log เลย
หากเว็บอยู่หลัง Cloudflare หรือ CDN คำขอของ Googlebot อาจถูกตอบจากแคชโดยไม่ถึงเซิร์ฟเวอร์ ให้ดู Log ที่ฝั่ง CDN แทน หรือตั้งให้ไม่แคชคำขอจากบอต
IP ทุกรายการเป็น IP เดียวกัน
เว็บอยู่หลัง Proxy ตั้งให้บันทึก IP จริงด้วย $http_x_forwarded_for และตั้ง set_real_ip_from ให้ถูกต้อง
Log ใหญ่จนวิเคราะห์ไม่ไหว
แยก Log ของบอตออกมาต่างหากตั้งแต่ต้น
map $http_user_agent $is_bot {
default 0;
~*(googlebot|bingbot) 1;
}
access_log /var/log/nginx/bots.log seo if=$is_bot;
ต้องการวิเคราะห์แบบต่อเนื่อง
ส่ง Log เข้าระบบรวม Log ตามคู่มือเรื่อง rsyslog แล้วสร้าง Dashboard ใน Grafana เพื่อดูแนวโน้มโดยไม่ต้องรันคำสั่งทุกครั้ง
ต้องการให้ทีมวิศวกรช่วยวิเคราะห์การเก็บข้อมูลของเว็บ ติดต่อ THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/
- Categories:
- Cloud
- Tags:
- Cloud
- Cloud Server
Related Posts
หมวดหมู่ที่น่าสนใจ
- Account Settings
- AD Server
- AI
- Alibaba Cloud
- Anti-Spam Gateway
- AWS Amazon Web Services
- Campaign
- CentOS/AlmaLinux
- Cloud
- Cloud Backup
- Cloud Communication
- Cloud Migration
- Cloud Security
- Cloud Server Management
- Cloud Solution
- Cloud Solution for Government
- Cloud Solutions by Industry
- Cloud Storage
- Cloud VPS App Plus +
- Cloud VPS DirectAdmin
- Cloud VPS Plesk
- CSR
- Cyber Security
- Cybersecurity
- Data Sovereignty
- Database Server
- DDoS
- Digital Tranformation
- Digital Transformation
- Direct Mail
- Directadmin
- Domainname
- Ecommerce
- ERP
- Generative AI
- Getting Started
- Google Cloud
- Google G Suite
- Huawei Cloud
- IT News
- Linux Server
- Managed Cloud Services
- Managed Service Provider
- Manual
- Microsoft
- Microsoft 365
- Microsoft Azure
- News
- On-premise
- Private Mail Server
- Promotion
- Recommend Solution (Enterprise)
- Server
- Sovereign Cloud
- THAI DATA CLOUD Platform
- Ubuntu
- Ubuntu
- Uncategorized
- VMware
- VPS Server
- Web Design
- Web Hosting
- Web Hosting (DirectAdmin)
- Web Hosting (Plesk)
- Web Technologies
- Windows Server
- Wordpress
- Zimbra
- เรื่องราวความประทับใจ
- โซลูชันสำหรับธุรกิจการผลิตและยานยนต์
- โซลูชันสำหรับธุรกิจการศึกษา
- โซลูชันสำหรับธุรกิจการเงิน
- โซลูชันสำหรับธุรกิจขนส่งและกระจายสินค้า
- โซลูชันสำหรับธุรกิจค้าปลีก
- โซลูชันสำหรับธุรกิจท่องเที่ยว
- โซลูชันสำหรับธุรกิจบริการสุขภาพและโรงพยาบาล
- โซลูชันสำหรับธุรกิจประกันภัย
- โซลูชันสำหรับธุรกิจพลังงานและสาธารณูปโภค
- โซลูชันสำหรับธุรกิจสื่อสารมวลชนและเอ็นเตอร์เทนเมนท์
- โซลูชันสำหรับธุรกิจอสังหาริมทรัพย์
- โซลูชันสำหรับธุรกิจเทคโนโลยี








