Category: Server

การ config squid3 ให้เก็บชื่อ hostname ของ client ใน access.log

วันก่อนพี่ที่บริษัทผมโทรมาสอบถามเรื่องโปรเจ็คตัวนึงที่กำลังทำกันอยู่ซึ่งเกี่ยวข้องกับการเก็บ log ไฟล์ของ squid 3 ว่าสามารถทำให้มันเก็บ log ชื่อ hostname + ip ได้ไหมเพราะถ้าเป็นไอพีอย่างเดียว คนที่มีความรู้ด้านไอทีก็สามารถเข้าไปเปลี่ยนไอพีของเครื่อง client ได้ ซึ่งตอนนั้นผมก็ยังไม่มีเวลาศึกษา จนกลับมาจากงานอบรมที่ชัยภูมิก็มานั่งทำการบ้านที่พี่เค้าสั่งมาจนได้คำตอบดังนี้

หากคุณต้องการให้ squid เก็บ log ทั้ง hostname + ip ตามตัวอย่างด่านล้าง

root@proxy:/etc/squid3# tail -f /var/log/squid3/access.log mrgill-laptop 192.168.1.34 - - [13/Mar/2010:23:12:29 +0700] "GET http://imrgill.com/wp-admin/index.php? HTTP/1.1" 200 1008 "http://imrgill.com/wp-admin/index.php?page=stats" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.2pre) Gecko/20100311 Ubuntu/9.10 (karmic) Namoroka/3.6.2pre GTB6" TCP_MISS:DIRECT mrgill-laptop 192.168.1.34 - - [13/Mar/2010:23:12:29 +0700] "GET http://imrgill.com/wp-admin/index.php? HTTP/1.1" 200 1780 "http://imrgill.com/wp-admin/index.php?page=stats" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.2pre) Gecko/20100311 Ubuntu/9.10 (karmic) Namoroka/3.6.2pre GTB6" TCP_MISS:DIRECT mrgill-laptop 192.168.1.34 - - [13/Mar/2010:23:12:30 +0700] "GET http://imrgill.com/wp-content/plugins/flickr-gallery/flickr-gallery.css? HTTP/1.1" 304 260 "http://imrgill.com/wp-admin/index.php?page=stats" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.2pre) Gecko/20100311 Ubuntu/9.10 (karmic) Namoroka/3.6.2pre GTB6" TCP_REFRESH_UNMODIFIED:DIRECT

ให้คุณตั้งค่า squid3.conf ดังนี้

#เอา # หน้าบรรทัด logformat combined ออกแล้วเพิ่ม %>A เข้าไปหน้า %>a logformat combined %>A %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %h" "%{User-Agent}>h" %Ss:%Sh #กำหนด logformat เป็น combined access_log /var/log/squid3/access.log combined #กำหนด log_ip_on_direct เป็น off log_ip_on_direct off #กำหนด log_fqdn เป็น on log_fqdn on

แต่มีข้อแม้ว่า proxy server ของเราต้อง resolv hostname จาก dns server ของเราได้ด้วยนะครับ หมายถึงต้องมีชื่อเครื่อง client ใน dns server ของเราด้วย ถ้าใครไม่มี dns ก็สามารถ map เครื่องกับไอพีได้เองในไฟล์ /etc/hosts
ตัวอย่าง

127.0.0.1 localhost 127.0.1.1 proxy 192.168.1.34 mrgill-laptop

เสร็จแล้วก็อย่าลืม restart squid3 กันด้วยนะครับ

Leave a Comment March 13, 2010

Daily Command : แอบดูคน logon ด้วย w

คิดไว้นานแล้วครับว่าจะทำหมวดพวก Daily tips และ Daily command ซึ่ง Daily tips เปิดตัวไปก่อนหน้าแล้ววันนี้มาถึงคิวของ Daily command กันบ้าง วันนี้ขอเสนอคำสั่ง w ครับ สั้นๆ ง่ายๆ เอาไว้ตรวจสอบสถานะของเครื่องและการ logon ของ user

[mrgill@Webserver ~]$ w 21:40:35 up 45 days, 15:33, 2 users, load average: 0.05, 0.03, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT mrgill pts/1 ppp-124-120-45-1 21:37 0.00s 0.03s 0.00s w root :0 - 18Dec09 ?xdm? 2:22m 0.20s /usr/bin/gnome-session

รายงานทั้ง

  • วันเวลา : 21:40:35
  • uptime : up 45 days, 15:33
  • จำนวน user ที่ logon : 2 users
  • รวมทั้ง load ของ cpu ด้วย : load average: 0.05, 0.03, 0.00

Leave a Comment January 26, 2010

Daily Tips : Logout ออกจาก Command Line แบบทันใจ

ทิปสั้นๆ ครับสำหรับใครที่ใช้ Linux mod command line หรือ SSH แล้วต้องการ Logout ออกจากระบบแบบเร็วๆ โดยที่ไม่ต้องพิมพ์คำสั่ง exit หรือ logout ลองกด Ctrl + d ดูครับก็จะเป็นการ Logout อีกรูปแบบนึง

1 Comment January 21, 2010

Apache กำลังจะหยุดพัฒนาเวอร์ชัน 1.3, 2.0 Release

Apache HTTP Server เป็นโปรเจ็คที่ประสบความสำเร็จและได้รับความนิยมมากที่สุดของ Apache Software Foundation (ASF) ซึ่งตอนนี้มีข่าวมาว่า ASF จะหยุดพัฒนาไมเนอร์เวอร์ชันของ 1.3 กับ 2.0 และจะมุ่งไปพัฒนาเวอร์ชัน 2.2  โดย Colm MacCárthaigh หนึ่งในสมาชิก ASF ให้ความเห็นไว้ว่า

“How about we formally deprecate the 1.3.x branch? Make one more release, but attach a notice to the effect that it will be the final release, and that in future we’ll be distributing security updates by other means,”

ข่าวจาก : techworld

Leave a Comment January 13, 2010

Tune Apache 2.x ยังไงให้รองรับ 20,000 Concurrent

ยังไม่เคยลองจริงเหมือนกันครับ แต่ไปเจอมาหวังว่าคงเป็นประโยชน์
เนื้อหา
1 Introduction 3
1.1 What ftp.heanet.ie is 3
1.2 What ftp.heanet.ie is not 3
1.3 Motivation 4
1.4 The Numbers 4
2 Benchmarking 6
2.1 Webserver benchmarking 6
2.2 Filesystem benchmarking 8
2.3 VM and Scheduler benchmarking 9
3 Tuning Apache 12
3.1 Choosing an MPM 12
3.2 Static Vs DSO 13
3.3 Configuration changes 14
3.4 Sendfile 15
3.5 Mmap 15
3.6 mod cache 16
3.7 Compile options 17
4 Tuning the Operating System 19
4.1 Choosing and tuning filesystems 19
4.2 NFS 21
4.3 Choosing a kernel 22
4.4 Tuning the Kernel 23
4.4.1 Tuning the VM 23
4.4.2 Tuning the Networking Stack 24
4.4.3 Pluggable I/O schedulers 25
4.5 Hyperthreading 25
5 System Design 26
5.1 Hardware and Operating System choice 26
5.2 Canyonero.heanet.ie 27
5.3 Attempted Multi-system architecture 28
5.4 Cassandra.heanet.ie 29
5.5 Summary: Time-line of ftp.heanet.ie 30
6 Future changes for ftp.heanet.ie 31
6.1 Jumboframes 31
6.2 Multicast services 31
6.3 mod ftpd? 31
6.4 64-bit and FreeBSD 31
Bibliography 33
Acknowledgements 33

White Papers [35 Pages]
Presentation
ขอบคุณ
Author : Colm MacCarthaigh

1 Comment January 13, 2010

Shell Script แจ้งเตือน SMS เมื่อ Hard Disk ใกล้เต็มแบบฟรีๆ

สวัสดีครับต่อยอดจากเรื่อง Server Down รู้ได้ทันทีผ่าน SMS แถมฟรี ที่เขียนไว้วันก่อน วันนี้เอามาประยุกต์ให้ script เช็คสถานะของ hard disk ครับโดยให้ส่ง sms เตือนเมื่อมีการใช้งาน partition ใดๆ เกิน 90%
มาดูตัว code ของ script กันครับ

#!/bin/sh # Simple SHELL script for Linux and UNIX system monitoring with # df command # ------------------------------------------------------------------------- # Copyright (c) 2009 mrGilL # This script is licensed under GNU GPL version 2.0 or above # ------------------------------------------------------------------------- # Setup SMS User below # See URL for more info: # http://imrgill.com/2009/12/13/monitor-server-with-sms-alert-shell-script/ # ------------------------------------------------------------------------- # Hard type (hdx,sdx,scx) HDD_TYPE="sd" # Partition lists PLIST=`df -h | grep $HDD_TYPE | awk '{ print $1 }' | sed -e 's/\/dev\///g'` # Setting SMS User (Gmail) GCUSER="user@gmail.com" GCPASSWD="gmail-passwd" for p in $PLIST do disk=$(df -h | grep $p | awk '{ print $5 }' | sed -e 's/\%//g') pname=$(df -h | grep $p | awk '{ print $6 }') if [ $disk -ge 90 ]; then # disk less than 90% wget --force-html --recursive --no-check-certificate -nd --delete-after "https://imrgill.com/google_sms/gsms.php?username=$GCUSER&password=$GCPASSWD&title=$(hostname) partition $pname < 90%" fi done

วิธีนำไปใช้

1. แก้ไข HDD_TYPE เป็นประเภท hard disk ที่คุณใช้ ดูได้จากคำสั่ง fdisk -l หรือ df ผลลัพธ์ที่ได้จะประมาณ /dev/sda ตัวอย่างผมได้ sda ให้ใส่เป็น HDD_TYPE=”sd”

[mrgill@Webserver ~]$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 59515556 1260296 55183232 3% / /dev/sda8 11710104 2895576 8210084 27% /usr /dev/sda7 1019208 37992 928608 4% /tmp /dev/sda6 109109796 9092520 94385292 9% /var /dev/sda5 287660612 11604092 261208448 5% /home /dev/sda1 101086 33812 62055 36% /boot tmpfs 517284 0 517284 0% /dev/shm

*เหตุผลที่ไม่ใส่ sda ไปตรงๆ เลยก็เพราะ กรณีมี hard disk หลายลูกเช่น sda, sdb ทำให้ script ไม่สามารถตรวจสอบ hard disk ที่เป็น sdb ได้

2. แก้ไข GCUSER และ GCPASSWD เป็น user gmail ของเรา

3. กำหนดสิทธิ์ให้สามารถรันได้

[root@Webserver ~]$ chmod +x observman_disk.sh

4. นำ script ไปใส่ /etc/cron.daily/ เพื่อให้ script ทำงานทุกวัน

[root@Webserver ~]$ cp observman_disk.sh /etc/cron.daily/

หรือใครจะนำไปใส่ใน crontab ก็ไม่ว่ากัน

[root@Webserver ~]$ crontab -e
# m h dom mon dow command @daily /root/observman_disk.sh > /dev/null

หวังว่าบทความนี้คงเป็นประโยชน์ต่อผู้อ่าน

4 Comments December 13, 2009

Server Down รู้ได้ทันทีผ่าน SMS แถมฟรีด้วย

ก่อนอื่นขอหาวยาวๆ ก่อนกล่าวสวัสดีท่านผู้อ่านทุกท่าน  เมื่อคืนบ้าพลังอะไรไม่รู้อยากเขียน script ส่ง sms เตือนเมื่อ server down ที่จริงชาวบ้านเค้าก็ทำขายกันเยอะแยะ แต่หลังจากที่ผมได้ใช้ Google Calendar แล้วให้มันส่ง sms เตือนแถมฟรีอีก ก็เลยคิดอยากใช้ประโยชน์จากมันเพิ่มเติมก็ค้นๆ  Google อีกเช่นเคยครับ ไปเจอบทความใน ThaiAdmin เรื่อง google calendar sms ที่ท่าน smartsoft เขียนไว้ก็เลยลองโหลด Libraries Google Calendar SMS มาเล่นดูบ้าง ซึ่งเมื่อลองดูแล้วก็ถือว่าใช้งานง่ายทีเดียวเลยเอามาโมต่อ โดยให้ Shell Script เป็นตัว Submit form แทน

ความสามารถของ Script

1. ส่ง sms แจ้งเตือนเมื่อ ping ไม่เจอ server
2. เก็บ log ในตัว เพราะทุกครั้งที่มันส่ง sms มันจะไปเพิ่ม Event ใน Google Calendar ทำให้เราเข้าไปตรวจสอบย้อนหลังได้
3. ไม่ต้องเสียเงินค่าส่ง SMS แม้แต่น้อย (พี่ Google เค้าใจดี)

มาดูขั้นตอนการทำกัน

ก่อนอื่นเราก็ต้องไป Verify เบอร์มือถือใน Google Calendar ก่อนครับ ขออนุญาตท่าน smartsoft ทำรูปใหม่นะครับ
1. ขั้นแรก ล็อกอินเข้า Google Calendar http://www.google.com/calendar ก็ใช้ User ของ Gmail นั้นแหละครับ
ล็อกอินแล้วคลิกที่ Settings เพื่อไปปรับเมนูให้เป็นภาษาไทย (หากใครเป็นภาษาไทยอยู่แล้วข้ามไปขั้นตอนต่อไปได้เลย)

คลิก Settings

2. เลือก Language ให้เป็น ภาษาไทย แล้วกด Save

เลือก ภาษาไทย

(more…)

61 Comments December 11, 2009

Google Public DNS บน Ubuntu

ไม่นานมานี้ Google เปิดให้บริการใหม่นั้นคือ Google Public DNS ซึ่งเป็นบริการสอบถามชื่อและไอพีฟรีของ Google ซึ่งสิ่งที่คุณจะได้จากบริการนี้คือ

1. ความเร็วในการใช้งานบราวเซอร์
2. ความปลอดภัยที่ดีกว่า
3. ได้ผลลัพธิ์ทันทีโดยไม่ต้อง Redirect

มาดูกันว่าเราจะใช้ Google Public DNS บน Ubuntu ได้ยังไง

สำหรับใครที่ใช้ Ubuntu Desktop หรือ Linux Server ที่ Fix IP ก็สามารถเข้าไปแก้ไขไฟล์ /etc/resolv.conf ได้โดยตรง

ตัวอย่าง

root@mrgill-laptop:~# nano /etc/resolv.conf

จากนั้นแก้ไขข้อมูลในไฟล์ /etc/resolv.conf ให้เป็น

nameserver 8.8.8.8 nameserver 8.8.4.4

และสำหรับใครที่ใช้ Ubuntu Desktop แล้วรับ DHCP มาทุกครั้งที่ renew ip เราจะได้ dns ที่ dhcp แจกมาให้ซึ่งวิธีแก้ไขนี้ทำได้โดย
(more…)

Leave a Comment December 8, 2009

จะเอา /var/lib/mysql บน Ubuntu ไปไว้ที่อื่นทำอย่างไร

ต้องการเอา /var/lib/mysql ไปไว้ที่อื่นครับเพราะกลัวเวลาเครื่องมีปัญหาอาจทำให้ข้อมูลหายได้เพราะ /var/lib/mysql อยู่ใน / เลย(ไม่ได้แบ่ง partition แยกออกมา) วิธีแรกที่ผมทำเลยคือ

root@ubuntu:~# mv /var/lib/mysql /data/mysql root@ubuntu:~# ln -s /data/mysql /var/lib/mysql

ก็คือ move จาก /var/lib/mysql ไปไว้ที่ /data/mysql ผลคือตอน restart mysql มันจะฟ้องว่า

root@ubuntu:~# /etc/init.d/mysql restart * Stopping MySQL database server mysqld [ OK ] * Starting MySQL database server mysqld [fail]

ไปใน /var/log/syslog ก็เจอ error ประมาณนี้ แล้วจะทำไงดี

root@ubuntu:~# tail -f /var/log/syslog Nov 9 02:36:29 ubuntu kernel: [ 2394.732730] type=1503 audit(1257752189.048:131): operation="open" pid=5484 parent=5483 profile="/usr/sbin/mysqld" requested_mask="r::" denied_mask="r::" fsuid=0 ouid=0 name="/sys/devices/system/cpu/" Nov 9 02:36:30 ubuntu kernel: [ 2395.745479] type=1503 audit(1257752190.061:132): operation="open" pid=5494 parent=5493 profile="/usr/sbin/mysqld" requested_mask="r::" denied_mask="r::" fsuid=0 ouid=0 name="/sys/devices/system/cpu/" Nov 9 02:36:31 ubuntu kernel: [ 2396.761345] type=1503 audit(1257752191.080:133): operation="open" pid=5504 parent=5503 profile="/usr/sbin/mysqld" requested_mask="r::" denied_mask="r::" fsuid=0 ouid=0 name="/sys/devices/system/cpu/" Nov 9 02:36:31 ubuntu kernel: [ 2396.774493] type=1503 audit(1257752191.092:134): operation="open" pid=5513 parent=5512 profile="/usr/sbin/mysqld" requested_mask="r::" denied_mask="r::" fsuid=0 ouid=0 name="/sys/devices/system/cpu/" Nov 9 02:36:31 ubuntu /etc/init.d/mysql[5520]: 0 processes alive and '/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf ping' resulted in Nov 9 02:36:31 ubuntu /etc/init.d/mysql[5520]: #007/usr/bin/mysqladmin: connect to server at 'localhost' failed Nov 9 02:36:31 ubuntu /etc/init.d/mysql[5520]: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)' Nov 9 02:36:31 ubuntu /etc/init.d/mysql[5520]: Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!

(more…)

4 Comments November 9, 2009

จะเข้า Recovery Mode บน Ubuntu 9.10 Karmic Koala ยังไง

สวัสดีตอนเช้าครับ ฮาๆ ยังไม่ได้นอนเลย เมื่อคืนนั่งลง Ubuntu Server ให้เพื่อนทั้งคืนจนถึงเช้า นั่งทำให้ Ubuntu Server หน้าตาเหมือน Ubuntu Desktop วิธีการก็ง่ายๆ ครับ

$ sudo apt-get install ubuntu-desktop

ก็ลงไว้ให้เพื่อนมันใช้งานง่ายๆ ครับ ลงไปลงมามีปัญหาจำเป็นต้องเข้า Recovery Mode เอ๊ะแต่เจ้า 9.10 นี่มันเข้า Boot Menu ของ Grub2 ยังไงหวา ปกติมันวิ่งๆ แล้วก็เข้าหน้า login เลย กด Esc เหมือน 9.04 แล้วก็ยังเข้าไม่ได้ ก็ลอง Search ใน Google ดูก็พบคำตอบครับคือต้องกด Shift ค้างไว้ตอน Boot มันก็จะแสดงหน้าเมนูของ Grub2 มาให้เลือกนั้นเอง

Leave a Comment November 9, 2009


Chat

Recent Entries

Random Posts

Social Network

Tag Cloud

Calendar

February 2012
S M T W T F S
« Dec    
 1234
567891011
12131415161718
19202122232425
26272829  

Twitter: imrgill

RSS LinuxToday

RSS HowToForge

RSS UbuntuClub

RSS Blognone

RSS PowerWindowsBlog

Tag

Categories

Archives

Blogroll

Meta

Get Adobe Flash playerPlugin by wpburn.com wordpress themes