วิธีการทำ Rotate ไฟล์ Log ของ Asterisk
โพสต์แล้ว: 28 ม.ค. 2011 09:28
เวลา Asterisk ทำงานก็จะมีข้อความปรากฏขึ้นบนหน้าคอนโซลของมันนะครับ เราเห็นข้อความเหล่านี้โดยการพิมพ์คำสั่ง asterisk -r จากพร้อมท์ของ Linux
ข้อความที่เราเห็นมันยังถูกเก็บไว้ในไฟล์ log ของ Asterisk ด้วยนะครับ ซึ่งอยู่ที่โฟลเดอร์ /var/log/asterisk ไฟล์นี้อาจจะชื่อ messages หรือไม่ก็ full อยู่ที่เวอร์ชั่นของ Asterisk อ่ะครับ
นอกจากไฟล์ messages/full นี้แล้วก็ยังมีไฟล์
dateformat ไม่รู้ว่าเอาไว้เก็บอะไร
queue_log ไว้เก็บ log ที่เกิดกับ queue
event_log ไม่รู้เอาไว้เก็บอะไร
การทำ Log Rotate เป็นการเก็บ Log เก่าๆไว้เป็นไฟล์ต่างหาก ซึ่งเราอาจจะลบไฟล์ Log เก่าๆทิ้งไปเลยก็ได้จะได้ทำให้ฮาร์ดดิสก์ว่างขึ้น เราทำ Log Rotate ได้ 2 วิธีนะครับ คือ
1. ใช้คำสั่ง logger rotate จากพร้อมท์ของ Asterisk
ลองดูใน /var/log/asterisk ก็จะเห็นไฟล์ full.0 หรือ message.0 ไฟล์ dataformat.0, queue-log.0, event_log.0 ถ้าไม่อยากเก็บไว้จะลบทิ้งก็ได้นะครับ
2. ใช้คำสั่ง log rotate จากพร้อมท์ของ Linux
3. ใช้บริการ Log Rotate Service บน Linux
แล้วใส่ข้อความด้านล่างนี้ลงไปครับ (ไม่ได้คิดเองครับ ก๊อบมา เปลี่ยนชื่อไฟล์ full เป็น messages ถ้าจำเป็น และเปลี่ยน asterisk asterisk เป็นยูสเซอร์ตามที่ใช้รัน Asterisk ในเครื่องนะครับ)
เสร็จแล้วลองรัน logrotate ดูครับ จากพร้อมท์ Linux
รันทีเดียวพอนะครับ ดูว่าเวอร์คไม่เวอร์ค ถ้าไฟล์ full หรือ messages ยังเล็กๆอยู่ก็จะไม่มีผลอะไร แล้วก็มาเช็คไฟล์ใน /var/log/asterisk
ปล. เดิมผมไม่รู้ว่ามีคำสั่ง logger rotate อยู่ใน Asterisk ด้วย เวลาผมจะลบ Log File ผมต้อง Stop Asterisk ก่อน แล้วลบไฟล์ แล้ว Start Asterisk ใหม่ ตอนนี้ก็ไม่ต้องทำอย่างนั้นอีกแล้วครับ
- โค้ด: เลือกทั้งหมด
asterisk -r
ข้อความที่เราเห็นมันยังถูกเก็บไว้ในไฟล์ log ของ Asterisk ด้วยนะครับ ซึ่งอยู่ที่โฟลเดอร์ /var/log/asterisk ไฟล์นี้อาจจะชื่อ messages หรือไม่ก็ full อยู่ที่เวอร์ชั่นของ Asterisk อ่ะครับ
นอกจากไฟล์ messages/full นี้แล้วก็ยังมีไฟล์
dateformat ไม่รู้ว่าเอาไว้เก็บอะไร
queue_log ไว้เก็บ log ที่เกิดกับ queue
event_log ไม่รู้เอาไว้เก็บอะไร
การทำ Log Rotate เป็นการเก็บ Log เก่าๆไว้เป็นไฟล์ต่างหาก ซึ่งเราอาจจะลบไฟล์ Log เก่าๆทิ้งไปเลยก็ได้จะได้ทำให้ฮาร์ดดิสก์ว่างขึ้น เราทำ Log Rotate ได้ 2 วิธีนะครับ คือ
1. ใช้คำสั่ง logger rotate จากพร้อมท์ของ Asterisk
- โค้ด: เลือกทั้งหมด
callcenter*CLI> logger rotate
== Parsing '/etc/asterisk/logger.conf': Found
Asterisk Event Logger restarted
Asterisk Queue Logger restarted
ลองดูใน /var/log/asterisk ก็จะเห็นไฟล์ full.0 หรือ message.0 ไฟล์ dataformat.0, queue-log.0, event_log.0 ถ้าไม่อยากเก็บไว้จะลบทิ้งก็ได้นะครับ
2. ใช้คำสั่ง log rotate จากพร้อมท์ของ Linux
- โค้ด: เลือกทั้งหมด
# asterisk -rx "logger rotate"
3. ใช้บริการ Log Rotate Service บน Linux
- โค้ด: เลือกทั้งหมด
vi /etc/logrotate.d/asterisk
แล้วใส่ข้อความด้านล่างนี้ลงไปครับ (ไม่ได้คิดเองครับ ก๊อบมา เปลี่ยนชื่อไฟล์ full เป็น messages ถ้าจำเป็น และเปลี่ยน asterisk asterisk เป็นยูสเซอร์ตามที่ใช้รัน Asterisk ในเครื่องนะครับ)
- โค้ด: เลือกทั้งหมด
/var/log/asterisk/full /var/log/asterisk/*log {
missingok
rotate 5
daily
size = 5M
create 0640 asterisk asterisk
postrotate
/usr/sbin/asterisk -rx 'logger reload' > /dev/null 2> /dev/null
endscript
}
เสร็จแล้วลองรัน logrotate ดูครับ จากพร้อมท์ Linux
- โค้ด: เลือกทั้งหมด
logrotate /etc/logrotate.d/asterisk
รันทีเดียวพอนะครับ ดูว่าเวอร์คไม่เวอร์ค ถ้าไฟล์ full หรือ messages ยังเล็กๆอยู่ก็จะไม่มีผลอะไร แล้วก็มาเช็คไฟล์ใน /var/log/asterisk
ปล. เดิมผมไม่รู้ว่ามีคำสั่ง logger rotate อยู่ใน Asterisk ด้วย เวลาผมจะลบ Log File ผมต้อง Stop Asterisk ก่อน แล้วลบไฟล์ แล้ว Start Asterisk ใหม่ ตอนนี้ก็ไม่ต้องทำอย่างนั้นอีกแล้วครับ