![Page 2: OSMC 2014: Monitoring VoIP Systems | Sebastian Damm](https://reader034.vdocuments.net/reader034/viewer/2022052601/559452951a28abce4f8b46b0/html5/thumbnails/2.jpg)
Who we are, what we do• Düsseldorf based VoIP provider (since 2004) • active in Germany and UK • Private and Business customers • VoIP and Mobile products • some 100k users • almost 100 million minutes each month
![Page 3: OSMC 2014: Monitoring VoIP Systems | Sebastian Damm](https://reader034.vdocuments.net/reader034/viewer/2022052601/559452951a28abce4f8b46b0/html5/thumbnails/3.jpg)
VoIP systems monitored• Asterisk (~100 servers) • Kamailio (12 servers) • Yate (12 servers) • RTP Proxy (12 servers) • ASR (http://en.wikipedia.org/wiki/Answer-seizure_ratio)
![Page 4: OSMC 2014: Monitoring VoIP Systems | Sebastian Damm](https://reader034.vdocuments.net/reader034/viewer/2022052601/559452951a28abce4f8b46b0/html5/thumbnails/4.jpg)
Our Monitoring systems• 2 Icinga servers
• almost 1k hosts • more than 5k services
• Cacti • Observium for network monitoring
![Page 5: OSMC 2014: Monitoring VoIP Systems | Sebastian Damm](https://reader034.vdocuments.net/reader034/viewer/2022052601/559452951a28abce4f8b46b0/html5/thumbnails/5.jpg)
Monitoring SIP• simple Perl script • UDP capable (TCP and TLS coming soon) • resolves SRV DNS records, checks all targets • Watch the response code!
• different systems answer differently
![Page 6: OSMC 2014: Monitoring VoIP Systems | Sebastian Damm](https://reader034.vdocuments.net/reader034/viewer/2022052601/559452951a28abce4f8b46b0/html5/thumbnails/6.jpg)
Monitoring Asterisk• Base monitoring (disk, memory, load) • SIP • Remote Manager
• Asterisk Version, Config version, G729 status, Channels, Uptime
• Open Files (SNMP extension) • IPtables status (SNMP extension)
![Page 7: OSMC 2014: Monitoring VoIP Systems | Sebastian Damm](https://reader034.vdocuments.net/reader034/viewer/2022052601/559452951a28abce4f8b46b0/html5/thumbnails/7.jpg)
Monitoring Asterisk
![Page 8: OSMC 2014: Monitoring VoIP Systems | Sebastian Damm](https://reader034.vdocuments.net/reader034/viewer/2022052601/559452951a28abce4f8b46b0/html5/thumbnails/8.jpg)
check_manager.pl• first we called it separately for each service
• high load on the monitoring system • now: one script fills all services
• only the MANAGER service is active, all others are passive (with fallback command)
• can be called as active check for each service
![Page 9: OSMC 2014: Monitoring VoIP Systems | Sebastian Damm](https://reader034.vdocuments.net/reader034/viewer/2022052601/559452951a28abce4f8b46b0/html5/thumbnails/9.jpg)
check_manager.plsub push_passive { my ($service,$state,$msg) = @_; my $timestamp = time;
eval { open CMD, ">>", $cmdfile or die $!; }; if ($@) { print "Could not open Command file!\n" if (defined($opts_verbose)); return; }
my $cmdmsg = sprintf("[%s] PROCESS_SERVICE_CHECK_RESULT;%s;%s;%s;%s\n", $timestamp,$opts_host,$service,$ERRORS{$state},$msg);
print $cmdmsg if (defined($opts_verbose)); print CMD $cmdmsg;
close CMD;}
![Page 10: OSMC 2014: Monitoring VoIP Systems | Sebastian Damm](https://reader034.vdocuments.net/reader034/viewer/2022052601/559452951a28abce4f8b46b0/html5/thumbnails/10.jpg)
Integrating into Icinga• Service Definition
Active Check Passive Checkdefine service { service_description MANAGER hostgroup_name sipgw use local-service check_command check_manager}
define service { service_description AST_UPTIME hostgroup_name sipgw use local-service check_command check_manager_active!uptime is_volatile 1 active_checks_enabled 0 passive_checks_enabled 1 check_freshness 1 max_check_attempts 1 freshness_threshold 600}
![Page 11: OSMC 2014: Monitoring VoIP Systems | Sebastian Damm](https://reader034.vdocuments.net/reader034/viewer/2022052601/559452951a28abce4f8b46b0/html5/thumbnails/11.jpg)
Integrating into Icinga• Command Definition
Active Check Passive Check (Fallback)
define command{ command_name check_manager command_line $USER32$/check_manager \ -H $HOSTNAME$ -I $HOSTADDRESS$ \ -u $USER7$ -p $USER8$ \ -m 127.0.0.1:11211 \ -s SIPCHAN --g729}
define command{ command_name check_manager_active command_line $USER32$/check_manager \ -H $HOSTNAME$ -I $HOSTADDRESS$ \ -u $USER7$ -p $USER8$ \ -m 127.0.0.1:11211 \ -a $ARG1$}
![Page 12: OSMC 2014: Monitoring VoIP Systems | Sebastian Damm](https://reader034.vdocuments.net/reader034/viewer/2022052601/559452951a28abce4f8b46b0/html5/thumbnails/12.jpg)
Check Open Files
• consists of two scripts on the monitored system • one script run by cron every minute • other script triggered by SNMPd to read those files
![Page 13: OSMC 2014: Monitoring VoIP Systems | Sebastian Damm](https://reader034.vdocuments.net/reader034/viewer/2022052601/559452951a28abce4f8b46b0/html5/thumbnails/13.jpg)
Monitoring Kamailio• SIP • some variables through XMLRPC calls
• Memory • TCP Connections • Version
![Page 14: OSMC 2014: Monitoring VoIP Systems | Sebastian Damm](https://reader034.vdocuments.net/reader034/viewer/2022052601/559452951a28abce4f8b46b0/html5/thumbnails/14.jpg)
Monitoring Kamailio
![Page 15: OSMC 2014: Monitoring VoIP Systems | Sebastian Damm](https://reader034.vdocuments.net/reader034/viewer/2022052601/559452951a28abce4f8b46b0/html5/thumbnails/15.jpg)
XMLRPC in Kamailio1. Load the moduleloadmodule "xmlrpc.so"modparam("xmlrpc", "route", "XMLRPC")
2. Handle XMLRPC callsroute["XMLRPC"] {
if(src_ip == 1.2.3.4) { # only answer to Monitoringset_reply_no_connect(); # optionaldispatch_rpc();
} else {xmlrpc_reply("403", "Forbidden");
}}
![Page 16: OSMC 2014: Monitoring VoIP Systems | Sebastian Damm](https://reader034.vdocuments.net/reader034/viewer/2022052601/559452951a28abce4f8b46b0/html5/thumbnails/16.jpg)
Querying Kamailiosub call_rpc { my ($method,@rpc_params) = @_; my (%r,$k);
my($rpc_call) = XMLRPC::Lite -> proxy("http://$opts_host:$opts_port") -> call($method, @rpc_params);
my $res= $rpc_call->result;
if (!defined $res){ print "Error querying Kamailio\n"; $res=$rpc_call->fault; %r=%{$res}; foreach $k (sort keys %r) { print("\t$k: $r{$k}\n"); } exit $ERRORS{'UNKNOWN'}; } else { return($res); }}
![Page 17: OSMC 2014: Monitoring VoIP Systems | Sebastian Damm](https://reader034.vdocuments.net/reader034/viewer/2022052601/559452951a28abce4f8b46b0/html5/thumbnails/17.jpg)
Monitoring Yate• SIP • everything else through SNMP
• SIGTRAN links (beware: element order can change!) • Uptime • Version • Channels • …
![Page 18: OSMC 2014: Monitoring VoIP Systems | Sebastian Damm](https://reader034.vdocuments.net/reader034/viewer/2022052601/559452951a28abce4f8b46b0/html5/thumbnails/18.jpg)
Monitoring Yate
![Page 19: OSMC 2014: Monitoring VoIP Systems | Sebastian Damm](https://reader034.vdocuments.net/reader034/viewer/2022052601/559452951a28abce4f8b46b0/html5/thumbnails/19.jpg)
Monitoring ASR
• percentage of answered calls / total calls • additionally: length of answered calls
• per Gateway, Carrier, Destination, Product • in Yate: configurable and readable via SNMP
![Page 20: OSMC 2014: Monitoring VoIP Systems | Sebastian Damm](https://reader034.vdocuments.net/reader034/viewer/2022052601/559452951a28abce4f8b46b0/html5/thumbnails/20.jpg)
Monitoring the rest• SIP connectivity to partners • Function tests (emergency calls, features) • ENUM • User Location • RTP Proxies • STUN • iptables Connection Tracking
![Page 21: OSMC 2014: Monitoring VoIP Systems | Sebastian Damm](https://reader034.vdocuments.net/reader034/viewer/2022052601/559452951a28abce4f8b46b0/html5/thumbnails/21.jpg)
That’s itDownloads available at: http://sipg.at/osmc2014
And: We hire, too! http://www.sipgate.de/jobs/
![Page 22: OSMC 2014: Monitoring VoIP Systems | Sebastian Damm](https://reader034.vdocuments.net/reader034/viewer/2022052601/559452951a28abce4f8b46b0/html5/thumbnails/22.jpg)
Thank you!