McConfig - 2013-06-04

Step 1

Make a script to collect the data:
user@pbx:/# cat ./asterisk.sh

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/bin/bash
# Global vars
COLUMN="Asterisk"
color="green"
MSG=""
reg=`sudo /usr/sbin/asterisk -rx "sip show registry"`
peer=`sudo /usr/sbin/asterisk -rx "sip show peers"`
nreg=`echo "$reg" | sed '1,1d' | sed 'N;$!P;$!D;$d' | grep -cv Registered | sed -e 's/:/./g' `
if [ $nreg -eq 0 ]; then
    greg=`echo "$reg" | sed '1,1d' | sed 'N;$!P;$!D;$d' | sed -e 's/:/./g'`
    reg_msg="<b>All external line Ok.</b>
$greg"
else
    areg=`echo "$reg" | sed '1,1d' | sed 'N;$!P;$!D;$d' | grep -v "Registered" | sed -e 's/:/./g'`
    reg_msg="<b>Alarm on $nreg external line!!!</b>
$areg"
color="red"
fi
npeer=`echo "$peer" | grep -c "UNKNOWN"`
if [ $npeer -eq 0 ]; then
    cpeer=`echo "$peer" | sed '1,1d' | sed 'N;$!P;$!D;$d' | grep OK`
    peer_msg="<b>All internal peers Ok.</b>
$cpeer"
else
    apeer=`echo "$peer" | grep UNKNOWN`
    peer_msg="<b>Warning on $npeer internal peer!!</b>
$apeer"
    if [ "$color" == "red" ]; then
        color="red"
    else
        color=yellow
    fi
fi
MSG="
`echo "$reg_msg"`<br />
`echo "$peer_msg"`<br />
`echo "<b>Current events</b>"`
`echo alarm : "$nreg"`
`echo warning : "$npeer"`
"
# Send data to XYMon
$BB $BBDISP "status $MACHINE.$COLUMN $color `date`
$MSG
"
exit 0

STEP 2

Get xymonlaunch to run the script
Add a section to the ~xymon/client/etc/clientlaunch.cfg to run it every 5 minutes:

[asterisk]
    ENVFILE $HOBBITCLIENTHOME/etc/hobbitclient.cfg
    CMD $HOBBITCLIENTHOME/ext/asterisk.sh
    LOGFILE $HOBBITCLIENTHOME/logs/asterisk.log
    INTERVAL 1m

Arrange for the data to be collected into an RRD file
To enable this, on the Xymon server edit the ~xymon/server/etc/xymonserver.cfg file

TEST2RRD="cpu=la,disk,inod,...,asterisk=ncv"
NCV_asterisk="alarm:GAUGE,warning:GAUGE"

Add the graph to the collection of graphs on the trends column
GRAPHS="la,disk,inode,...,asterisk"

STEP 3

Setup a graph definition
The next step is to tell Xymon how to create a graph from the data in the RRD file.
This is done in the ~xymon/server/etc/graphs.cfg file.

[asterisk]
    TITLE Lost of register
    YAXIS Events
    DEF:alarm=asterisk.rrd:alarm:AVERAGE
    DEF:warning=asterisk.rrd:warning:AVERAGE
    LINE2:alarm#FF0000:Alarm
    LINE2:warning#FFA500:Warning
    COMMENT: this graph show event when PEER lost register\n
    GPRINT:alarm:LAST: alarm \: %5.1lf (cur)
    GPRINT:alarm:MAX: \: %5.1lf (max)
    GPRINT:alarm:MIN: \: %5.1lf (min)
    GPRINT:alarm:AVERAGE: \: %5.1lf (avg)\n
    GPRINT:warning:LAST: warning \: %5.1lf (cur)
    GPRINT:warning:MAX: \: %5.1lf (max)
    GPRINT:warning:MIN: \: %5.1lf (min)
    GPRINT:warning:AVERAGE: \: %5.1lf (avg)\n

STEP 4

Enable xymonast test in ~xymon/server/etc/hosts.cfg file
xxx.xxx.xxx.xxx asterisk # conn asterisk

STEP 5

In your XYMon client put next records to SUDOERS file
Cmnd_Alias XYM = /usr/sbin/asterisk *
xymon ALL = NOPASSWD: XYM

STEP 6

Restat XYMon on server and client
xymon@pbx:/#/etc/rc.d/rc.xymonclient restart
xymon@xymon:/#/etc/rc.d/rc.xymonserver restart

Done!