SlideShare a Scribd company logo
1 of 22
Download to read offline
Monitoring VoIP Systems 
Sebastian Damm 
damm@sipgate.de
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
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)
Our Monitoring systems 
• 2 Icinga servers 
• almost 1k hosts 
• more than 5k services 
• Cacti 
• Observium for network monitoring
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
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)
Monitoring Asterisk
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
check_manager.pl 
sub 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;%sn", 
$timestamp,$opts_host,$service,$ERRORS{$state},$msg); 
print $cmdmsg if (defined($opts_verbose)); 
print CMD $cmdmsg; 
close CMD; 
}
Integrating into Icinga 
• Service Definition 
Active Check Passive Check 
define 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 
}
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$ 
}
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
Monitoring Kamailio 
• SIP 
• some variables through XMLRPC calls 
• Memory 
• TCP Connections 
• Version
Monitoring Kamailio
XMLRPC in Kamailio 
1. Load the module 
loadmodule "xmlrpc.so" 
modparam("xmlrpc", "route", "XMLRPC") 
2. Handle XMLRPC calls 
route["XMLRPC"] { 
if(src_ip == 1.2.3.4) { # only answer to Monitoring 
set_reply_no_connect(); # optional 
dispatch_rpc(); 
} else { 
xmlrpc_reply("403", "Forbidden"); 
} 
}
Querying Kamailio 
sub 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 Kamailion"; 
$res=$rpc_call->fault; 
%r=%{$res}; 
foreach $k (sort keys %r) { 
print("t$k: $r{$k}n"); 
} 
exit $ERRORS{'UNKNOWN'}; 
} else { 
return($res); 
} 
}
Monitoring Yate 
• SIP 
• everything else through SNMP 
• SIGTRAN links (beware: element order can change!) 
• Uptime 
• Version 
• Channels 
• …
Monitoring Yate
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
Monitoring the rest 
• SIP connectivity to partners 
• Function tests (emergency calls, features) 
• ENUM 
• User Location 
• RTP Proxies 
• STUN 
• iptables Connection Tracking
That’s it 
Downloads available at: http://sipg.at/osmc2014 
And: We hire, too! 
http://www.sipgate.de/jobs/
Thank you!

More Related Content

What's hot

Node.js streaming csv downloads proxy
Node.js streaming csv downloads proxyNode.js streaming csv downloads proxy
Node.js streaming csv downloads proxyIsmael Celis
 
Lua tech talk
Lua tech talkLua tech talk
Lua tech talkLocaweb
 
MessagePack Rakuten Technology Conference 2010
MessagePack Rakuten Technology Conference 2010MessagePack Rakuten Technology Conference 2010
MessagePack Rakuten Technology Conference 2010Sadayuki Furuhashi
 
Roll Your Own API Management Platform with nginx and Lua
Roll Your Own API Management Platform with nginx and LuaRoll Your Own API Management Platform with nginx and Lua
Roll Your Own API Management Platform with nginx and LuaJon Moore
 
Rihards Olups - Encrypting Daemon Traffic With Zabbix 3.0
Rihards Olups - Encrypting Daemon Traffic With Zabbix 3.0Rihards Olups - Encrypting Daemon Traffic With Zabbix 3.0
Rihards Olups - Encrypting Daemon Traffic With Zabbix 3.0Zabbix
 
Securing Prometheus exporters using HashiCorp Vault
Securing Prometheus exporters using HashiCorp VaultSecuring Prometheus exporters using HashiCorp Vault
Securing Prometheus exporters using HashiCorp VaultBram Vogelaar
 
Study2study#4 nginx conf_1_24
Study2study#4 nginx conf_1_24Study2study#4 nginx conf_1_24
Study2study#4 nginx conf_1_24Naoya Nakazawa
 
Umleitung: a tiny mochiweb/CouchDB app
Umleitung: a tiny mochiweb/CouchDB appUmleitung: a tiny mochiweb/CouchDB app
Umleitung: a tiny mochiweb/CouchDB appLenz Gschwendtner
 
Using Grails to power your electric car
Using Grails to power your electric carUsing Grails to power your electric car
Using Grails to power your electric carMarco Pas
 
Cql – cassandra query language
Cql – cassandra query languageCql – cassandra query language
Cql – cassandra query languageCourtney Robinson
 
Devel::NYTProf 2009-07 (OUTDATED, see 201008)
Devel::NYTProf 2009-07 (OUTDATED, see 201008)Devel::NYTProf 2009-07 (OUTDATED, see 201008)
Devel::NYTProf 2009-07 (OUTDATED, see 201008)Tim Bunce
 
CQL: SQL In Cassandra
CQL: SQL In CassandraCQL: SQL In Cassandra
CQL: SQL In CassandraEric Evans
 
Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
Using Node.js to  Build Great  Streaming Services - HTML5 Dev ConfUsing Node.js to  Build Great  Streaming Services - HTML5 Dev Conf
Using Node.js to Build Great Streaming Services - HTML5 Dev ConfTom Croucher
 
Information security programming in ruby
Information security programming in rubyInformation security programming in ruby
Information security programming in rubyHiroshi Nakamura
 
Service discovery like a pro (presented at reversimX)
Service discovery like a pro (presented at reversimX)Service discovery like a pro (presented at reversimX)
Service discovery like a pro (presented at reversimX)Eran Harel
 
Observability with Consul Connect
Observability with Consul ConnectObservability with Consul Connect
Observability with Consul ConnectBram Vogelaar
 
Time tested php with libtimemachine
Time tested php with libtimemachineTime tested php with libtimemachine
Time tested php with libtimemachineNick Galbreath
 
Job Queue in Golang
Job Queue in GolangJob Queue in Golang
Job Queue in GolangBo-Yi Wu
 
Bootstrapping multidc observability stack
Bootstrapping multidc observability stackBootstrapping multidc observability stack
Bootstrapping multidc observability stackBram Vogelaar
 
Nmap Scripting Engine and http-enumeration
Nmap Scripting Engine and http-enumerationNmap Scripting Engine and http-enumeration
Nmap Scripting Engine and http-enumerationRobert Rowley
 

What's hot (20)

Node.js streaming csv downloads proxy
Node.js streaming csv downloads proxyNode.js streaming csv downloads proxy
Node.js streaming csv downloads proxy
 
Lua tech talk
Lua tech talkLua tech talk
Lua tech talk
 
MessagePack Rakuten Technology Conference 2010
MessagePack Rakuten Technology Conference 2010MessagePack Rakuten Technology Conference 2010
MessagePack Rakuten Technology Conference 2010
 
Roll Your Own API Management Platform with nginx and Lua
Roll Your Own API Management Platform with nginx and LuaRoll Your Own API Management Platform with nginx and Lua
Roll Your Own API Management Platform with nginx and Lua
 
Rihards Olups - Encrypting Daemon Traffic With Zabbix 3.0
Rihards Olups - Encrypting Daemon Traffic With Zabbix 3.0Rihards Olups - Encrypting Daemon Traffic With Zabbix 3.0
Rihards Olups - Encrypting Daemon Traffic With Zabbix 3.0
 
Securing Prometheus exporters using HashiCorp Vault
Securing Prometheus exporters using HashiCorp VaultSecuring Prometheus exporters using HashiCorp Vault
Securing Prometheus exporters using HashiCorp Vault
 
Study2study#4 nginx conf_1_24
Study2study#4 nginx conf_1_24Study2study#4 nginx conf_1_24
Study2study#4 nginx conf_1_24
 
Umleitung: a tiny mochiweb/CouchDB app
Umleitung: a tiny mochiweb/CouchDB appUmleitung: a tiny mochiweb/CouchDB app
Umleitung: a tiny mochiweb/CouchDB app
 
Using Grails to power your electric car
Using Grails to power your electric carUsing Grails to power your electric car
Using Grails to power your electric car
 
Cql – cassandra query language
Cql – cassandra query languageCql – cassandra query language
Cql – cassandra query language
 
Devel::NYTProf 2009-07 (OUTDATED, see 201008)
Devel::NYTProf 2009-07 (OUTDATED, see 201008)Devel::NYTProf 2009-07 (OUTDATED, see 201008)
Devel::NYTProf 2009-07 (OUTDATED, see 201008)
 
CQL: SQL In Cassandra
CQL: SQL In CassandraCQL: SQL In Cassandra
CQL: SQL In Cassandra
 
Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
Using Node.js to  Build Great  Streaming Services - HTML5 Dev ConfUsing Node.js to  Build Great  Streaming Services - HTML5 Dev Conf
Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
 
Information security programming in ruby
Information security programming in rubyInformation security programming in ruby
Information security programming in ruby
 
Service discovery like a pro (presented at reversimX)
Service discovery like a pro (presented at reversimX)Service discovery like a pro (presented at reversimX)
Service discovery like a pro (presented at reversimX)
 
Observability with Consul Connect
Observability with Consul ConnectObservability with Consul Connect
Observability with Consul Connect
 
Time tested php with libtimemachine
Time tested php with libtimemachineTime tested php with libtimemachine
Time tested php with libtimemachine
 
Job Queue in Golang
Job Queue in GolangJob Queue in Golang
Job Queue in Golang
 
Bootstrapping multidc observability stack
Bootstrapping multidc observability stackBootstrapping multidc observability stack
Bootstrapping multidc observability stack
 
Nmap Scripting Engine and http-enumeration
Nmap Scripting Engine and http-enumerationNmap Scripting Engine and http-enumeration
Nmap Scripting Engine and http-enumeration
 

Viewers also liked

A Product Manager's Job
A Product Manager's JobA Product Manager's Job
A Product Manager's Jobjoshelman
 
Tema 4: La identidad digital
Tema 4: La identidad digitalTema 4: La identidad digital
Tema 4: La identidad digitaledgarmf
 
Web analytics is becoming universal
Web analytics is becoming universalWeb analytics is becoming universal
Web analytics is becoming universalAudun Rundberg
 
Internet of things - Frantic
Internet of things - FranticInternet of things - Frantic
Internet of things - FranticMiika Puputti
 
SDN: Что это? Что оно нам дает и как его использовать
SDN: Что это? Что оно нам дает и как его использоватьSDN: Что это? Что оно нам дает и как его использовать
SDN: Что это? Что оно нам дает и как его использоватьCisco Russia
 
Test your idea questionnaire
Test your idea questionnaireTest your idea questionnaire
Test your idea questionnairestartupJamaica
 
Webinario OM Latam "Tendencias Digitales SXSW 2031"
Webinario OM Latam "Tendencias Digitales SXSW 2031"Webinario OM Latam "Tendencias Digitales SXSW 2031"
Webinario OM Latam "Tendencias Digitales SXSW 2031"OM Latam
 
Zaklady rizeni znacky
Zaklady rizeni znackyZaklady rizeni znacky
Zaklady rizeni znackyHrivnak
 
Pair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical thingsPair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical thingsMarcello Duarte
 
Bo0oM - Deanonymization and total espionage (ZeroNights, 2014)
Bo0oM - Deanonymization and total espionage (ZeroNights, 2014)Bo0oM - Deanonymization and total espionage (ZeroNights, 2014)
Bo0oM - Deanonymization and total espionage (ZeroNights, 2014)Дмитрий Бумов
 
Plaquette Kontest - FR 2015
Plaquette Kontest - FR 2015Plaquette Kontest - FR 2015
Plaquette Kontest - FR 2015Fastory
 
Неделя науки 2013 СПбГПУ
Неделя науки 2013 СПбГПУНеделя науки 2013 СПбГПУ
Неделя науки 2013 СПбГПУBoris Kizko
 
Идентификация с помощью смартфона и iBeacon
Идентификация с помощью смартфона и iBeaconИдентификация с помощью смартфона и iBeacon
Идентификация с помощью смартфона и iBeaconalex_doloz
 
How To Create PowerPoints That Are Out Of This World
How To Create PowerPoints That Are Out Of This WorldHow To Create PowerPoints That Are Out Of This World
How To Create PowerPoints That Are Out Of This WorldProductLed
 
Виртуализация клиентских устройств Juniper cCPE
Виртуализация клиентских устройств Juniper cCPEВиртуализация клиентских устройств Juniper cCPE
Виртуализация клиентских устройств Juniper cCPESkillFactory
 
Автономные сети – взгляд в будущее. Новые технологии построения сетей
Автономные сети – взгляд в будущее. Новые технологии построения сетейАвтономные сети – взгляд в будущее. Новые технологии построения сетей
Автономные сети – взгляд в будущее. Новые технологии построения сетейCisco Russia
 
Devolo Goes OSGi – When Hardware Needs Software - G Hermann
Devolo Goes OSGi – When Hardware Needs Software  - G HermannDevolo Goes OSGi – When Hardware Needs Software  - G Hermann
Devolo Goes OSGi – When Hardware Needs Software - G Hermannmfrancis
 
Антон Тюрин "Распределённая система near-realtime агрегации больших объёмов д...
Антон Тюрин "Распределённая система near-realtime агрегации больших объёмов д...Антон Тюрин "Распределённая система near-realtime агрегации больших объёмов д...
Антон Тюрин "Распределённая система near-realtime агрегации больших объёмов д...Yandex
 
Y Combinator Startup Class #12 : Building for the Enterprise
Y Combinator Startup Class #12 : Building for the EnterpriseY Combinator Startup Class #12 : Building for the Enterprise
Y Combinator Startup Class #12 : Building for the EnterpriseFabien Grenet
 

Viewers also liked (20)

A Product Manager's Job
A Product Manager's JobA Product Manager's Job
A Product Manager's Job
 
Tema 4: La identidad digital
Tema 4: La identidad digitalTema 4: La identidad digital
Tema 4: La identidad digital
 
Web analytics is becoming universal
Web analytics is becoming universalWeb analytics is becoming universal
Web analytics is becoming universal
 
Internet of things - Frantic
Internet of things - FranticInternet of things - Frantic
Internet of things - Frantic
 
SDN: Что это? Что оно нам дает и как его использовать
SDN: Что это? Что оно нам дает и как его использоватьSDN: Что это? Что оно нам дает и как его использовать
SDN: Что это? Что оно нам дает и как его использовать
 
Test your idea questionnaire
Test your idea questionnaireTest your idea questionnaire
Test your idea questionnaire
 
Webinario OM Latam "Tendencias Digitales SXSW 2031"
Webinario OM Latam "Tendencias Digitales SXSW 2031"Webinario OM Latam "Tendencias Digitales SXSW 2031"
Webinario OM Latam "Tendencias Digitales SXSW 2031"
 
Go+ product
Go+ productGo+ product
Go+ product
 
Zaklady rizeni znacky
Zaklady rizeni znackyZaklady rizeni znacky
Zaklady rizeni znacky
 
Pair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical thingsPair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical things
 
Bo0oM - Deanonymization and total espionage (ZeroNights, 2014)
Bo0oM - Deanonymization and total espionage (ZeroNights, 2014)Bo0oM - Deanonymization and total espionage (ZeroNights, 2014)
Bo0oM - Deanonymization and total espionage (ZeroNights, 2014)
 
Plaquette Kontest - FR 2015
Plaquette Kontest - FR 2015Plaquette Kontest - FR 2015
Plaquette Kontest - FR 2015
 
Неделя науки 2013 СПбГПУ
Неделя науки 2013 СПбГПУНеделя науки 2013 СПбГПУ
Неделя науки 2013 СПбГПУ
 
Идентификация с помощью смартфона и iBeacon
Идентификация с помощью смартфона и iBeaconИдентификация с помощью смартфона и iBeacon
Идентификация с помощью смартфона и iBeacon
 
How To Create PowerPoints That Are Out Of This World
How To Create PowerPoints That Are Out Of This WorldHow To Create PowerPoints That Are Out Of This World
How To Create PowerPoints That Are Out Of This World
 
Виртуализация клиентских устройств Juniper cCPE
Виртуализация клиентских устройств Juniper cCPEВиртуализация клиентских устройств Juniper cCPE
Виртуализация клиентских устройств Juniper cCPE
 
Автономные сети – взгляд в будущее. Новые технологии построения сетей
Автономные сети – взгляд в будущее. Новые технологии построения сетейАвтономные сети – взгляд в будущее. Новые технологии построения сетей
Автономные сети – взгляд в будущее. Новые технологии построения сетей
 
Devolo Goes OSGi – When Hardware Needs Software - G Hermann
Devolo Goes OSGi – When Hardware Needs Software  - G HermannDevolo Goes OSGi – When Hardware Needs Software  - G Hermann
Devolo Goes OSGi – When Hardware Needs Software - G Hermann
 
Антон Тюрин "Распределённая система near-realtime агрегации больших объёмов д...
Антон Тюрин "Распределённая система near-realtime агрегации больших объёмов д...Антон Тюрин "Распределённая система near-realtime агрегации больших объёмов д...
Антон Тюрин "Распределённая система near-realtime агрегации больших объёмов д...
 
Y Combinator Startup Class #12 : Building for the Enterprise
Y Combinator Startup Class #12 : Building for the EnterpriseY Combinator Startup Class #12 : Building for the Enterprise
Y Combinator Startup Class #12 : Building for the Enterprise
 

Similar to OSMC 2014: Monitoring VoIP Systems | Sebastian Damm

Facebook的缓存系统
Facebook的缓存系统Facebook的缓存系统
Facebook的缓存系统yiditushe
 
4069180 Caching Performance Lessons From Facebook
4069180 Caching Performance Lessons From Facebook4069180 Caching Performance Lessons From Facebook
4069180 Caching Performance Lessons From Facebookguoqing75
 
Artimon - Apache Flume (incubating) NYC Meetup 20111108
Artimon - Apache Flume (incubating) NYC Meetup 20111108Artimon - Apache Flume (incubating) NYC Meetup 20111108
Artimon - Apache Flume (incubating) NYC Meetup 20111108Mathias Herberts
 
PHP And Web Services: Perfect Partners
PHP And Web Services: Perfect PartnersPHP And Web Services: Perfect Partners
PHP And Web Services: Perfect PartnersLorna Mitchell
 
Camel one v3-6
Camel one v3-6Camel one v3-6
Camel one v3-6wxdydx
 
Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015Masahiro Nagano
 
FOSDEM 2017 - RTC Services With Lua and Kamailio
FOSDEM 2017 - RTC Services With Lua and KamailioFOSDEM 2017 - RTC Services With Lua and Kamailio
FOSDEM 2017 - RTC Services With Lua and KamailioDaniel-Constantin Mierla
 
OSMC 2014 | Monitoring VoIP Systems by Sebastian Damm
OSMC 2014 | Monitoring VoIP Systems by Sebastian DammOSMC 2014 | Monitoring VoIP Systems by Sebastian Damm
OSMC 2014 | Monitoring VoIP Systems by Sebastian DammNETWAYS
 
Aynchronous Processing in Kamailio Configuration File
Aynchronous Processing in Kamailio Configuration FileAynchronous Processing in Kamailio Configuration File
Aynchronous Processing in Kamailio Configuration FileDaniel-Constantin Mierla
 
Use perl creating web services with xml rpc
Use perl creating web services with xml rpcUse perl creating web services with xml rpc
Use perl creating web services with xml rpcJohnny Pork
 
Kafka Streams: the easiest way to start with stream processing
Kafka Streams: the easiest way to start with stream processingKafka Streams: the easiest way to start with stream processing
Kafka Streams: the easiest way to start with stream processingYaroslav Tkachenko
 
fog or: How I Learned to Stop Worrying and Love the Cloud
fog or: How I Learned to Stop Worrying and Love the Cloudfog or: How I Learned to Stop Worrying and Love the Cloud
fog or: How I Learned to Stop Worrying and Love the CloudWesley Beary
 
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)Wesley Beary
 
Load Testing with PHP and RedLine13
Load Testing with PHP and RedLine13Load Testing with PHP and RedLine13
Load Testing with PHP and RedLine13Jason Lotito
 
How lagom helps to build real world microservice systems
How lagom helps to build real world microservice systemsHow lagom helps to build real world microservice systems
How lagom helps to build real world microservice systemsMarkus Eisele
 
Microservices Manchester: How Lagom Helps to Build Real World Microservice Sy...
Microservices Manchester: How Lagom Helps to Build Real World Microservice Sy...Microservices Manchester: How Lagom Helps to Build Real World Microservice Sy...
Microservices Manchester: How Lagom Helps to Build Real World Microservice Sy...OpenCredo
 
Distributed Applications with Perl & Gearman
Distributed Applications with Perl & GearmanDistributed Applications with Perl & Gearman
Distributed Applications with Perl & GearmanIssac Goldstand
 

Similar to OSMC 2014: Monitoring VoIP Systems | Sebastian Damm (20)

Facebook的缓存系统
Facebook的缓存系统Facebook的缓存系统
Facebook的缓存系统
 
4069180 Caching Performance Lessons From Facebook
4069180 Caching Performance Lessons From Facebook4069180 Caching Performance Lessons From Facebook
4069180 Caching Performance Lessons From Facebook
 
Artimon - Apache Flume (incubating) NYC Meetup 20111108
Artimon - Apache Flume (incubating) NYC Meetup 20111108Artimon - Apache Flume (incubating) NYC Meetup 20111108
Artimon - Apache Flume (incubating) NYC Meetup 20111108
 
PHP And Web Services: Perfect Partners
PHP And Web Services: Perfect PartnersPHP And Web Services: Perfect Partners
PHP And Web Services: Perfect Partners
 
Camel one v3-6
Camel one v3-6Camel one v3-6
Camel one v3-6
 
Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015
 
FOSDEM 2017 - RTC Services With Lua and Kamailio
FOSDEM 2017 - RTC Services With Lua and KamailioFOSDEM 2017 - RTC Services With Lua and Kamailio
FOSDEM 2017 - RTC Services With Lua and Kamailio
 
OSMC 2014 | Monitoring VoIP Systems by Sebastian Damm
OSMC 2014 | Monitoring VoIP Systems by Sebastian DammOSMC 2014 | Monitoring VoIP Systems by Sebastian Damm
OSMC 2014 | Monitoring VoIP Systems by Sebastian Damm
 
Test driven infrastructure
Test driven infrastructureTest driven infrastructure
Test driven infrastructure
 
Aynchronous Processing in Kamailio Configuration File
Aynchronous Processing in Kamailio Configuration FileAynchronous Processing in Kamailio Configuration File
Aynchronous Processing in Kamailio Configuration File
 
Use perl creating web services with xml rpc
Use perl creating web services with xml rpcUse perl creating web services with xml rpc
Use perl creating web services with xml rpc
 
Kafka Streams: the easiest way to start with stream processing
Kafka Streams: the easiest way to start with stream processingKafka Streams: the easiest way to start with stream processing
Kafka Streams: the easiest way to start with stream processing
 
fog or: How I Learned to Stop Worrying and Love the Cloud
fog or: How I Learned to Stop Worrying and Love the Cloudfog or: How I Learned to Stop Worrying and Love the Cloud
fog or: How I Learned to Stop Worrying and Love the Cloud
 
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
 
Load Testing with PHP and RedLine13
Load Testing with PHP and RedLine13Load Testing with PHP and RedLine13
Load Testing with PHP and RedLine13
 
Solr @ Etsy - Apache Lucene Eurocon
Solr @ Etsy - Apache Lucene EuroconSolr @ Etsy - Apache Lucene Eurocon
Solr @ Etsy - Apache Lucene Eurocon
 
Frontend Servers and NGINX: What, Where and How
Frontend Servers and NGINX: What, Where and HowFrontend Servers and NGINX: What, Where and How
Frontend Servers and NGINX: What, Where and How
 
How lagom helps to build real world microservice systems
How lagom helps to build real world microservice systemsHow lagom helps to build real world microservice systems
How lagom helps to build real world microservice systems
 
Microservices Manchester: How Lagom Helps to Build Real World Microservice Sy...
Microservices Manchester: How Lagom Helps to Build Real World Microservice Sy...Microservices Manchester: How Lagom Helps to Build Real World Microservice Sy...
Microservices Manchester: How Lagom Helps to Build Real World Microservice Sy...
 
Distributed Applications with Perl & Gearman
Distributed Applications with Perl & GearmanDistributed Applications with Perl & Gearman
Distributed Applications with Perl & Gearman
 

Recently uploaded

办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 

Recently uploaded (20)

办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 

OSMC 2014: Monitoring VoIP Systems | Sebastian Damm

  • 1. Monitoring VoIP Systems Sebastian Damm damm@sipgate.de
  • 2. 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
  • 3. 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)
  • 4. Our Monitoring systems • 2 Icinga servers • almost 1k hosts • more than 5k services • Cacti • Observium for network monitoring
  • 5. 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
  • 6. 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)
  • 8. 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
  • 9. check_manager.pl sub 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;%sn", $timestamp,$opts_host,$service,$ERRORS{$state},$msg); print $cmdmsg if (defined($opts_verbose)); print CMD $cmdmsg; close CMD; }
  • 10. Integrating into Icinga • Service Definition Active Check Passive Check define 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 }
  • 11. 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$ }
  • 12. 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
  • 13. Monitoring Kamailio • SIP • some variables through XMLRPC calls • Memory • TCP Connections • Version
  • 15. XMLRPC in Kamailio 1. Load the module loadmodule "xmlrpc.so" modparam("xmlrpc", "route", "XMLRPC") 2. Handle XMLRPC calls route["XMLRPC"] { if(src_ip == 1.2.3.4) { # only answer to Monitoring set_reply_no_connect(); # optional dispatch_rpc(); } else { xmlrpc_reply("403", "Forbidden"); } }
  • 16. Querying Kamailio sub 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 Kamailion"; $res=$rpc_call->fault; %r=%{$res}; foreach $k (sort keys %r) { print("t$k: $r{$k}n"); } exit $ERRORS{'UNKNOWN'}; } else { return($res); } }
  • 17. Monitoring Yate • SIP • everything else through SNMP • SIGTRAN links (beware: element order can change!) • Uptime • Version • Channels • …
  • 19. 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
  • 20. Monitoring the rest • SIP connectivity to partners • Function tests (emergency calls, features) • ENUM • User Location • RTP Proxies • STUN • iptables Connection Tracking
  • 21. That’s it Downloads available at: http://sipg.at/osmc2014 And: We hire, too! http://www.sipgate.de/jobs/