Asterisk monitoring

Business PBX Solutions
Provider Solution Details
Bicom VoIP Become an ITSP Now!
  • Become a serious competitor in VoIP Immediately
  • FULL Consultancy, Installation, Training & Support
  • Sell Hosted IP PBXs, Biz Lines, Call Centre
  • Turnkey Provisioning at your data center
Details
3CX Software PBX for Windows
  • Windows Software Solution
  • Easy to Install and Manage
  • Auto Configures Phones & Trunks
  • Android, iOS, Windows & Mac clients
Details
Now that you've built Asterisk around your entire life it might be a good idea to make sure it stays up!

Argus

The current version of Argus has builtin support for monitoring SIP and IAX2, as well as support for querying the asterisk manager interface. Argus can be configured to notify someone if a PRI goes down, or if asterisk goes off to la-la-land (etc).


Cacti

Cacti is a general purpose monitoring application, one user has developed an Asterisk plugin. More information on this plugin can be found here.

Update 2007


We at ITConnection.ru are happy to post a Cacti script for Asterisk IP-PBX statistics. It's based on Python, works over Asterisk manager API connection and provides cute and comprehensive graphs. You can download Cacti's plug-in from this page: http://forums.cacti.net/viewtopic.php?p=111317

Cognito

Cognito's flagship monitoring offering, Precognito supports Asterisk monitoring out of the box, with metrics on active calls, channels as well as real-time alerts when there are performance issues with the Asterisk application, or the underlying OS. On-demand and scheduled reports are also available, and Cognito supports its customers with certified Linux engineers who help customers with deployments and maintenance.

easySysAdmin

easySysAdmin easySysAdmin is an automated support/security platform, designed to save your engineer's time and prevent hacking attempts. Specifically of interest to Asterisk users is the monitoring of SIP registrations, and automatic blocking of repeated failed attempts. In addition, "bad" IP addresses are shared via the service so other users can block them pre-emptively. For more information and the free trial visit our web site.

Xymon

Xymon, previously known as Xymon, is a Big Brother compatible network monitor.

Humbug Labs

Humbug Labs is a carrier-class analytics and fraud detection system for soft-switches and PBX systems.

MRTG

  • A script and instructions on how to setup MRTG for graphing asterisk activity can be find here


Munin

  • Scripts for graphing Asterisk activity with Munin can be found here
  • PyMunin - Multigraph Munin Plugins in Python - PyMunin includes a Multigraph Munin Plugin for Asterisk that implements the following graphs: asterisk_calls, asterisk_channels, asterisk_peers_sip, asterisk_peers_iax2, asterisk_voip_codecs, asterisk_conferences, asterisk_voicemail, asterisk_trunks.

Nagios

Notes documenting a simple Asterisk monitoring implementation utilizing Nagios:

  • NAGISK: A Nagios plugin compatible with NRPE (the script run on the Asterisk server). Handles threshold checks and display statuses of Peers, Konferences, Jabber buddy, Channels, Zaptel span... Official page en french - Sourceforge

  • Nagios check_calls plugin: You've possible already met with nagios-plugins-check_sip. It sends OPTIONS packet to SIP proxy and waits for response. In some cases, that is not enough. My plugin makes real calls through SIP proxy periodically using Net::SIP module.Nagios Exchange


  • Another Nagios plugin to test Asterisk via SIP using sipsak can be found here.

  • Official Nagios Plugins http://nagios.org/download/ have a plugin called contrib/check_asterisk.pl This does remote IAX2 checking as well as remote checking through the manager interface.


  • Yet another plugin to allow monitoring of concurrent calls for different protocols, or testing for IAX responsiveness can be found Here


  • Dev Nagios IAX2 plugin. Checks from remote, not the Manager Interface. Uses IAX2 POKE. Other options are there just commented out. This works but could be improved. http://odunix.org/pbx/




PacketIsland PacketSmart

Packet Island's PacketSmart http://www.packetisland.com provides an asterisk software agent, a VoIP sniffer micro-appliance and a web hosted management service that allows for detailed SIP, RTP, and call route performance monitoring for Asterisk VoIP calls. MSPs can do remote monitoring and analysis of asterisk client sites using this product.

SmartFink

SMARTFINK is The Most Powerful Asterisk Desktop Monitoring and Managing App. It is new & free ! Try it
Extension Status
Drag&Drop
Transfer
Barge
Whisper
Record
...


VoipMonitor


VoipMonitor.org is open source live network packet sniffer voip monitoring software and call recorder for linux or posix unix which analyzes SIP and RTP protocol. It can run as daemon or analyzes already captured pcap files. For each detected VoIP call voipmonitor calculates statistics about loss, burstiness, latency and predicts MOS (Meaning Opinion Score) according to ITU-T G.107 E-model so operator centers can quickly decide which calls are bad. These statistics are saved to MySQL database and each call is saved as pcap dump and optionaly to audio WAV. Free VoIPmonitor can decode only G.711 codec. Commercial version can decode from G.729/G.723/GSM/Speex/iLBC. One of unique feature of VoIPmonitor is decoding phone calls which are changing codecs during call. Synchronisation is achieved with jitterbuffer simulator so every single file is properly synchronised. Web PHP application (it is not part of open source sniffer) filters data from database and graphs latency and loss distribution. Voipmonitor also detects improperly terminated calls when BYE or OK was not seen. To accuratly transform latency to loss packets, voipmonitor simulates fixed and adaptive jitterbuffer.


Zabbix


Zabbix can monitor via SNMP.

Configure Asterisk so it includes the SNMP resource. Asterisk SNMP

Because Zabbix only can use MD5 authentication with DES encryption for SNMPv3 connections make sure you have the right "createUser" line in your snmpd.conf.
createUser asteriskUser MD5 <your password> DES

Use the following template in your Zabbix server Asterisk monitor template for Zabbix.

Zenoss


Zenoss can monitor via SNMP. Their is also a ZenPack for Asterisk monitoring:

http://www.zenoss.com

The ZenPack can be found at: http://www.zenoss.com/community/projects/zenpacks/asterisk

SNMP

The Asterisk team has added SNMP support to Asterisk 1.4.

With the Simple Network Management Protocol (SNMP), monitoring your Asterisk installation is easy. The problem is that configuring Asterisk to work with SNMP isn’t. This easy-to-follow how-to, gets you up-and-running quickly. How To: Monitor Asterisk with SNMP

Zetamonitor


Zetamonitor is a cloud monitoring solution that support also Asterisk PBX (and other servers and network devices) trough a preconfigured agent for the major Linux distribution or SNMP protocol.
Users can view online with a web browser the status of Asterisk PBX and receive mail, SMS or Apple push alarm.

http://www.zetamonitor.com



SIPNMS

You can use www.sipnms.com online service to monitor system opearion sending sip messages ( like invite or options) and it will allert you using snmp traps or email. but your asterisk should be connected to internet since it is an online serviceHow to monitor using sipnms.com










Other ideas

The manager interface sends events when a channel/span goes into alarm.
A simple app collecting this data should be easy to write

1. Installing a basic SNMP agent on each Linux box and using a central SNMP manager to monitor each node. This would give notice when a remote node became isolated from the monitoring network.

2. Rolling in Asterisk alarm logs into a syslog server or even as SNMP traps.

3. Writing a small app that simply interrogates those interfaces that are important to the operation (iax2/udp, sip/udp, etc, send a crafted pkt and interpret the returned result. Port not open is obvious, no response is obvious, incorrect response is not so obvious)

4. Test call to an outside number once per five minutes, hourly, or whatever trips your trigger (outside number only needs to respond with something that is predictable, doesn't have to be a person or company)

5. Monitoring logs looking for keywords (may take some time to identify the appropriate keywords) (e.g. Swatch or Logwatch)

It would seem logical for someone to write a res_snmp.c for asterisk that would expose a lot of asterisk's internal data. This would seem a logical step toward writing fully functional monitoring applications as well. The module would allow clients to add themselves to the list and receive traps, as well as check for the current status of various variables.




_Idea is ours and now need to write code....... please include code here ....... Nahid Hossain_




James Thompson: I'd suggest using something like Sipsak to actually do a SIP registration to verify the service is up.
You could use the Whats Up Gold send/expect to connect to Linux box, run sipsak, and then check the results.

<brainstorming>
Okay, this may be over the top, but here goes. Write an asterisk application that sends (and receives) status information to another box over the PSTN. My idea is not only to use this as a way to verify that * is running, but asa way to RELIABLY tell that a remote * box is actively accepting incoming calls. It wouldn't have to be anything complicated, just a heartbeat and some basic details to let the caller know that "yes, I'm alive and acceptingcalls over this line". Simplified protocol:

1) Monitoring box calls up and says (in DTMF):
  1. <my CallerID>
  2. <extension I am trying to reach>
  3. <I'm a machine, so reply in DTMF instead of voice>
  4. <the secret code is>#

2) The remote box says:
  1. <your CallerID>#<Your DNIS>
  2. <yes I will accept a call to thatnumber>#

3) Monitoring box acknowledges and disconnects

4) Remote box disconnects

5) Monitoring box decides whether it likes the answers it received and performs actions accordingly.
</brainstorming>
Hint: Do a "show application AlarmReceiver" and you are very close to what you brainstormed... I think...


TJH- (nicheware)
I've had some problems with peers losing their registrations, usually due to crappy ISP's with DNS problems.
This script tests if peers are up. (registered) I call it from a cron job. If a peer loses it's registration I receive an e-mail.

#!/bin/bash
for peername in peer_1 peer_2 peer_n
do
# note, next lines are "command substitution" - use backticks ` not quotations ' as appropriate
otpt=`/usr/sbin/asterisk -rx 'iax2 show peers' |grep $peername |grep Unspecified`
if [ -n "$otpt" ]; then
echo $otpt | mail -s "Asterisk peer: \"`echo -n $peername `\" has a problem." "you@yourdomain.com"
fi
done

Next I want to grab peers previous IP addresses and include those along with the message that gets sent when they go
down. Sometimes if their asterisk is just hosed they will still have the same IP- so I can ssh in and fix it. Also it would be

nice to send either an electronic page or even a call file to alert me of problems - although I don't want the phone ringing
at 4AM.

-TJH

HAL

grep has problems with not printable chars, so you should use "strings -a" in your script.
otpt=`/usr/sbin/asterisk -rx 'iax2 show peers' |strings -a| grep $peername |grep Unspecified`

HAL


Another note from a user on a large scale (S McGowan, 2005)

We're using Zabbix to run local UserParameter commands to monitor Asterisk. We use asterisk -rx commands to output what we want and then return the result to the Zabbix monitoring server. There's been small problems with too many remote connections at once crashing asterisk (anyone get that close to fixed?), and some problems with returning values because of grep, awk, sed, and/or wc not returning valid numeric values, but overall the idea is solid.


See also:



Now that you've built Asterisk around your entire life it might be a good idea to make sure it stays up!

Argus

The current version of Argus has builtin support for monitoring SIP and IAX2, as well as support for querying the asterisk manager interface. Argus can be configured to notify someone if a PRI goes down, or if asterisk goes off to la-la-land (etc).


Cacti

Cacti is a general purpose monitoring application, one user has developed an Asterisk plugin. More information on this plugin can be found here.

Update 2007


We at ITConnection.ru are happy to post a Cacti script for Asterisk IP-PBX statistics. It's based on Python, works over Asterisk manager API connection and provides cute and comprehensive graphs. You can download Cacti's plug-in from this page: http://forums.cacti.net/viewtopic.php?p=111317

Cognito

Cognito's flagship monitoring offering, Precognito supports Asterisk monitoring out of the box, with metrics on active calls, channels as well as real-time alerts when there are performance issues with the Asterisk application, or the underlying OS. On-demand and scheduled reports are also available, and Cognito supports its customers with certified Linux engineers who help customers with deployments and maintenance.

easySysAdmin

easySysAdmin easySysAdmin is an automated support/security platform, designed to save your engineer's time and prevent hacking attempts. Specifically of interest to Asterisk users is the monitoring of SIP registrations, and automatic blocking of repeated failed attempts. In addition, "bad" IP addresses are shared via the service so other users can block them pre-emptively. For more information and the free trial visit our web site.

Xymon

Xymon, previously known as Xymon, is a Big Brother compatible network monitor.

Humbug Labs

Humbug Labs is a carrier-class analytics and fraud detection system for soft-switches and PBX systems.

MRTG

  • A script and instructions on how to setup MRTG for graphing asterisk activity can be find here


Munin

  • Scripts for graphing Asterisk activity with Munin can be found here
  • PyMunin - Multigraph Munin Plugins in Python - PyMunin includes a Multigraph Munin Plugin for Asterisk that implements the following graphs: asterisk_calls, asterisk_channels, asterisk_peers_sip, asterisk_peers_iax2, asterisk_voip_codecs, asterisk_conferences, asterisk_voicemail, asterisk_trunks.

Nagios

Notes documenting a simple Asterisk monitoring implementation utilizing Nagios:

  • NAGISK: A Nagios plugin compatible with NRPE (the script run on the Asterisk server). Handles threshold checks and display statuses of Peers, Konferences, Jabber buddy, Channels, Zaptel span... Official page en french - Sourceforge

  • Nagios check_calls plugin: You've possible already met with nagios-plugins-check_sip. It sends OPTIONS packet to SIP proxy and waits for response. In some cases, that is not enough. My plugin makes real calls through SIP proxy periodically using Net::SIP module.Nagios Exchange


  • Another Nagios plugin to test Asterisk via SIP using sipsak can be found here.

  • Official Nagios Plugins http://nagios.org/download/ have a plugin called contrib/check_asterisk.pl This does remote IAX2 checking as well as remote checking through the manager interface.


  • Yet another plugin to allow monitoring of concurrent calls for different protocols, or testing for IAX responsiveness can be found Here


  • Dev Nagios IAX2 plugin. Checks from remote, not the Manager Interface. Uses IAX2 POKE. Other options are there just commented out. This works but could be improved. http://odunix.org/pbx/




PacketIsland PacketSmart

Packet Island's PacketSmart http://www.packetisland.com provides an asterisk software agent, a VoIP sniffer micro-appliance and a web hosted management service that allows for detailed SIP, RTP, and call route performance monitoring for Asterisk VoIP calls. MSPs can do remote monitoring and analysis of asterisk client sites using this product.

SmartFink

SMARTFINK is The Most Powerful Asterisk Desktop Monitoring and Managing App. It is new & free ! Try it
Extension Status
Drag&Drop
Transfer
Barge
Whisper
Record
...


VoipMonitor


VoipMonitor.org is open source live network packet sniffer voip monitoring software and call recorder for linux or posix unix which analyzes SIP and RTP protocol. It can run as daemon or analyzes already captured pcap files. For each detected VoIP call voipmonitor calculates statistics about loss, burstiness, latency and predicts MOS (Meaning Opinion Score) according to ITU-T G.107 E-model so operator centers can quickly decide which calls are bad. These statistics are saved to MySQL database and each call is saved as pcap dump and optionaly to audio WAV. Free VoIPmonitor can decode only G.711 codec. Commercial version can decode from G.729/G.723/GSM/Speex/iLBC. One of unique feature of VoIPmonitor is decoding phone calls which are changing codecs during call. Synchronisation is achieved with jitterbuffer simulator so every single file is properly synchronised. Web PHP application (it is not part of open source sniffer) filters data from database and graphs latency and loss distribution. Voipmonitor also detects improperly terminated calls when BYE or OK was not seen. To accuratly transform latency to loss packets, voipmonitor simulates fixed and adaptive jitterbuffer.


Zabbix


Zabbix can monitor via SNMP.

Configure Asterisk so it includes the SNMP resource. Asterisk SNMP

Because Zabbix only can use MD5 authentication with DES encryption for SNMPv3 connections make sure you have the right "createUser" line in your snmpd.conf.
createUser asteriskUser MD5 <your password> DES

Use the following template in your Zabbix server Asterisk monitor template for Zabbix.

Zenoss


Zenoss can monitor via SNMP. Their is also a ZenPack for Asterisk monitoring:

http://www.zenoss.com

The ZenPack can be found at: http://www.zenoss.com/community/projects/zenpacks/asterisk

SNMP

The Asterisk team has added SNMP support to Asterisk 1.4.

With the Simple Network Management Protocol (SNMP), monitoring your Asterisk installation is easy. The problem is that configuring Asterisk to work with SNMP isn’t. This easy-to-follow how-to, gets you up-and-running quickly. How To: Monitor Asterisk with SNMP

Zetamonitor


Zetamonitor is a cloud monitoring solution that support also Asterisk PBX (and other servers and network devices) trough a preconfigured agent for the major Linux distribution or SNMP protocol.
Users can view online with a web browser the status of Asterisk PBX and receive mail, SMS or Apple push alarm.

http://www.zetamonitor.com



SIPNMS

You can use www.sipnms.com online service to monitor system opearion sending sip messages ( like invite or options) and it will allert you using snmp traps or email. but your asterisk should be connected to internet since it is an online serviceHow to monitor using sipnms.com










Other ideas

The manager interface sends events when a channel/span goes into alarm.
A simple app collecting this data should be easy to write

1. Installing a basic SNMP agent on each Linux box and using a central SNMP manager to monitor each node. This would give notice when a remote node became isolated from the monitoring network.

2. Rolling in Asterisk alarm logs into a syslog server or even as SNMP traps.

3. Writing a small app that simply interrogates those interfaces that are important to the operation (iax2/udp, sip/udp, etc, send a crafted pkt and interpret the returned result. Port not open is obvious, no response is obvious, incorrect response is not so obvious)

4. Test call to an outside number once per five minutes, hourly, or whatever trips your trigger (outside number only needs to respond with something that is predictable, doesn't have to be a person or company)

5. Monitoring logs looking for keywords (may take some time to identify the appropriate keywords) (e.g. Swatch or Logwatch)

It would seem logical for someone to write a res_snmp.c for asterisk that would expose a lot of asterisk's internal data. This would seem a logical step toward writing fully functional monitoring applications as well. The module would allow clients to add themselves to the list and receive traps, as well as check for the current status of various variables.




_Idea is ours and now need to write code....... please include code here ....... Nahid Hossain_




James Thompson: I'd suggest using something like Sipsak to actually do a SIP registration to verify the service is up.
You could use the Whats Up Gold send/expect to connect to Linux box, run sipsak, and then check the results.

<brainstorming>
Okay, this may be over the top, but here goes. Write an asterisk application that sends (and receives) status information to another box over the PSTN. My idea is not only to use this as a way to verify that * is running, but asa way to RELIABLY tell that a remote * box is actively accepting incoming calls. It wouldn't have to be anything complicated, just a heartbeat and some basic details to let the caller know that "yes, I'm alive and acceptingcalls over this line". Simplified protocol:

1) Monitoring box calls up and says (in DTMF):
  1. <my CallerID>
  2. <extension I am trying to reach>
  3. <I'm a machine, so reply in DTMF instead of voice>
  4. <the secret code is>#

2) The remote box says:
  1. <your CallerID>#<Your DNIS>
  2. <yes I will accept a call to thatnumber>#

3) Monitoring box acknowledges and disconnects

4) Remote box disconnects

5) Monitoring box decides whether it likes the answers it received and performs actions accordingly.
</brainstorming>
Hint: Do a "show application AlarmReceiver" and you are very close to what you brainstormed... I think...


TJH- (nicheware)
I've had some problems with peers losing their registrations, usually due to crappy ISP's with DNS problems.
This script tests if peers are up. (registered) I call it from a cron job. If a peer loses it's registration I receive an e-mail.

#!/bin/bash
for peername in peer_1 peer_2 peer_n
do
# note, next lines are "command substitution" - use backticks ` not quotations ' as appropriate
otpt=`/usr/sbin/asterisk -rx 'iax2 show peers' |grep $peername |grep Unspecified`
if [ -n "$otpt" ]; then
echo $otpt | mail -s "Asterisk peer: \"`echo -n $peername `\" has a problem." "you@yourdomain.com"
fi
done

Next I want to grab peers previous IP addresses and include those along with the message that gets sent when they go
down. Sometimes if their asterisk is just hosed they will still have the same IP- so I can ssh in and fix it. Also it would be

nice to send either an electronic page or even a call file to alert me of problems - although I don't want the phone ringing
at 4AM.

-TJH

HAL

grep has problems with not printable chars, so you should use "strings -a" in your script.
otpt=`/usr/sbin/asterisk -rx 'iax2 show peers' |strings -a| grep $peername |grep Unspecified`

HAL


Another note from a user on a large scale (S McGowan, 2005)

We're using Zabbix to run local UserParameter commands to monitor Asterisk. We use asterisk -rx commands to output what we want and then return the result to the Zabbix monitoring server. There's been small problems with too many remote connections at once crashing asterisk (anyone get that close to fixed?), and some problems with returning values because of grep, awk, sed, and/or wc not returning valid numeric values, but overall the idea is solid.


See also:



Created by: yawns, Last modification: Mon 27 of May, 2013 (10:50 UTC) by voipiran
Please update this page with new information, just login and click on the "Edit" or "Discussion" tab. Get a free login here: Register Thanks! - Find us on Google+