สวัสดีครับ ผมมีโปรแกรมอีกตัวหนึ่งมานำเสนอ โปรแกรมนี้มีชื่อว่า MonAst ครับ เป็นโปรแกรมแบบ Open Source เอาไว้มอนิเตอร์ Asterisk ใช้งานได้ฟรี ทำงานผ่านเว็บเบราเซอร์ ติดตั้งง่ายไม่ต้องมี Data Base มาเกี่ยวข้อง แค่เพิ่ม User/Pass เข้าไปในไฟล์ manager.conf ของ Asterisk เท่านี้เองครับก็จะมอนิเตอร์ได้แล้ว ทั้งหมดนี้จะแสดงแบบ Real Time ครับ เป็นอีกทางเลือกหนึ่งสำหรับท่านที่เบื่อๆ FOP (Flash Operator Panel) ดูรูปตัวอย่างก่อนครับ
สิ่งที่โปรแกรม MonAst สามารถแสดงผลให้เราดูได้ ก็มีดังต่อไปนี้ครับ
Peers/Users แสดงสถานะการออนไลน์/ออฟไลน์ การโทร ดูได้ทั้งของ SIP/IAX Clients และ Trunks เลยนะครับ
Meetme Rooms สถานของห้อง Conference
Channels/Calls หลักๆแล้วหน้านี้จะแสดงสถานะของ Trunk สายที่กำลังโทรเข้า โทรออก ระยะเวลาที่โทร
Parked Calls แสดงคอลที่กำลัง Park สายอยู่
Queues แสดง Queue ทั้งหมดที่คอนฟิกไว้ สายที่โทรเข้ามาใน Queue ระยะเวลาที่โทร
Asterisk CLI ให้เราพิมพ์คำสั่งใน Asterisk Console ได้โดยไม่ต้องล๊อกอินเข้าเครื่อง
เอาหล่ะครับเรามาติดตั้งโปรแกรมนี้กันดีกว่า
1. ดาวน์โหลดโปรแกรม
ดาวน์โหลดโปรแกรมจากเว็บไซต์นี้
http://sourceforge.net/projects/monast/
- โค้ด: เลือกทั้งหมด
wget http://downloads.sourceforge.net/project/monast/MonAst%20for%20Asterisk%201.4_1.6/1.4/monast-1.4.tar.gz?use_mirror=nchc
2. แตกไฟล์
แตกไปไว้ในไดเร็คตอรี่ที่เรียกได้จาก Web Server
- โค้ด: เลือกทั้งหมด
tar xzvf monast-1.4.tar.gz -C /var/www/html
mv /var/www/html/monast-1.4 /var/www/html/monast
cd /var/www/html/monast
3. แก้ไขไฟล์ manager.conf ของ Asterisk
- โค้ด: เลือกทั้งหมด
vi /etc/asterisk/manager.conf
เพิ่มบรรทัดนี้เข้าไป
- โค้ด: เลือกทั้งหมด
[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0
displayconnects = yes
timestampevents = yes
[monast]
secret=password
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.0
writetimeout=100
read=system,call,log,verbose,command,agent,user,config
write=system,call,log,verbose,command,agent,user,config
อย่าลืมแก้ไข username/secret ให้เป็นของเราเองด้วยนะครับ เสร็จแล้วรีโหลด Asterisk เพื่อให้มีผล
- โค้ด: เลือกทั้งหมด
asterisk -rx "reload manager"
เทสว่ามี manager ชื่อ monast แล้วหรือยัง
- โค้ด: เลือกทั้งหมด
asterisk -rx "manager show users"
username
--------
monast
-------------------
1 manager users configured.
4. ก๊อปไฟล์คอนฟิก
- โค้ด: เลือกทั้งหมด
cd pymon
cp monast.conf.sample /etc/monast.conf
5. แก้ไขไฟล์คอนฟิกของ MonAst
- โค้ด: เลือกทั้งหมด
vi /etc/monast.conf
[global]
# Dados para conectar ao AMI
hostname = localhost
hostport = 5038
username = monast
password = password
# Bind client connetions on host:port
bind_host = 127.0.0.1
bind_port = 5039
# Default user context
default_context = from-internal
# Context to use in transfer calls
transfer_context = default
# Context and prefix for meetme
meetme_context = default
meetme_prefix =
[users]
# sort peers (options: peer, callerid, calleridname, calleridnum)
sortby = callerid
# defualt show/hide
default = show
# hide peer when default = show
SIP/user-1 = hide
# show peer when default = hide
SIP/user-2 = show
# always show peer.
#SIP/user-3 = force
# force CallerID (only in forced mode)
#SIP/user-4 = force,Diego Aguirre <5555>
บรรทัด bind_host, bind_port เป็น IP และ Port ที่โปรแกรม MonAst Daemon จะรันครับ รอรับคอนเน็คชั่นจาก MonAst Web
6. ลองรัน MonAst Daemon ดู
- โค้ด: เลือกทั้งหมด
./monast.py
ถ้าเวอร์คจะเห็นข้อความคล้ายๆนี้ครับ
[Wed Mar 31 23:46:42 2010] NOTICE :: MonAst :: Initializing...
[Wed Mar 31 23:46:42 2010] NOTICE :: MonAst.parseConfig :: Parsing config
[Wed Mar 31 23:46:42 2010] NOTICE :: AsteriskManager :: Initializing...
[Wed Mar 31 23:46:43 2010] NOTICE :: AsteriskManager.connect :: Trying to connect to localhost:5038
[Wed Mar 31 23:46:43 2010] NOTICE :: AsteriskManager.login :: Logging in...
[Wed Mar 31 23:46:43 2010] NOTICE :: AsteriskManager.threadRecvQueue :: Authentication accepted
ถ้าไม่มี Error ให้กด Ctrl+C เพื่อยกเลิก ก็จะเห็นข้อความคล้ายๆแบบนี้
[Wed Mar 31 23:47:25 2010] NOTICE :: AsteriskManager.close :: Finishing...
[Wed Mar 31 23:47:25 2010] NOTICE :: AsteriskManager.logoff :: Logging off...
[Wed Mar 31 23:47:27 2010] NOTICE :: AsteriskManager.disconnect :: Closing connection to localhost:5038
[Wed Mar 31 23:47:28 2010] NOTICE :: Monast :: Finished...
ถ้ารันแล้วมี Error ให้ดูวิธีการแก้ไขตอนท้ายๆบทความนะครับ
ถ้าไม่มี Error ให้ลองรันเป็น daemon ดู
- โค้ด: เลือกทั้งหมด
./monast.py --daemon
จะมี Process ของ MonAst รันอยู่ครับ แบบนี้
root 18596 1 0 23:48 ? 00:00:00 /usr/bin/python -u /var/www/html/monast/pymon/monast.py --daemon
ต้องให้ monast.py นี้รันอยู่ตลอดเวลานะครับ เพราะมันเหมือนเป็นตัวกลางระหว่าง MonAst ที่เราดูผ่านเว็บกับ Asterisk เพราะถ้ามันไม่รันเราก็จะมอนิเตอร์ไม่ได้
7. ทำให้ MonAst Daemon รันทุกครั้งที่เปิดเครื่อง
- โค้ด: เลือกทั้งหมด
cd contrib/init.d
cp rc.redhat.monast /etc/init.d/monast
chmod 755 /etc/init.d/monast
chkconfig --level 35 monast on
service monast start
ในไฟล์ /etc/init.d/monast นะครับ ให้แก้ไขไดเร็คตอรี่ระบุไฟล์ monast.py ให้ถูกต้องตามจริง ยกตัวอย่างเช่น ไฟล์ monast.py อยู่ที่ /var/www/html/monast/pymon ต้องแก้ไขไฟล์ /etc/init.d/monast ตามนี้ครับ
เดิม
elif [ -f /opt/monast/monast.py ]; then
MONAST=/opt/monast/monast.py
เป็น
elif [ -f /var/www/html/monast/pymon/monast.py ]; then
MONAST=/var/www/html/monast/pymon/monast.py
ไม่อย่างนั้นจะสตาร์ท monast ไม่ได้ครับ เพราะมันหาไฟล์ไม่เจอ
8. แก้ไขไฟล์ config.php
เป็นออปชั่นในการแสดงผลข้อมูลบนหน้าเว็บครับ
- โค้ด: เลือกทั้งหมด
cd /var/www/html/monast/lib
vi config.php
แก้ไขบรรทัดต่อไปนี้ตามที่ต้องการ ซึ่ง HOSTNAME, HOSTPORT ต้องให้ตรงกับข้อมูลใน # Bind client connetions on host:port ของไฟล์ /etc/monast.conf ด้วยนะครับ
define("HOSTNAME", "localhost"); // monast.py hostname
define("HOSTPORT", 5039); // monast.py port
define("MONAST_SOCKET_DURATION", 20); // 20 seconds
define("MONAST_BROWSER_REFRESH", 60 * 10); // 10 minutes
define("MONAST_CALL_TIME", true); // enable or disable call timer
define("MONAST_CLI_TAB", true); // enable or disable Asterisk CLI TAB
define("MONAST_DEBUG_TAB", false); // enable or disable debug TAB
9. ใช้งานโปรแกรม
http://x.x.x.x/monast/
10. ข้อสังเกตุในการใช้งาน
1. โปรแกรมนี้ไม่มีหน้าล๊อกอิน หากต้องการให้มี Login ก็ต้องใช้ Apache Auth ครับ
2. หน้าเว็บอาจจะแฮ้งค์ได้ในบางครั้ง เป็นตอนที่เปิดหน้าเว็บค้างไว้นานๆครับ ข้อมูลไม่อัพเดท เราอาจต้องกด Refresh หรือปุ่ม F5 เพื่อให้ Refresh หน้าเว็บใหม่ให้โปรแกรมเรียกข้อมูลใหม่ หรือไม่ก็ใช้ FireFox แทนครับ
11. ตัวอย่างเว็บ
ผมมีตัวอย่างหน้าเว็บให้ดูครับ ก๊อบมาจากของผมเอง
Channels/Calls
Mixed Channels
ท่านที่กำลังมองหาโปรแกรมลักษณะนี้อยู่ ผมหวังว่าคงตอบสนองความต้องการได้นะครับ
ข้อความ Error ที่อาจจะเจอนะครับ
1. หา twisted ไม่เจอ
- โค้ด: เลือกทั้งหมด
# ./monast.py
Traceback (most recent call last):
File "./monast.py", line 45, in ?
from AsteriskManager import AsteriskManagerFactory
File "/var/www/html/monast/pymon/amapi/AsteriskManager.py", line 32, in ?
from twisted.protocols import basic
ImportError: No module named twisted.protocols
สาเหตุเป็นเพราะยังไม่ได้ลง Twisted Python ครับ ดาวน์โหลดจากเว็บนี้ http://twistedmatrix.com และติดตั้งก่อนรัน monast.py
2. หา Zope ไม่เจอ
- โค้ด: เลือกทั้งหมด
Traceback (most recent call last):
File "./monast.py", line 45, in ?
from AsteriskManager import AsteriskManagerFactory
File "/opt/a2billing/Public/monast-2.0/pymon/amapi/AsteriskManager.py", line 32, in ?
from twisted.protocols import basic
File "/usr/lib64/python2.4/site-packages/twisted/protocols/basic.py", line 19, in ?
from zope.interface import implements
ImportError: No module named zope.interface
เป็นเพราะว่ายังไม่ได้ติดตั้ง Zope ครับ ดาวน์โหลดจากเว็บนี้ http://pypi.python.org/pypi/zope.interface#downloads และติดตั้ง
วิธีการติดตั้ง Twisted Python
มีขั้นตอนตามนี้ครับ
- โค้ด: เลือกทั้งหมด
wget http://tmrc.mit.edu/mirror/twisted/Twisted/10.2/Twisted-10.2.0.tar.bz2
tar xvf Twisted-10.2.0.tar.bz2 -C /usr/src
cd /usr/src/Twisted-10.2.0
python setup.py install
เสร็จแล้วครับ กลับไปลองรัน ./monast.py ใหม่อีกครั้ง
ถ้ารัน python setup.py install ไม่ได้ และฟ้องว่าหา python.h ไม่เจอ ให้ติดตั้ง python-devel ด้วยครับ
- โค้ด: เลือกทั้งหมด
yum -y install python-devel
ขั้นตอนการติดตั้ง Zope Interface
มีขั้นตอนตามนี้ครับ
- โค้ด: เลือกทั้งหมด
wget http://pypi.python.org/packages/source/z/zope.interface/zope.interface-3.6.1.tar.gz
tar xzvf zope.interface-3.6.1.tar.gz -C /usr/src
cd /usr/src/zope.interface-3.6.1
python setup.py install
เสร็จแล้วครับ กลับไปลองรัน ./monast.py ใหม่อีกครั้ง
บทความที่เกี่ยวข้อง
เทคนิคการรัน MonAst มากกว่า 1 โพรเซสบนเครื่องเดียวกัน
ดูสถานะการทำงานของ Extensions/Trunks แบบ Real Time ด้วยโปรแกรม FOP
โปรแกรม MonAst เวอร์ชั่น 3.0