หน้า 1 จากทั้งหมด 1

คอนฟิกให้ Asterisk ส่ง Log ไปยัง Syslog Server

โพสต์โพสต์แล้ว: 17 ต.ค. 2019 14:05
โดย nuiz
คอนฟิกให้ Asterisk ส่ง Log ไปยัง Syslog Server ครับ เพิ่งเทสเสร็จเมื่อกี้นี้เอง

1. ไฟล์ logger_logfiles_custom.conf
คอนฟิกบอก Asterisk ให้ส่ง Logs ไปยัง Syslog Server ด้วย
โค้ด: เลือกทั้งหมด
now=$(date +'%F-%H-%M-%S')
cp /etc/asterisk/logger_logfiles_custom.conf /etc/asterisk/logger_logfiles_custom.conf.$now
cat >> /etc/asterisk/logger_logfiles_custom.conf << EOF
syslog.local0 => debug,error,notice,verbose(3),warning
EOF


2. รีสตาร์ท Asterisk
ถ้าเป็น Asterisk 13 รันคำสั่งนี้ก็ได้ครับ เร็วดี
โค้ด: เลือกทั้งหมด
asterisk -rx "logger reload"

หรือถ้าเป็น Asterisk เวอร์ชั่นก่อนหน้าที่ไม่มีคำสั่ง logger reload ให้รีสตาร์ท Asterisk แทนครับ รันคำสั่งนี้
โค้ด: เลือกทั้งหมด
systemctl restart asterisk


3. ตรวจสอบ
เห็น syslog.local0 ก็อุ่นใจแล้วครับ ส่ง Logs ไป Syslog Server แน่นอน
โค้ด: เลือกทั้งหมด
[root@pbx ~]# asterisk -rx "logger show channels"
Channel                             Type     Status    Configuration
-------                             ----     ------    -------------
syslog.local0                       Syslog   Enabled    - DEBUG NOTICE WARNING ERROR VERBOSE
/var/log/asterisk/messages          File     Enabled    - NOTICE WARNING ERROR SECURITY
                                    Console  Enabled    - DEBUG NOTICE WARNING ERROR VERBOSE
/var/log/asterisk/full              File     Enabled    - DEBUG NOTICE WARNING ERROR VERBOSE


4. ติดตั้ง Rsyslog
จริงๆบน Issabel รวมทั้ง CentOS 7 ก็ติดตั้ง Syslog Server ชื่อว่า Rsyslog ไว้ให้เรียบร้อยแล้วครับ แต่ยังไม่ได้คอนฟิกอะไรมากมาย
โค้ด: เลือกทั้งหมด
yum -y install rsyslog
systemctl enable rsyslog


5. คอนฟิก Rsyslog ให้ส่ง Logs ไปยัง Syslog Server 192.168.100.53
ตามจริง Rsyslog ทำงานได้ทั้งเป็น Syslog Server และ Syslog Clients ครับ และในบทความนี้ผมจะให้ Rsyslog เป็น Client ส่ง Logs ไปยัง Syslog Server ไอพี 192.168.100.53 ครับ พอร์ต TCP 514 (ไม่ได้ใช้ UDP)
โค้ด: เลือกทั้งหมด
now=$(date +'%F-%H-%M-%S')
cp /etc/rsyslog.conf /etc/rsyslog.conf.$now
echo "*.*  @@192.168.100.53:514" >> /etc/rsyslog.conf


ถ้าจะให้ Rsyslog ส่งไป Syslog Server ด้วยโปรโตคอล UDP ให้ใส่ @ อันเดียวครับแบบนี้
โค้ด: เลือกทั้งหมด
now=$(date +'%F-%H-%M-%S')
cp /etc/rsyslog.conf /etc/rsyslog.conf.$now
echo "*.*  @192.168.100.53:514" >> /etc/rsyslog.conf



6. รีสตาร์ท Rsyslog
โค้ด: เลือกทั้งหมด
systemctl restart rsyslog


7. ข้อความบน Rsyslog Sever (ไฟล์ /var/log/messages)
บนเครื่อง Syslog Sever ไอพี 192.168.100.53 เปิดไฟล์ /var/log/messages ก็จะเห็น Logs ที่ Asterisk ส่งไปครับ สังเกตุว่าไม่มี IP Address นะครับ มีแต่ Hostname ชื่อ pbx ครับ เราจึงดูได้ว่าส่งมาจากเครื่องไหน แต่บาง Log ก็มี IP ส่งมาด้วยเช่นตอน Register ไม่สำเร็จครับ ดังตัวอย่างด้านล่างนี้
โค้ด: เลือกทั้งหมด
Oct 17 13:49:39 pbx asterisk[2678]: NOTICE[2698]: chan_sip.c:23892 in handle_response_peerpoke: Peer '101' is now Reachable. (20ms / 2000ms)
Oct 17 13:52:15 pbx asterisk[2678]: NOTICE[2698]: chan_sip.c:28485 in handle_request_register: Registration from '<sip:101@192.168.100.54>' failed for '192.168.100.118:55602' - Wrong password
Oct 17 13:56:08 pbx asterisk[2986]: NOTICE[3006]: chan_sip.c:23892 in handle_response_peerpoke: Peer 'IBEL-53-In' is now Reachable. (1ms / 60000ms)
Oct 17 13:56:08 pbx asterisk[2986]: NOTICE[3006]: chan_sip.c:23892 in handle_response_peerpoke: Peer 'CAT-Out' is now Reachable. (26ms / 60000ms)


แค่ดูจาก Syslog Server เราก็จะรู้แล้วว่ามีใครพยายามเข้ามาใช้งาน Asterisk ของเรา โดยไม่ต้องรีโมทไปดูบนเครื่องนั้น

เทคนิคการใช้งาน Issabel
เทคนิคการใช้งาน Elastix
เทคนิคการใช้งาน Asterisk
เทคนิคการใช้งาน FreePBX
เทคนิคการคอนฟิก Elastix/Issabel ให้ทำงานเป็น Time Server