Apa itu squid? Untuk lebih tepat saya rujuk sahaja kepada maklumat dari laman sesawangnya.
ACCESS.LOG
Ianya merupakan satu fail (log) yang mempunyai maklumat berkaitan dengan transaksi laman web yang dilayari seperti waktu, ip, url, jenis fail dll. Maklumat-maklumat ini memberi kemudahan segera kepada system administrator dalam membuat pemantauan dan mengenal pasti masalah yang berlaku.
Perincian data dari log ini juga boleh didapati juga melalui pelbagai jenis aplikasi dari sumber terbuka ataupun komersil.
Contoh log
Walaupun tidak menggunakan sebarang aplikasi tertentu, kita juga boleh mengambil dan memanipulasi data yang ada dari log ini untuk tujuan tertentu, bergantung kepada maklumat apa yang kita kehendaki.
Di bawah adalah beberapa contoh maklumat yang boleh diisihkan dari log asal dengan hanya menggunakan arahan langsung dari CLI.
TUKAR TARIKH & PANTAU AKTIVITI SEMASA
What is Squid?
Squid is a fully-featured HTTP/1.0 proxy which is almost (but not quite - we're getting there!) HTTP/1.1 compliant. Squid offers a rich access control, authorization and logging environment to develop web proxy and content serving applications.
ACCESS.LOG
Ianya merupakan satu fail (log) yang mempunyai maklumat berkaitan dengan transaksi laman web yang dilayari seperti waktu, ip, url, jenis fail dll. Maklumat-maklumat ini memberi kemudahan segera kepada system administrator dalam membuat pemantauan dan mengenal pasti masalah yang berlaku.
Perincian data dari log ini juga boleh didapati juga melalui pelbagai jenis aplikasi dari sumber terbuka ataupun komersil.
Contoh log
1342580482.700 6 10.1.1.1 TCP_MISS/304 317 GET http://www.jnj.com/wps/wcm/connect/2d8cac004f5558a1a69fa61bb31559c7/RSS.js? - DIRECT/202.187.31.12 unknown/unknown 1342580482.702 7 10.1.1.1 TCP_MISS/304 317 GET http://www.jnj.com/wps/wcm/connect/c4954a804f555919a862ac1bb31559c7/textReSizeGraphic.js? - DIRECT/202.187.31.42 unknown/unknown 1342580482.712 7 10.1.1.1 TCP_MISS/304 317 GET http://www.jnj.com/wps/wcm/connect/fb6b60804f555919a865ac1bb31559c7/textReSizeTextOnly.js? - DIRECT/202.187.31.12 unknown/unknown
Walaupun tidak menggunakan sebarang aplikasi tertentu, kita juga boleh mengambil dan memanipulasi data yang ada dari log ini untuk tujuan tertentu, bergantung kepada maklumat apa yang kita kehendaki.
Di bawah adalah beberapa contoh maklumat yang boleh diisihkan dari log asal dengan hanya menggunakan arahan langsung dari CLI.
TUKAR TARIKH & PANTAU AKTIVITI SEMASA
# awk '{ print strftime("%c"), $1 = "", $0}' /var/log/squid/access.log
# tail -f /var/log/squid/access.log|awk '{ print strftime("%c"), $1 = "", $0}'
# cat > /usr/local/bin/chg.sh
#!/bin/sh
awk '{ print strftime("%c"), $1 = "", $0}'
# chmod +x /usr/local/bin/chg.sh
# tail -f /var/log/squid/access.log|chg.sh
# tail -f /var/log/squid/access.log|awk '{ print strftime("%c"), $1 = "", $0}'
Contoh hasil:
Fri Jul 26 15:19:21 2013 982 10.10.1.66 TCP_MISS/200 3815 GET http://resources.crossrider.com/apps/26766/resources/meta/1? - DIRECT/127.0.0.1 text/html Fri Jul 26 15:19:21 2013 69 10.10.1.66 TCP_MISS/200 3792 GET http://discountbu-a.akamaihd.net/loaders/cid? - DIRECT/127.0.0.1 text/html Fri Jul 26 15:19:21 2013 114 10.10.1.66 TCP_MISS/200 3794 GET http://contentcache-a.akamaihd.net/loaders/cid? - DIRECT/127.0.0.1 text/html Fri Jul 26 15:19:21 2013 392 10.10.1.12 TCP_MISS/200 6414 GET http://www.guablog.com/thumbs/thumb-47594-140.jpg - DIRECT/205.251.137.10 image/jpeg
** Arahan di atas boleh diringkaskan dengan penggunaan skrip.
# cat > /usr/local/bin/chg.sh
#!/bin/sh
awk '{ print strftime("%c"), $1 = "", $0}'
Tekan CTRL+ D untuk simpan fail.
# chmod +x /usr/local/bin/chg.sh
# tail -f /var/log/squid/access.log|chg.sh
Selain awak, perl juga biasa digunakan untuk membuat perubahan waktu.
#!/usr/bin/perl -p s/^\d+\.\d+/localtime $&/e;
PERINCIAN DAN STATISTIK
Gabungan arahan tertentu mampu membantu kita membuat perincian maklumat yang dikehendaki. Juga boleh dibuat kiraan ringkas berdasarkan apa yang kita cari. Di bawah disenaraikan beberapa contoh seperti:
- Statistik berkaitan status kod akses
- Jenis fail
- Pengguna dll
# awk '{print $4}' /var/log/squid/access.log |cut -d"/" -f2| \
> awk '{arr[$1]++} END {for(i in arr) print i" =",arr[i]""}'
** Perincian jenis kod
# awk '/MISS/ {print $4}' /var/log/squid/access.log |cut -d"/" -f1| \
> awk '{arr[$1]++} END {for(i in arr) print i" =",arr[i]""}'
** Perincian jenis kod
# awk '{print $NF}' /var/log/squid/access.log |grep -v ^- | \
> awk '{arr[$1]++} END {for(i in arr) print i" =",arr[i]""}'
# awk '!/DENIED/ && !/-/ {print $8}' /var/log/squid/access.log | \
> awk '{arr[$1]++} END {for(i in arr) print i" =",arr[i]""}'
> awk '{arr[$1]++} END {for(i in arr) print i" =",arr[i]""}'
** Perincian jenis kod
# awk '/MISS/ {print $4}' /var/log/squid/access.log |cut -d"/" -f1| \
> awk '{arr[$1]++} END {for(i in arr) print i" =",arr[i]""}'
** Perincian jenis kod
# awk '{print $NF}' /var/log/squid/access.log |grep -v ^- | \
> awk '{arr[$1]++} END {for(i in arr) print i" =",arr[i]""}'
** Perincian jenis fail
# awk '!/DENIED/ && !/-/ {print $8}' /var/log/squid/access.log | \
> awk '{arr[$1]++} END {for(i in arr) print i" =",arr[i]""}'
** Perincian pengguna (hanya yang mempunyai nama pengguna)
SIAPA | KE MANA | APA
Di bawah adalah sekadar contoh, pencarian pastinya berbeza mengikut keperluan dan keadaan.
# awk '$7 {split($7,dmn,"/");print $3"\t" dmn[3]}' /var/log/squid/access.log | \
> grep -v 127.0.0.1
# tail -f /var/log/squid/access.log|grep -v 127.0.0.1| \
> awk '$7 {split($7,fqdn,"/");print $3"\t" fqdn[3]}'
# awk '$7 ~ /blogspot.com/ && !(/cdn|bp|quantserve/){split($7,dmn,"/");print $3"\t" dmn[3]}' \
> /var/log/squid/access.log|grep blog|sort -n|uniq
# awk '$7 ~ /blogspot.com/ && !(/cdn|bp|quantserve/){split($7,dmn,"/");print dmn[3]}' \
> /var/log/squid/access.log |grep blog|sort -u|grep ^a
# awk -F "/" '/blogspot\.com/ {print $4}' /var/log/squid/access.log | \
> egrep -v "bp.|cdn|quant" |grep blog|sort -u
# awk '$7 ~ /\.(exe)$|\.(msi)$|\.(zip)$|\.(rar)$/ {print $3 "\t" $7}' \
> /var/log/squid/access.log|sort -u
# tail -f /var/log/squid/access.log |awk '$7 ~ /\.(exe)$|\.(msi)$|\.(zip)$|\.(rar)$/ { print strftime("%c", $1) "\t" $3 "\t" $7 }'
# awk '$7 ~ /blogspot.com/ && !(/bp|cdn/) && (/masak| citarasa| dapur/) {split($7,dmn,"/");print $3,"\t",dmn[3]} ' \
> /var/log/squid/access.log |sort -u|grep blog
# awk '$7 ~ /blogspot.com/ && !(/bp|cdn|pixel/) && (/masak|citarasa|dapur/) {split($7,dmn,"/");print dmn[3], "\t" $3 | \
"sort -k1|uniq "}' /var/log/squid/access.log|grep blog
# awk '$7 ~ /blogspot.com/ && !(/bp|cdn|pixel/) && (/masak|citarasa|dapur/) {split($7,dmn,"/");print $3,"\t",dmn[3] | \
> "sort -u"}' /var/log/squid/access.log|grep blog
awk '$7 ~ /blogspot.com/ && !(/bp|cdn|pixel/) {split($7,fqdn,"/");print $3,"\t",fqdn[3] | \
> "sort -k2|uniq -c|sort -rn|head -20"}' /var/log/squid/access.log
> grep -v 127.0.0.1
# tail -f /var/log/squid/access.log|grep -v 127.0.0.1| \
> awk '$7 {split($7,fqdn,"/");print $3"\t" fqdn[3]}'
# awk '$7 ~ /blogspot.com/ && !(/cdn|bp|quantserve/){split($7,dmn,"/");print $3"\t" dmn[3]}' \
> /var/log/squid/access.log|grep blog|sort -n|uniq
** Khusus untuk kunjungan ke blogspot
# awk '$7 ~ /blogspot.com/ && !(/cdn|bp|quantserve/){split($7,dmn,"/");print dmn[3]}' \
> /var/log/squid/access.log |grep blog|sort -u|grep ^a
** Cari kunjungan ke blogspot yang bermula dengan huruf "a"
# awk -F "/" '/blogspot\.com/ {print $4}' /var/log/squid/access.log | \
> egrep -v "bp.|cdn|quant" |grep blog|sort -u
# awk '$7 ~ /\.(exe)$|\.(msi)$|\.(zip)$|\.(rar)$/ {print $3 "\t" $7}' \
> /var/log/squid/access.log|sort -u
# tail -f /var/log/squid/access.log |awk '$7 ~ /\.(exe)$|\.(msi)$|\.(zip)$|\.(rar)$/ { print strftime("%c", $1) "\t" $3 "\t" $7 }'
** Pemantauan langsung kepada beberapa jenis fail seperti .exe/.msi/.zip/.rar
# awk '$7 ~ /blogspot.com/ && !(/bp|cdn/) && (/masak| citarasa| dapur/) {split($7,dmn,"/");print $3,"\t",dmn[3]} ' \
> /var/log/squid/access.log |sort -u|grep blog
* * Cari siapa suka akses blog masakan
# awk '$7 ~ /blogspot.com/ && !(/bp|cdn|pixel/) && (/masak|citarasa|dapur/) {split($7,dmn,"/");print dmn[3], "\t" $3 | \
"sort -k1|uniq "}' /var/log/squid/access.log|grep blog
* Cari siapa suka akses blog masakan - isih ikut blog
# awk '$7 ~ /blogspot.com/ && !(/bp|cdn|pixel/) && (/masak|citarasa|dapur/) {split($7,dmn,"/");print $3,"\t",dmn[3] | \
> "sort -u"}' /var/log/squid/access.log|grep blog
* Cari siapa suka akses blog masakan - isih ikut IP
awk '$7 ~ /blogspot.com/ && !(/bp|cdn|pixel/) {split($7,fqdn,"/");print $3,"\t",fqdn[3] | \
> "sort -k2|uniq -c|sort -rn|head -20"}' /var/log/squid/access.log
* Kira kekerapan kunjungan
*** Maklumat lanjut tentang kandungan access.log boleh dirujuk melalui http://wiki.squid-cache.org/SquidFaq/SquidLogshttp://wiki.squid-cache.org/SquidFaq/SquidLogs
Apa yang ditulis di sini tidak lebih kepada nota & rujukan peribadi berdasarkan keperluan semasa. Pastinya di luar sana ada jalan yang lebih baik lagi. Sila tinggalkan mesej di ruangan komen sekiranya ada cara yang lebih efektif atau berkaitan.
Comments
Post a Comment
Pandangan anda dihargai