ผมจะมาแนะนำวิธีการมอนิเตอร์ Asterisk 1.6 ในอีกรูปแบบหนึ่งนะครับ คือมอนิเตอร์ด้วยโปรโตคอล SNMP และแสดงกราฟด้วยโปรแกรม Cacti วิธีนี้สามารถแสดงปริมาณ Call เป็นกราฟได้เลย ทำให้เราเก็บสถิติการ Call และเรียกดูย้อนหลังได้ สะดวกมากครับ
ถ้ายังไม่ได้ติดตั้ง Cacti ก็ต้องติดตั้งก่อนนะครับซึ่งผมมีแนะนำไว้อย่างละเอียดแล้ว
1. ติดตั้งและคอนฟิก Cacti ให้ใช้งานได้
2. ติดตั้ง SNMP บน CentOS
3. คอมไพล์ Asterisk ให้รองรับ SNMP
เช็คดูก่อนครับว่า Asterisk รองรับ SNMP หรือยัง ดังนี้
1. เข้า Asterisk Console
2. พิมพ์คำสั่ง module show like snmp
- โค้ด: เลือกทั้งหมด
sip*CLI> module show like snmp
- โค้ด: เลือกทั้งหมด
Module Description Use Count
res_snmp.so SNMP [Sub]Agent for Asterisk 0
1 modules loaded
ถ้าเห็นแบบนี้ก็แสดงว่า Asterisk รองรับ SNMP แล้วครับ ไม่ต้องคอมไพล์ใหม่
ซึ่งการติดตั้ง Asterisk ให้รองรับ SNMP นี้ผมแนะนำสั้นๆดังนี้นะครับ (สรุปมาจากบทความ Asterisk + SNMP)
1. ติดตั้ง SNMP ถ้ายังไม่ได้ติดตั้ง
2. คอมไพล์ Asterisk ใหม่ เน้นว่าคอมไพล์เฉพาะ Asterisk นะครับ ส่วนอย่างอื่นเช่น dahdi-linux, dahdi-tools, asterisk-addons, libpri นั้นไม่ต้องคอมไพล์ใหม่นะครับ
2.1 คอมไพล์ Asterisk
เข้าไปที่ไดเร็คตอรี่เก็บ Source Code ของ Asterisk สมมติว่าอยู่ที่ /usr/src/asterisk-1.6.2.0 นะครับ
- โค้ด: เลือกทั้งหมด
cd /usr/src/asterisk-1.6.2.0
make menuconfig
เลื่อนปุ่มลูกศรลงมาที่ "Resource Modules" แล้วกด Enter มองหาบรรทัด res_snmp ต้องมีเครื่องหมาย * อยู่ในวงเล็บนะครับ แบบนี้
- โค้ด: เลือกทั้งหมด
[*] res_snmp
กด Esc แล้วกด s เพื่อบันทึกแล้วออกจาก menuconfig
พิมพ์คำสั่ง make และ make install
- โค้ด: เลือกทั้งหมด
make && make install
แต่ห้ามพิมพ์คำสั่ง make samples นะครับ เดี๋ยวคอนฟิกที่อุตส่าห์ทุ่มเทเวลาทำมันจะหายไปหมด
2.2 ก๊อบไฟล์คอนฟิกของ snmp ดังนี้
- โค้ด: เลือกทั้งหมด
cd /usr/src/asterisk-1.6.2.0/configs
cp res_snmp.conf.sample /etc/asterisk/res_snmp.conf
2.3 แก้ไขไฟล์คอนฟิก res_snmp.conf
- โค้ด: เลือกทั้งหมด
vi /etc/asterisk/res_snmp.conf
[general]
subagent = yes
enabled = yes
2.4 เข้า Asterisk Console แล้วสั่ง reload โมดูล res_snmp.so
- โค้ด: เลือกทั้งหมด
module load res_snmp.so
ข้อความที่ปรากฏเมื่อโหลดโมดูล res_snmp.so
== Parsing '/etc/asterisk/res_snmp.conf': == Found
Loading [Sub]Agent Module
Loaded res_snmp.so => (SNMP [Sub]Agent for Asterisk)
== Starting SubAgent
3. ติดตั้ง newt-devel
- โค้ด: เลือกทั้งหมด
yum -y install newt-devel
4. แก้ไขไฟล์คอนฟิกของ net-snmp
4.1 ไฟล์ snmpd.conf
- โค้ด: เลือกทั้งหมด
cd /etc/snmp
mv snmpd.conf snmpd.conf.bak
vi snmpd.conf
ใส่บรรทัดเหล่านี้ไปในไฟล์ แก้ไขข้อมูลให้เหมาะสมกับระบบของเราครับ
- โค้ด: เลือกทั้งหมด
syslocation Bangkok
rocommunity voip4share
# Asterisk User
rwuser asterisk priv
createUser asterisk SHA password AES
#Asterisk Configuration
master agentx
agentXSocket /var/agentx/master
agentXPerms 0660 0550 nobody asterisk
บันทึกไฟล์
บรรทัด agentXperms 0660 0550 nobody asterisk เซ็ต permission ให้แก่ user=nobody และ group=asterisk โดยสมมติว่า group ที่ใช้รัน Asterisk คือ asterisk ส่วน voip4share เป็นชื่อ Community นะครับ
4.2 ก๊อบไฟล์ Asterisk + Digium MIB จากไดเร็คตอรี่ซอร์สโค๊ด
- โค้ด: เลือกทั้งหมด
cd /usr/src/asterisk-1.6.2.0/doc
cp *-mib.txt /usr/share/snmp/mibs
4.3 สตาร์ท snmpd
- โค้ด: เลือกทั้งหมด
service snmpd restart
4.4 ตรวจสอบว่าที่คอนฟิกไว้เวอร์คหรือไม่
- โค้ด: เลือกทั้งหมด
chmod 755 /var/agentx
ls -la /var/agentx
ถ้าเห็น Permission ของ master แบบนี้ก็เวอร์คครับ ตรงกับที่เราคอนฟิกไว้ในไฟล์ /etc/snmp/snmpd.conf
dr-xr-x--- 2 root root 4096 Feb 5 17:04 .
drwxr-xr-x 23 root root 4096 Feb 5 17:04 ..
srw-rw---- 1 nobody asterisk 0 Feb 5 17:04 master
ซึ่ง /var/agentx และ /var/agentx/masters นี้นะครับทำหน้าที่เป็นตัวกลางระหว่าง Asterisk และ SNMP ซึ่ง Asterisk จะใช้มันเพื่อสื่อสารกับ SNMP ทีนี้ถ้าหากว่า Asterisk ไม่สามารถ Write ไฟล์ master ได้ มันก็จะสื่อสารกับ SNMP ไม่ได้ เราจะไม่สามารถใช้ SNMP มามอนิเตอร์ Asterisk ได้
5. รีสตาร์ท Asterisk
- โค้ด: เลือกทั้งหมด
service asterisk restart
6. ทดสอบว่าสามารถใช้ SNMP ดึงข้อมูลจาก Asterisk ได้จริงหรือไม่
- โค้ด: เลือกทั้งหมด
export MIBS=+ASTERISK-MIB
snmpwalk -v 3 -u asterisk -n "" -l authPriv -a SHA -A password -x AES -X password localhost asterisk
จะได้ผลลัพธ์ประมาณนี้ครับ แสดงว่าเวอร์คแล้ว
- โค้ด: เลือกทั้งหมด
ASTERISK-MIB::astVersionString.0 = STRING: 1.6.2.0
ASTERISK-MIB::astVersionTag.0 = Gauge32: 10602
ASTERISK-MIB::astConfigUpTime.0 = Timeticks: (68274) 0:11:22.74
ASTERISK-MIB::astConfigReloadTime.0 = Timeticks: (59852) 0:09:58.52
ASTERISK-MIB::astConfigPid.0 = INTEGER: 2613
ASTERISK-MIB::astConfigSocket.0 = STRING: /var/run/asterisk/asterisk.ctl
ASTERISK-MIB::astConfigCallsActive.0 = Gauge32: 0
ASTERISK-MIB::astConfigCallsProcessed.0 = Counter32: 0
ASTERISK-MIB::astNumModules.0 = INTEGER: 180
ASTERISK-MIB::astNumIndications.0 = INTEGER: 40
ASTERISK-MIB::astCurrentIndication.0 = STRING: us
ASTERISK-MIB::astIndIndex.1 = INTEGER: 1
ASTERISK-MIB::astIndIndex.2 = INTEGER: 2
ASTERISK-MIB::astIndIndex.3 = INTEGER: 3
ASTERISK-MIB::astIndIndex.4 = INTEGER: 4
ASTERISK-MIB::astIndIndex.5 = INTEGER: 5
ASTERISK-MIB::astIndIndex.6 = INTEGER: 6
ASTERISK-MIB::astIndIndex.7 = INTEGER: 7
ASTERISK-MIB::astIndIndex.8 = INTEGER: 8
ASTERISK-MIB::astIndIndex.9 = INTEGER: 9
ASTERISK-MIB::astIndIndex.10 = INTEGER: 10
ASTERISK-MIB::astIndIndex.11 = INTEGER: 11
ASTERISK-MIB::astIndIndex.12 = INTEGER: 12
ASTERISK-MIB::astIndIndex.13 = INTEGER: 13
ASTERISK-MIB::astIndIndex.14 = INTEGER: 14
ASTERISK-MIB::astIndIndex.15 = INTEGER: 15
ASTERISK-MIB::astIndIndex.16 = INTEGER: 16
ASTERISK-MIB::astIndIndex.17 = INTEGER: 17
ASTERISK-MIB::astIndIndex.18 = INTEGER: 18
ASTERISK-MIB::astIndIndex.19 = INTEGER: 19
ASTERISK-MIB::astIndIndex.20 = INTEGER: 20
ASTERISK-MIB::astIndIndex.21 = INTEGER: 21
ASTERISK-MIB::astIndIndex.22 = INTEGER: 22
ASTERISK-MIB::astIndIndex.23 = INTEGER: 23
ASTERISK-MIB::astIndIndex.24 = INTEGER: 24
ASTERISK-MIB::astIndIndex.25 = INTEGER: 25
ASTERISK-MIB::astIndIndex.26 = INTEGER: 26
ASTERISK-MIB::astIndIndex.27 = INTEGER: 27
ASTERISK-MIB::astIndIndex.28 = INTEGER: 28
ASTERISK-MIB::astIndIndex.29 = INTEGER: 29
ASTERISK-MIB::astIndIndex.30 = INTEGER: 30
ASTERISK-MIB::astIndIndex.31 = INTEGER: 31
ASTERISK-MIB::astIndIndex.32 = INTEGER: 32
ASTERISK-MIB::astIndIndex.33 = INTEGER: 33
ASTERISK-MIB::astIndIndex.34 = INTEGER: 34
ASTERISK-MIB::astIndIndex.35 = INTEGER: 35
ASTERISK-MIB::astIndIndex.36 = INTEGER: 36
ASTERISK-MIB::astIndIndex.37 = INTEGER: 37
ASTERISK-MIB::astIndIndex.38 = INTEGER: 38
ASTERISK-MIB::astIndIndex.39 = INTEGER: 39
ASTERISK-MIB::astIndIndex.40 = INTEGER: 40
ASTERISK-MIB::astIndCountry.1 = STRING: be
ASTERISK-MIB::astIndCountry.2 = STRING: de
ASTERISK-MIB::astIndCountry.3 = STRING: pt
ASTERISK-MIB::astIndCountry.4 = STRING: za
ASTERISK-MIB::astIndCountry.5 = STRING: us-o
ASTERISK-MIB::astIndCountry.6 = STRING: th
ASTERISK-MIB::astIndCountry.7 = STRING: cz
ASTERISK-MIB::astIndCountry.8 = STRING: dk
ASTERISK-MIB::astIndCountry.9 = STRING: it
ASTERISK-MIB::astIndCountry.10 = STRING: at
ASTERISK-MIB::astIndCountry.11 = STRING: us
ASTERISK-MIB::astIndCountry.12 = STRING: au
ASTERISK-MIB::astIndCountry.13 = STRING: lt
ASTERISK-MIB::astIndCountry.14 = STRING: br
ASTERISK-MIB::astIndCountry.15 = STRING: jp
ASTERISK-MIB::astIndCountry.16 = STRING: gr
ASTERISK-MIB::astIndCountry.17 = STRING: no
ASTERISK-MIB::astIndCountry.18 = STRING: pl
ASTERISK-MIB::astIndCountry.19 = STRING: nl
ASTERISK-MIB::astIndCountry.20 = STRING: ph
ASTERISK-MIB::astIndCountry.21 = STRING: sg
ASTERISK-MIB::astIndCountry.22 = STRING: se
ASTERISK-MIB::astIndCountry.23 = STRING: ee
ASTERISK-MIB::astIndCountry.24 = STRING: hu
ASTERISK-MIB::astIndCountry.25 = STRING: ve
ASTERISK-MIB::astIndCountry.26 = STRING: mx
ASTERISK-MIB::astIndCountry.27 = STRING: ru
ASTERISK-MIB::astIndCountry.28 = STRING: my
ASTERISK-MIB::astIndCountry.29 = STRING: nz
ASTERISK-MIB::astIndCountry.30 = STRING: uk
ASTERISK-MIB::astIndCountry.31 = STRING: tw
ASTERISK-MIB::astIndCountry.32 = STRING: cn
ASTERISK-MIB::astIndCountry.33 = STRING: fi
ASTERISK-MIB::astIndCountry.34 = STRING: cl
ASTERISK-MIB::astIndCountry.35 = STRING: il
ASTERISK-MIB::astIndCountry.36 = STRING: in
ASTERISK-MIB::astIndCountry.37 = STRING: ch
ASTERISK-MIB::astIndCountry.38 = STRING: fr
ASTERISK-MIB::astIndCountry.39 = STRING: es
ASTERISK-MIB::astIndCountry.40 = STRING: bg
ASTERISK-MIB::astIndDescription.1 = STRING: Belgium
ASTERISK-MIB::astIndDescription.2 = STRING: Germany
ASTERISK-MIB::astIndDescription.3 = STRING: Portugal
ASTERISK-MIB::astIndDescription.4 = STRING: South Africa
ASTERISK-MIB::astIndDescription.5 = STRING: United States Circa 1950/ North America
ASTERISK-MIB::astIndDescription.6 = STRING: Thailand
ASTERISK-MIB::astIndDescription.7 = STRING: Czech Republic
ASTERISK-MIB::astIndDescription.8 = STRING: Denmark
ASTERISK-MIB::astIndDescription.9 = STRING: Italy
ASTERISK-MIB::astIndDescription.10 = STRING: Austria
ASTERISK-MIB::astIndDescription.11 = STRING: United States / North America
ASTERISK-MIB::astIndDescription.12 = STRING: Australia
ASTERISK-MIB::astIndDescription.13 = STRING: Lithuania
ASTERISK-MIB::astIndDescription.14 = STRING: Brazil
ASTERISK-MIB::astIndDescription.15 = STRING: Japan
ASTERISK-MIB::astIndDescription.16 = STRING: Greece
ASTERISK-MIB::astIndDescription.17 = STRING: Norway
ASTERISK-MIB::astIndDescription.18 = STRING: Poland
ASTERISK-MIB::astIndDescription.19 = STRING: Netherlands
ASTERISK-MIB::astIndDescription.20 = STRING: Philippines
ASTERISK-MIB::astIndDescription.21 = STRING: Singapore
ASTERISK-MIB::astIndDescription.22 = STRING: Sweden
ASTERISK-MIB::astIndDescription.23 = STRING: Estonia
ASTERISK-MIB::astIndDescription.24 = STRING: Hungary
ASTERISK-MIB::astIndDescription.25 = STRING: Venezuela / South America
ASTERISK-MIB::astIndDescription.26 = STRING: Mexico
ASTERISK-MIB::astIndDescription.27 = STRING: Russian Federation / ex Soviet Union
ASTERISK-MIB::astIndDescription.28 = STRING: Malaysia
ASTERISK-MIB::astIndDescription.29 = STRING: New Zealand
ASTERISK-MIB::astIndDescription.30 = STRING: United Kingdom
ASTERISK-MIB::astIndDescription.31 = STRING: Taiwan
ASTERISK-MIB::astIndDescription.32 = STRING: China
ASTERISK-MIB::astIndDescription.33 = STRING: Finland
ASTERISK-MIB::astIndDescription.34 = STRING: Chile
ASTERISK-MIB::astIndDescription.35 = STRING: Israel
ASTERISK-MIB::astIndDescription.36 = STRING: India
ASTERISK-MIB::astIndDescription.37 = STRING: Switzerland
ASTERISK-MIB::astIndDescription.38 = STRING: France
ASTERISK-MIB::astIndDescription.39 = STRING: Spain
ASTERISK-MIB::astIndDescription.40 = STRING: Bulgaria
ASTERISK-MIB::astNumChannels.0 = Gauge32: 0
ASTERISK-MIB::astNumChanTypes.0 = INTEGER: 8
ASTERISK-MIB::astChanTypeIndex.1 = INTEGER: 1
ASTERISK-MIB::astChanTypeIndex.2 = INTEGER: 2
ASTERISK-MIB::astChanTypeIndex.3 = INTEGER: 3
ASTERISK-MIB::astChanTypeIndex.4 = INTEGER: 4
ASTERISK-MIB::astChanTypeIndex.5 = INTEGER: 5
ASTERISK-MIB::astChanTypeIndex.6 = INTEGER: 6
ASTERISK-MIB::astChanTypeIndex.7 = INTEGER: 7
ASTERISK-MIB::astChanTypeIndex.8 = INTEGER: 8
ASTERISK-MIB::astChanTypeName.1 = STRING: Agent
ASTERISK-MIB::astChanTypeName.2 = STRING: Phone
ASTERISK-MIB::astChanTypeName.3 = STRING: Console
ASTERISK-MIB::astChanTypeName.4 = STRING: Local
ASTERISK-MIB::astChanTypeName.5 = STRING: USTM
ASTERISK-MIB::astChanTypeName.6 = STRING: IAX2
ASTERISK-MIB::astChanTypeName.7 = STRING: Bridge
ASTERISK-MIB::astChanTypeName.8 = STRING: SIP
ASTERISK-MIB::astChanTypeDesc.1 = STRING: Call Agent Proxy Channel
ASTERISK-MIB::astChanTypeDesc.2 = STRING: Standard Linux Telephony API Driver
ASTERISK-MIB::astChanTypeDesc.3 = STRING: OSS Console Channel Driver
ASTERISK-MIB::astChanTypeDesc.4 = STRING: Local Proxy Channel Driver
ASTERISK-MIB::astChanTypeDesc.5 = STRING: UNISTIM Channel Driver
ASTERISK-MIB::astChanTypeDesc.6 = STRING: Inter Asterisk eXchange Driver (Ver 2)
ASTERISK-MIB::astChanTypeDesc.7 = STRING: Bridge Interaction Channel
ASTERISK-MIB::astChanTypeDesc.8 = STRING: Session Initiation Protocol (SIP)
ASTERISK-MIB::astChanTypeDeviceState.1 = INTEGER: true(1)
ASTERISK-MIB::astChanTypeDeviceState.2 = INTEGER: false(2)
ASTERISK-MIB::astChanTypeDeviceState.3 = INTEGER: false(2)
ASTERISK-MIB::astChanTypeDeviceState.4 = INTEGER: true(1)
ASTERISK-MIB::astChanTypeDeviceState.5 = INTEGER: false(2)
ASTERISK-MIB::astChanTypeDeviceState.6 = INTEGER: true(1)
ASTERISK-MIB::astChanTypeDeviceState.7 = INTEGER: false(2)
ASTERISK-MIB::astChanTypeDeviceState.8 = INTEGER: true(1)
ASTERISK-MIB::astChanTypeIndications.1 = INTEGER: true(1)
ASTERISK-MIB::astChanTypeIndications.2 = INTEGER: true(1)
ASTERISK-MIB::astChanTypeIndications.3 = INTEGER: true(1)
ASTERISK-MIB::astChanTypeIndications.4 = INTEGER: true(1)
ASTERISK-MIB::astChanTypeIndications.5 = INTEGER: true(1)
ASTERISK-MIB::astChanTypeIndications.6 = INTEGER: true(1)
ASTERISK-MIB::astChanTypeIndications.7 = INTEGER: false(2)
ASTERISK-MIB::astChanTypeIndications.8 = INTEGER: true(1)
ASTERISK-MIB::astChanTypeTransfer.1 = INTEGER: false(2)
ASTERISK-MIB::astChanTypeTransfer.2 = INTEGER: false(2)
ASTERISK-MIB::astChanTypeTransfer.3 = INTEGER: false(2)
ASTERISK-MIB::astChanTypeTransfer.4 = INTEGER: false(2)
ASTERISK-MIB::astChanTypeTransfer.5 = INTEGER: false(2)
ASTERISK-MIB::astChanTypeTransfer.6 = INTEGER: true(1)
ASTERISK-MIB::astChanTypeTransfer.7 = INTEGER: false(2)
ASTERISK-MIB::astChanTypeTransfer.8 = INTEGER: true(1)
ASTERISK-MIB::astChanTypeChannels.1 = Gauge32: 0
ASTERISK-MIB::astChanTypeChannels.2 = Gauge32: 0
ASTERISK-MIB::astChanTypeChannels.3 = Gauge32: 0
ASTERISK-MIB::astChanTypeChannels.4 = Gauge32: 0
ASTERISK-MIB::astChanTypeChannels.5 = Gauge32: 0
ASTERISK-MIB::astChanTypeChannels.6 = Gauge32: 0
ASTERISK-MIB::astChanTypeChannels.7 = Gauge32: 0
ASTERISK-MIB::astChanTypeChannels.8 = Gauge32: 0
ASTERISK-MIB::astNumChanBridge.0 = Gauge32: 0
อีกแบบหนึ่งครับ โชว์เป็นตัวเลข
- โค้ด: เลือกทั้งหมด
snmpwalk -On -v 3 -u asterisk -n "" -l authPriv -a SHA -A password -x AES -X password localhost asterisk
- โค้ด: เลือกทั้งหมด
.1.3.6.1.4.1.22736.1.1.1.0 = STRING: 1.6.2.6
.1.3.6.1.4.1.22736.1.1.2.0 = Gauge32: 10602
.1.3.6.1.4.1.22736.1.2.1.0 = Timeticks: (268013) 0:44:40.13
.1.3.6.1.4.1.22736.1.2.2.0 = Timeticks: (268013) 0:44:40.13
.1.3.6.1.4.1.22736.1.2.3.0 = INTEGER: 8775
.1.3.6.1.4.1.22736.1.2.4.0 = STRING: /var/run/asterisk/asterisk.ctl
.1.3.6.1.4.1.22736.1.2.5.0 = Gauge32: 0
.1.3.6.1.4.1.22736.1.2.6.0 = Counter32: 2
.1.3.6.1.4.1.22736.1.3.1.0 = INTEGER: 179
.1.3.6.1.4.1.22736.1.4.1.0 = INTEGER: 40
.1.3.6.1.4.1.22736.1.4.2.0 = STRING: us
.1.3.6.1.4.1.22736.1.4.3.1.1.1 = INTEGER: 1
.1.3.6.1.4.1.22736.1.4.3.1.1.2 = INTEGER: 2
.1.3.6.1.4.1.22736.1.4.3.1.1.3 = INTEGER: 3
.1.3.6.1.4.1.22736.1.4.3.1.1.4 = INTEGER: 4
.1.3.6.1.4.1.22736.1.4.3.1.1.5 = INTEGER: 5
.1.3.6.1.4.1.22736.1.4.3.1.1.6 = INTEGER: 6
.1.3.6.1.4.1.22736.1.4.3.1.1.7 = INTEGER: 7
.1.3.6.1.4.1.22736.1.4.3.1.1.8 = INTEGER: 8
.1.3.6.1.4.1.22736.1.4.3.1.1.9 = INTEGER: 9
.1.3.6.1.4.1.22736.1.4.3.1.1.10 = INTEGER: 10
.1.3.6.1.4.1.22736.1.4.3.1.1.11 = INTEGER: 11
.1.3.6.1.4.1.22736.1.4.3.1.1.12 = INTEGER: 12
.1.3.6.1.4.1.22736.1.4.3.1.1.13 = INTEGER: 13
.1.3.6.1.4.1.22736.1.4.3.1.1.14 = INTEGER: 14
.1.3.6.1.4.1.22736.1.4.3.1.1.15 = INTEGER: 15
.1.3.6.1.4.1.22736.1.4.3.1.1.16 = INTEGER: 16
.1.3.6.1.4.1.22736.1.4.3.1.1.17 = INTEGER: 17
.1.3.6.1.4.1.22736.1.4.3.1.1.18 = INTEGER: 18
.1.3.6.1.4.1.22736.1.4.3.1.1.19 = INTEGER: 19
.1.3.6.1.4.1.22736.1.4.3.1.1.20 = INTEGER: 20
.1.3.6.1.4.1.22736.1.4.3.1.1.21 = INTEGER: 21
.1.3.6.1.4.1.22736.1.4.3.1.1.22 = INTEGER: 22
.1.3.6.1.4.1.22736.1.4.3.1.1.23 = INTEGER: 23
.1.3.6.1.4.1.22736.1.4.3.1.1.24 = INTEGER: 24
.1.3.6.1.4.1.22736.1.4.3.1.1.25 = INTEGER: 25
.1.3.6.1.4.1.22736.1.4.3.1.1.26 = INTEGER: 26
.1.3.6.1.4.1.22736.1.4.3.1.1.27 = INTEGER: 27
.1.3.6.1.4.1.22736.1.4.3.1.1.28 = INTEGER: 28
.1.3.6.1.4.1.22736.1.4.3.1.1.29 = INTEGER: 29
.1.3.6.1.4.1.22736.1.4.3.1.1.30 = INTEGER: 30
.1.3.6.1.4.1.22736.1.4.3.1.1.31 = INTEGER: 31
.1.3.6.1.4.1.22736.1.4.3.1.1.32 = INTEGER: 32
.1.3.6.1.4.1.22736.1.4.3.1.1.33 = INTEGER: 33
.1.3.6.1.4.1.22736.1.4.3.1.1.34 = INTEGER: 34
.1.3.6.1.4.1.22736.1.4.3.1.1.35 = INTEGER: 35
.1.3.6.1.4.1.22736.1.4.3.1.1.36 = INTEGER: 36
.1.3.6.1.4.1.22736.1.4.3.1.1.37 = INTEGER: 37
.1.3.6.1.4.1.22736.1.4.3.1.1.38 = INTEGER: 38
.1.3.6.1.4.1.22736.1.4.3.1.1.39 = INTEGER: 39
.1.3.6.1.4.1.22736.1.4.3.1.1.40 = INTEGER: 40
.1.3.6.1.4.1.22736.1.4.3.1.2.1 = STRING: be
.1.3.6.1.4.1.22736.1.4.3.1.2.2 = STRING: de
.1.3.6.1.4.1.22736.1.4.3.1.2.3 = STRING: pt
.1.3.6.1.4.1.22736.1.4.3.1.2.4 = STRING: za
.1.3.6.1.4.1.22736.1.4.3.1.2.5 = STRING: us-o
.1.3.6.1.4.1.22736.1.4.3.1.2.6 = STRING: th
.1.3.6.1.4.1.22736.1.4.3.1.2.7 = STRING: cz
.1.3.6.1.4.1.22736.1.4.3.1.2.8 = STRING: dk
.1.3.6.1.4.1.22736.1.4.3.1.2.9 = STRING: it
.1.3.6.1.4.1.22736.1.4.3.1.2.10 = STRING: at
.1.3.6.1.4.1.22736.1.4.3.1.2.11 = STRING: us
.1.3.6.1.4.1.22736.1.4.3.1.2.12 = STRING: au
.1.3.6.1.4.1.22736.1.4.3.1.2.13 = STRING: lt
.1.3.6.1.4.1.22736.1.4.3.1.2.14 = STRING: br
.1.3.6.1.4.1.22736.1.4.3.1.2.15 = STRING: jp
.1.3.6.1.4.1.22736.1.4.3.1.2.16 = STRING: gr
.1.3.6.1.4.1.22736.1.4.3.1.2.17 = STRING: no
.1.3.6.1.4.1.22736.1.4.3.1.2.18 = STRING: pl
.1.3.6.1.4.1.22736.1.4.3.1.2.19 = STRING: nl
.1.3.6.1.4.1.22736.1.4.3.1.2.20 = STRING: ph
.1.3.6.1.4.1.22736.1.4.3.1.2.21 = STRING: sg
.1.3.6.1.4.1.22736.1.4.3.1.2.22 = STRING: se
.1.3.6.1.4.1.22736.1.4.3.1.2.23 = STRING: ee
.1.3.6.1.4.1.22736.1.4.3.1.2.24 = STRING: hu
.1.3.6.1.4.1.22736.1.4.3.1.2.25 = STRING: ve
.1.3.6.1.4.1.22736.1.4.3.1.2.26 = STRING: mx
.1.3.6.1.4.1.22736.1.4.3.1.2.27 = STRING: ru
.1.3.6.1.4.1.22736.1.4.3.1.2.28 = STRING: my
.1.3.6.1.4.1.22736.1.4.3.1.2.29 = STRING: nz
.1.3.6.1.4.1.22736.1.4.3.1.2.30 = STRING: uk
.1.3.6.1.4.1.22736.1.4.3.1.2.31 = STRING: tw
.1.3.6.1.4.1.22736.1.4.3.1.2.32 = STRING: cn
.1.3.6.1.4.1.22736.1.4.3.1.2.33 = STRING: fi
.1.3.6.1.4.1.22736.1.4.3.1.2.34 = STRING: cl
.1.3.6.1.4.1.22736.1.4.3.1.2.35 = STRING: il
.1.3.6.1.4.1.22736.1.4.3.1.2.36 = STRING: in
.1.3.6.1.4.1.22736.1.4.3.1.2.37 = STRING: ch
.1.3.6.1.4.1.22736.1.4.3.1.2.38 = STRING: fr
.1.3.6.1.4.1.22736.1.4.3.1.2.39 = STRING: es
.1.3.6.1.4.1.22736.1.4.3.1.2.40 = STRING: bg
.1.3.6.1.4.1.22736.1.4.3.1.4.1 = STRING: Belgium
.1.3.6.1.4.1.22736.1.4.3.1.4.2 = STRING: Germany
.1.3.6.1.4.1.22736.1.4.3.1.4.3 = STRING: Portugal
.1.3.6.1.4.1.22736.1.4.3.1.4.4 = STRING: South Africa
.1.3.6.1.4.1.22736.1.4.3.1.4.5 = STRING: United States Circa 1950/ North America
.1.3.6.1.4.1.22736.1.4.3.1.4.6 = STRING: Thailand
.1.3.6.1.4.1.22736.1.4.3.1.4.7 = STRING: Czech Republic
.1.3.6.1.4.1.22736.1.4.3.1.4.8 = STRING: Denmark
.1.3.6.1.4.1.22736.1.4.3.1.4.9 = STRING: Italy
.1.3.6.1.4.1.22736.1.4.3.1.4.10 = STRING: Austria
.1.3.6.1.4.1.22736.1.4.3.1.4.11 = STRING: United States / North America
.1.3.6.1.4.1.22736.1.4.3.1.4.12 = STRING: Australia
.1.3.6.1.4.1.22736.1.4.3.1.4.13 = STRING: Lithuania
.1.3.6.1.4.1.22736.1.4.3.1.4.14 = STRING: Brazil
.1.3.6.1.4.1.22736.1.4.3.1.4.15 = STRING: Japan
.1.3.6.1.4.1.22736.1.4.3.1.4.16 = STRING: Greece
.1.3.6.1.4.1.22736.1.4.3.1.4.17 = STRING: Norway
.1.3.6.1.4.1.22736.1.4.3.1.4.18 = STRING: Poland
.1.3.6.1.4.1.22736.1.4.3.1.4.19 = STRING: Netherlands
.1.3.6.1.4.1.22736.1.4.3.1.4.20 = STRING: Philippines
.1.3.6.1.4.1.22736.1.4.3.1.4.21 = STRING: Singapore
.1.3.6.1.4.1.22736.1.4.3.1.4.22 = STRING: Sweden
.1.3.6.1.4.1.22736.1.4.3.1.4.23 = STRING: Estonia
.1.3.6.1.4.1.22736.1.4.3.1.4.24 = STRING: Hungary
.1.3.6.1.4.1.22736.1.4.3.1.4.25 = STRING: Venezuela / South America
.1.3.6.1.4.1.22736.1.4.3.1.4.26 = STRING: Mexico
.1.3.6.1.4.1.22736.1.4.3.1.4.27 = STRING: Russian Federation / ex Soviet Union
.1.3.6.1.4.1.22736.1.4.3.1.4.28 = STRING: Malaysia
.1.3.6.1.4.1.22736.1.4.3.1.4.29 = STRING: New Zealand
.1.3.6.1.4.1.22736.1.4.3.1.4.30 = STRING: United Kingdom
.1.3.6.1.4.1.22736.1.4.3.1.4.31 = STRING: Taiwan
.1.3.6.1.4.1.22736.1.4.3.1.4.32 = STRING: China
.1.3.6.1.4.1.22736.1.4.3.1.4.33 = STRING: Finland
.1.3.6.1.4.1.22736.1.4.3.1.4.34 = STRING: Chile
.1.3.6.1.4.1.22736.1.4.3.1.4.35 = STRING: Israel
.1.3.6.1.4.1.22736.1.4.3.1.4.36 = STRING: India
.1.3.6.1.4.1.22736.1.4.3.1.4.37 = STRING: Switzerland
.1.3.6.1.4.1.22736.1.4.3.1.4.38 = STRING: France
.1.3.6.1.4.1.22736.1.4.3.1.4.39 = STRING: Spain
.1.3.6.1.4.1.22736.1.4.3.1.4.40 = STRING: Bulgaria
.1.3.6.1.4.1.22736.1.5.1.0 = Gauge32: 0
.1.3.6.1.4.1.22736.1.5.3.0 = INTEGER: 10
.1.3.6.1.4.1.22736.1.5.4.1.1.1 = INTEGER: 1
.1.3.6.1.4.1.22736.1.5.4.1.1.2 = INTEGER: 2
.1.3.6.1.4.1.22736.1.5.4.1.1.3 = INTEGER: 3
.1.3.6.1.4.1.22736.1.5.4.1.1.4 = INTEGER: 4
.1.3.6.1.4.1.22736.1.5.4.1.1.5 = INTEGER: 5
.1.3.6.1.4.1.22736.1.5.4.1.1.6 = INTEGER: 6
.1.3.6.1.4.1.22736.1.5.4.1.1.7 = INTEGER: 7
.1.3.6.1.4.1.22736.1.5.4.1.1.8 = INTEGER: 8
.1.3.6.1.4.1.22736.1.5.4.1.1.9 = INTEGER: 9
.1.3.6.1.4.1.22736.1.5.4.1.1.10 = INTEGER: 10
.1.3.6.1.4.1.22736.1.5.4.1.2.1 = STRING: H323
.1.3.6.1.4.1.22736.1.5.4.1.2.2 = STRING: SIP
.1.3.6.1.4.1.22736.1.5.4.1.2.3 = STRING: Phone
.1.3.6.1.4.1.22736.1.5.4.1.2.4 = STRING: Agent
.1.3.6.1.4.1.22736.1.5.4.1.2.5 = STRING: Local
.1.3.6.1.4.1.22736.1.5.4.1.2.6 = STRING: IAX2
.1.3.6.1.4.1.22736.1.5.4.1.2.7 = STRING: Console
.1.3.6.1.4.1.22736.1.5.4.1.2.8 = STRING: Bridge
.1.3.6.1.4.1.22736.1.5.4.1.2.9 = STRING: USTM
.1.3.6.1.4.1.22736.1.5.4.1.2.10 = STRING: DAHDI
.1.3.6.1.4.1.22736.1.5.4.1.3.1 = STRING: The NuFone Network's Open H.323 Channel Driver
.1.3.6.1.4.1.22736.1.5.4.1.3.2 = STRING: Session Initiation Protocol (SIP)
.1.3.6.1.4.1.22736.1.5.4.1.3.3 = STRING: Standard Linux Telephony API Driver
.1.3.6.1.4.1.22736.1.5.4.1.3.4 = STRING: Call Agent Proxy Channel
.1.3.6.1.4.1.22736.1.5.4.1.3.5 = STRING: Local Proxy Channel Driver
.1.3.6.1.4.1.22736.1.5.4.1.3.6 = STRING: Inter Asterisk eXchange Driver (Ver 2)
.1.3.6.1.4.1.22736.1.5.4.1.3.7 = STRING: OSS Console Channel Driver
.1.3.6.1.4.1.22736.1.5.4.1.3.8 = STRING: Bridge Interaction Channel
.1.3.6.1.4.1.22736.1.5.4.1.3.9 = STRING: UNISTIM Channel Driver
.1.3.6.1.4.1.22736.1.5.4.1.3.10 = STRING: DAHDI Telephony Driver w/PRI
.1.3.6.1.4.1.22736.1.5.4.1.4.1 = INTEGER: false(2)
.1.3.6.1.4.1.22736.1.5.4.1.4.2 = INTEGER: true(1)
.1.3.6.1.4.1.22736.1.5.4.1.4.3 = INTEGER: false(2)
.1.3.6.1.4.1.22736.1.5.4.1.4.4 = INTEGER: true(1)
.1.3.6.1.4.1.22736.1.5.4.1.4.5 = INTEGER: true(1)
.1.3.6.1.4.1.22736.1.5.4.1.4.6 = INTEGER: true(1)
.1.3.6.1.4.1.22736.1.5.4.1.4.7 = INTEGER: false(2)
.1.3.6.1.4.1.22736.1.5.4.1.4.8 = INTEGER: false(2)
.1.3.6.1.4.1.22736.1.5.4.1.4.9 = INTEGER: false(2)
.1.3.6.1.4.1.22736.1.5.4.1.4.10 = INTEGER: false(2)
.1.3.6.1.4.1.22736.1.5.4.1.5.1 = INTEGER: true(1)
.1.3.6.1.4.1.22736.1.5.4.1.5.2 = INTEGER: true(1)
.1.3.6.1.4.1.22736.1.5.4.1.5.3 = INTEGER: true(1)
.1.3.6.1.4.1.22736.1.5.4.1.5.4 = INTEGER: true(1)
.1.3.6.1.4.1.22736.1.5.4.1.5.5 = INTEGER: true(1)
.1.3.6.1.4.1.22736.1.5.4.1.5.6 = INTEGER: true(1)
.1.3.6.1.4.1.22736.1.5.4.1.5.7 = INTEGER: true(1)
.1.3.6.1.4.1.22736.1.5.4.1.5.8 = INTEGER: false(2)
.1.3.6.1.4.1.22736.1.5.4.1.5.9 = INTEGER: true(1)
.1.3.6.1.4.1.22736.1.5.4.1.5.10 = INTEGER: true(1)
.1.3.6.1.4.1.22736.1.5.4.1.6.1 = INTEGER: false(2)
.1.3.6.1.4.1.22736.1.5.4.1.6.2 = INTEGER: true(1)
.1.3.6.1.4.1.22736.1.5.4.1.6.3 = INTEGER: false(2)
.1.3.6.1.4.1.22736.1.5.4.1.6.4 = INTEGER: false(2)
.1.3.6.1.4.1.22736.1.5.4.1.6.5 = INTEGER: false(2)
.1.3.6.1.4.1.22736.1.5.4.1.6.6 = INTEGER: true(1)
.1.3.6.1.4.1.22736.1.5.4.1.6.7 = INTEGER: false(2)
.1.3.6.1.4.1.22736.1.5.4.1.6.8 = INTEGER: false(2)
.1.3.6.1.4.1.22736.1.5.4.1.6.9 = INTEGER: false(2)
.1.3.6.1.4.1.22736.1.5.4.1.6.10 = INTEGER: false(2)
.1.3.6.1.4.1.22736.1.5.4.1.7.1 = Gauge32: 0
.1.3.6.1.4.1.22736.1.5.4.1.7.2 = Gauge32: 0
.1.3.6.1.4.1.22736.1.5.4.1.7.3 = Gauge32: 0
.1.3.6.1.4.1.22736.1.5.4.1.7.4 = Gauge32: 0
.1.3.6.1.4.1.22736.1.5.4.1.7.5 = Gauge32: 0
.1.3.6.1.4.1.22736.1.5.4.1.7.6 = Gauge32: 0
.1.3.6.1.4.1.22736.1.5.4.1.7.7 = Gauge32: 0
.1.3.6.1.4.1.22736.1.5.4.1.7.8 = Gauge32: 0
.1.3.6.1.4.1.22736.1.5.4.1.7.9 = Gauge32: 0
.1.3.6.1.4.1.22736.1.5.4.1.7.10 = Gauge32: 0
.1.3.6.1.4.1.22736.1.5.5.1.0 = Gauge32: 0
ซึ่งข้อมูลที่ได้นี้เราสามารถนำไปสร้างกราฟเพื่อแสดงข้อมูลที่ต้องการได้ครับ เช่น
.1.3.6.1.4.1.22736.1.5.4.1.7.2 = Gauge32: 0 ตัวเลขด้านหลัง Guage32 แสดงจำนวน Call ที่เป็น SIP ครับ เราเอาแค่ตัวเลข .1.3.6.1.4.1.22736.1.5.4.1.7.2 ไปใช้งานนะครับ แต่ค่านี้ก็บอกไม่ได้ว่ามีการรับสายหรือไม่ แต่บอกเราได้ว่า Asterisk กำลังจัดการกับ SIP Channel อยู่เป็นจำนวนเท่าไหร่
.1.3.6.1.4.1.22736.1.5.5.1.0 เป็นจำนวนคอล ที่ Asterisk ทำการบริดจ์ให้แล้ว มีการรับสาย จึงเป็นคอลที่แท้จริงที่ผ่าน Asterisk
***
สำหรับท่านที่เอาบทความนี้ไปทำบน Elastix หรือว่า Trixbox ถ้ารันคำสั่ง snmpwalk แล้วไม่เห็นข้อมูลที่ต้องการเห็น แต่เห็นเป็นข้อความแบบนี้แทน
ASTERISK-MIB::asterisk = No Such Object available on this agent at this OID
ก็ไม่ต้องตกใจนะครับ ให้ทำการ unload และ load โมดูล res_snmp.so ใหม่ แล้วลองรันคำสั่ง snmpwalk ใหม่ก็จะโอเค
cmdserver*CLI> module unload res_snmp.so
Unloaded res_snmp.so
Unloading [Sub]Agent Module
cmdserver*CLI> module load res_snmp.so
Loaded res_snmp.so
== Parsing '/etc/asterisk/res_snmp.conf': == Found
Loading [Sub]Agent Module
Loaded res_snmp.so => (SNMP [Sub]Agent for Asterisk)
== Starting SubAgent
***
Asterisk+SNMP+Cacti ตอนที่ 2