Tuesday, August 17, 2010

syslog: The system events logger

commands
ต่อจาก ตอนก่อนหน้านี้น่ะ ยกยอดมาเลย ดูดีกว่า

syslog เป็นโปรแกรมที่จัดการข้อมูลทั้งจาก kernel และ โปรแกรมอรรถประโยชน์ของระบบ เขียนโดย Eric Allman จาก Berkeley โปรแกรมนี้ มีข้อดีที่สำคัญ ๒ ประการคือ
  1. ทำให้ผู้พัฒนาโปรแกรม เป็นอิสระจากความจำเป็นที่ต้องมีการบันทึก log และ
  2. เอื้ออำนวยให้ ผู้บริหารระบบสามารถควบคุมการเก็บ log ได้
ก่อนหน้านี้ ต่างคน ต่างมีอิสระในการบันทึก log ของตัวของตัวไป ผู้บริหารระบบ ไม่สามารถควบคุมได้ว่าข้อมูลอันใดที่จะเก็บไว้ หรือ สมควรเก็บไว้ และ จะเก็บไว้ที่ไหน

syslog มีความหยืดหยุ่นพอสมควร กล่าวคือสามารถเรียงลำดับข่าวสารจากแหล่งกำเนิด และ ความสำคัญ(รวมๆเรียกแบบเหมาโหลว่า severity [security ขออภัย คำนี้ คัดลอกมาผิดครับ ที่ถูกคือ ซิเวียริตี้] level) ได้ และเปิดช่องทางของข่าวสารอันนั้น ไปยังจุดหมายปลายทางใดใดได้ เช่นลง log หรือ บน terminal ของผู้ใช้งานเอง หรือ เครื่องอื่นๆ ก้ยังได้

ความสามารถในการที่จะเป็นศูนย์กลางการ log ข่าวสารของเครือข่ายนี้เอง เป็นคุณสมบัติเด่นอันหนึ่งของเขา

syslog ประกอบด้วยสามองค์ใหญ่ๆคือ
  1. syslogd และ /etc/syslog.conf ตัวโปรแกรมที่ดำเนินการบันทึก และ แฟ้มที่บ่งบอกพฤติกรรมของเขา
  2. openlog, syslog,closelog รูทีนสำคัญๆที่อยู่ใน library ที่ผู้พัฒนาโปรแกรมใช้สำหรับส่งข้อมูลไปให้กับ syslogd และ
  3. logger คำสั่งในระดับผู้ใช้งาน ที่สามารถเรียกใช้เพื่อส่ง log ต่างๆ

syslogd อยู่ที่ /usr/sbin ส่วน logger อยุ่ที่ /usr/bin และ syslog เป็นรูทีนใน library ที่เป็นส่วนหนึ่งของ C standard library.

การทำงาน จะเป็นลักษณะนี้ โดยที่แรกเริ่ม syslogd จะวิ่งเมื่อเปิดระบบปฏิบัติการ โปรแกรมที่ทำงานร่วมกับ syslog จะเขียน log ลงไปยังแฟ้มพิเศษ ชื่อ /dev/log ส่วน syslogd จะอ่านข่าวสารจากแฟ้มนี้ ปรึกษาแฟ้มที่กำหนดพฤติกรรมของเขา แล้วแยกกระจายไปยังปลายทางต่างๆ ตามที่กำหนดไว้. syslogd จะอ่านข่าวสารต่างๆจาก kernel ด้วยเช่นกัน โดยอ่านจากอุปกรณ์ /dev/klog

สัญญาณควบคุม HUP จะทำให้ syslogd ปิดแฟ้ม log อ่านแฟ้มที่ควบคุมพฤติกรรมของเขาใหม่อีกครั้งหนึ่ง และ เริ่มต้นการบันทึกอีกระลอกใหม่ นั่นก็หมายความว่า หากมีการเปลี่ยนแปลงใดใดกับแฟ้มควบคุมพฤติกรรมของ syslogd แล้ว ท่านต้อง ส่งสัญญาณ HUP ให้กับ syslogd เพื่อว่า การเปลี่ยนแปลงนั้นๆ จะมีผลบังคับใช้ สัญญาณควบคุม TERM จะเป็นการสั่งยุติการทำงานของ syslogd

syslogd เขาจัเขียน process ID, PID, ไว้ที่แฟ้ม /var/run/syslog.pid ดังนั้น จึงสะดวกมาก สำหรับการสั่ง หรือ ส่งสัญญาณ ไปยัง process นั้นๆ ดังนี้ (โปรดใช้ความละเอียดถี่ถ้วนเป็นอย่างยิ่ง)
kill   -1   `/bin/cat /var/run/syslog.pid`
สัญญาณส่งผ่านคำสั่ง kill โดยเป็น option ของคำสั่ง ตามรูปแบบที่นำเสนอนี้ 1 หรือ HUP คือสัญญาณดังกล่าว

การบีบอัด และโยกย้ายแฟ้ม log จาก syslogd โดยพละการนั้น ไม่ดี และผลเสียมากเกินคาดคิดเลยทีเดียว ปกติระบบจะมีโปรแกรมเล็กๆช่วยงานลักษระนี้อยู่แล้ว

ในลำดับถัดไปจะนำเสนอส่วนของการควบคุมพฤติกรรมของ syslogd ซึ่งก็คือรายละเอียดของแฟ้ม /etc/syslog.conf ซึ่งสาระของแฟ้มนี้เขียนขึ้นด้วยอักษรธรรมดาๆ ไม่ต้องการอะไรมาก โดยมีข้อกำหนดว่า บรรทัดว่างๆ กับ บรรทัดที่ขึ้นต้นด้วย # นั้น มันจะไม่สนใจ มันจะสนใจก็ต่อเมื่อ บรรทัดนั้นๆ อยู่ในรูปแบบดังนี้
selector<Tab>action
โดยที่ <Tab> คือปุ่ม Tab บนแป้นพิมพ์ของท่าน และเป็นปุ่ม Tab เพียงเท่านั้น จะเป็นอย่างอื่นไปเสียไม่ได้ สำหรับ selector และ action นั้น จะได้นำมาเล่าต่อไป๚

2 comments:

dekdar said...

ไม่ได้แวะเวียนไปเสียนาน

ติดตามอย่างใกล้ชิด (กำลังอ่านอยางเมามันส์)

อิอิ

มะขาม said...

อิอิ
แหม อ่านอย่างเมามัน
เขิ้นนน เขิน
ขอบใจน่ะ รออีกตอน จะเอามาจาก the white book มาให้อ่าน
แต่ก็อย่าคาดหวังสูงนัก


View My Stats