Asterisk monitoring

NetXMS can be used to monitor health and performance of Asterisk PBX. All monitoring data collected and provided by subagent asterisk.nsm. One agent can collect data from multiple Asterisk systems.

Configuration

All Asterisk systems should be defined in subagent configuration. For simplified setup for single system monitoring subagent supports “local” system. Configuration for local system can be defined in Asterisk section of agent configuration file. For each additional system new section should be created in configuration file named Asterisk/Systems/SystemName (SystemName should be replaced with unique name). Each section can have the following parameters:

Parameter Description Default value
Hostname DNS name or IP address of Asterisk PBX 127.0.0.1
Login Login name root
Password Password empty
Port TCP port number for AMI connection 5038

It is also possible to configure subagent to periodically perform SIP registration tests. Each test should be configured in separate configuration section named Asterisk/SIPRegistrationTests/TestName for local system and Asterisk/SYstems/SystemName/SIPRegistrationTests/TestName for other systems. SystemName and TestName should be replaced with unique system and test names respecively. Each test configuration section can have the following parameters:

Parameter Description Default value
Domain Domain name used for registration empty
Interval Check interval in seconds 300
Login SIP login name netxms
Password SIP password netxms
Proxy SIP proxy sip:Asterisk IP address

Configuration Examples

Local system without SIP tests:

MasterServers = netxms.demo
SubAgent = asterisk.nsm

[Asterisk]
Login = root
Password = password1

Local system with two SIP tests:

MasterServers = netxms.demo
SubAgent = asterisk.nsm

[Asterisk]
Login = root
Password = password1

[Asterisk/SIPRegistrationTests/104]
Login = 104
Password = 12345
Domain = demo.netxms

[Asterisk/SIPRegistrationTests/115]
Login = 115
Password = 12345
Domain = demo.netxms
Interval = 60

Local system and remote system (named Remote1) on address 10.0.0.1 with one SIP test each:

MasterServers = netxms.demo
SubAgent = asterisk.nsm

[Asterisk]
Login = root
Password = password1

[Asterisk/SIPRegistrationTests/104]
Login = 104
Password = 12345
Domain = demo.netxms

[Asterisk/Systems/Remote1]
Hostname = 10.0.0.1
Login = root
Password = password1

[Asterisk/Systems/Remote1/SIPRegistrationTests/120]
Login = 120
Password = 12345
Domain = remote.netxms

Metrics

Parameters

All parameters accept system name as first argument. Name for default local system is LOCAL. If system name is omited local system is assumed. If system name is the only argument braces can be omited as well.

Metric Type Meaning
Asterisk.AMI.Status(system) Integer AMI connection status (1 if AMI session is ready, 0 if not)
Asterisk.AMI.Version(system) Integer AMI version
Asterisk.Channels.Active(system) Integer Number of active channels
Asterisk.Channels.Busy(system) Integer Number of busy channels
Asterisk.Channels.Dialing(system) Integer Number of dialing channels
Asterisk.Channels.OffHook(system) Integer Number of off-hook channels
Asterisk.Channels.Reserved(system) Integer Number of reserved channels
Asterisk.Channels.Ringing(system) Integer Number of ringing channels
Asterisk.Channels.Up(system) Integer Number of up channels
Asterisk.Channels.CurrentCalls(system) Integer Number of currenty active calls
Asterisk.Events.CallBarred(system) Integer Global cumulative counter of “call barred” events
Asterisk.Events.CallRejected(system) Integer Global cumulative counter of “call rejected” events
Asterisk.Events.ChannelUnavailable(system) Integer Global cumulative counter of “channel unavailable” events
Asterisk.Events.Congestion(system) Integer Global cumulative counter of “congestion” events
Asterisk.Events.NoRoute(system) Integer Global cumulative counter of “no route” events
Asterisk.Events.SubscriberAbsent(system) Integer Global cumulative counter of “subscriber absent” events
Asterisk.Peer.Events.CallBarred(system, peer) Integer Cumulative counter of “call barred” events for given peer
Asterisk.Peer.Events.CallRejected(system, peer) Integer Cumulative counter of “call rejected” events for given peer
Asterisk.Peer.Events.ChannelUnavailable(system, peer) Integer Cumulative counter of “channel unavailable” events for given peer
Asterisk.Peer.Events.Congestion(system, peer) Integer Cumulative counter of “congestion” events for given peer
Asterisk.Peer.Events.NoRoute(system, peer) Integer Cumulative counter of “no route” events for given peer
Asterisk.Peer.Events.SubscriberAbsent(system, peer) Integer Cumulative counter of “subscriber absent” events for given peer
Asterisk.Peer.RTCP.AverageJitter(system, peer) Integer Average jitter for given peer in milliseconds (moving average over last 180 measurements)
Asterisk.Peer.RTCP.AveragePacketLoss(system, peer) Integer Average packet loss for given peer (moving average over last 180 measurements)
Asterisk.Peer.RTCP.AverageRTT(system, peer) Integer Average round trip time in milliseconds for given peer (moving average over last 180 measurements)
Asterisk.Peer.RTCP.LastJitter(system, peer) Integer Last reported jitter for given peer in milliseconds
Asterisk.Peer.RTCP.LastPacketLoss(system, peer) Integer Last reported packet loss for given peer
Asterisk.Peer.RTCP.LastRTT(system, peer) Integer Last reported round trip time in milliseconds for given peer
Asterisk.Peer.RTCP.MaxJitter(system, peer) Integer Maximum reported jitter for given peer in milliseconds
Asterisk.Peer.RTCP.MaxPacketLoss(system, peer) Integer Maximum reported packet loss for given peer
Asterisk.Peer.RTCP.MaxRTT(system, peer) Integer Maximum reported round trip time in milliseconds for given peer
Asterisk.Peer.RTCP.MinJitter(system, peer) Integer Minimum reported jitter for given peer in milliseconds
Asterisk.Peer.RTCP.MinPacketLoss(system, peer) Integer Minimum reported packet loss for given peer
Asterisk.Peer.RTCP.MinRTT(system, peer) Integer Minimum reported round trip time in milliseconds for given peer
Asterisk.SIP.Peer.Details(system, peer, tag) String Value of specific tag from SIPshowpeer AMI message
Asterisk.SIP.Peer.IPAddress(system, peer) String SIP peer IP address
Asterisk.SIP.Peer.Status(system, peer) String SIP peer status
Asterisk.SIP.Peer.Type(system, peer) String SIP peer type
Asterisk.SIP.Peer.UserAgent(system, peer) String SIP peer user agent information
Asterisk.SIP.Peer.VoiceMailbox(system, peer) String SIP peer voice mailbox information
Asterisk.SIP.Peers.Connected(system) Integer Number of connected SIP peers
Asterisk.SIP.Peers.Total(system) Integer Total count of configured SIP peers
Asterisk.SIP.Peers.Unknown(system) Integer Number of SIP peers in unknown state
Asterisk.SIP.Peers.Unmonitored(system) Integer Number of unmonitored SIP peers
Asterisk.SIP.Peers.Unreachable(system) Integer Number of unreachable SIP peers
Asterisk.SIP.RegistrationTest.ElapsedTime(system, test) Integer Elapsed time for last run of given registration test
Asterisk.SIP.RegistrationTest.Status(system, test) Integer Status of last run of given registration test
Asterisk.SIP.RegistrationTest.Timestamp(system, test) Integer Timestamp last run of given registration test as UNIX time (number of seconds since 1.1.1970 00:00:00 UTC)
Asterisk.SIP.TestRegistration(system, login, password, domain) Integer Status of ad-hoc registration
Asterisk.TaskProcessor.HighWatermark(system, processor) Integer High watermark for given task processor
Asterisk.TaskProcessor.LowWatermark(system, processor) Integer Low watermark for given task processor
Asterisk.TaskProcessor.MaxDepth(system, processor) Integer Maximum queue depth for given task processor
Asterisk.TaskProcessor.Processed(system, processor) Integer Number of processed tasks for given task processor
Asterisk.TaskProcessor.Queued(system, processor) Integer Number of queued tasks for given task processor
Asterisk.Version(system) String Asterisk version

Tables

All tables accept system name as first argument. Name for default local system is LOCAL. If system name is omited local system is assumed. If system name is the only argument braces can be omited as well.

Metric Description
Asterisk.Channels(system) Active channels
Asterisk.CommandOutput(system, command) Output of given Asterisk console command
Asterisk.SIP.Peers(system) SIP peers
Asterisk.SIP.RegistrationTests(system) Configured SIP registration tests
Asterisk.TaskProcessors(system) Task processors

Lists

All lists accept system name as first argument. Name for default local system is LOCAL. If system name is omited local system is assumed. If system name is the only argument braces can be omited as well.

Metric Description
Asterisk.Channels(system) Active channels
Asterisk.CommandOutput(system, command) Output of given Asterisk console command
Asterisk.SIP.Peers(system) SIP peers
Asterisk.SIP.RegistrationTests(system) Configured SIP registration tests
Asterisk.Systems Configured Asterisk systems
Asterisk.TaskProcessors(system) Task processors