CDR-Stats is free and open source call detail record and analysis reporting software for Freeswitch, Asterisk, and other types of telecoms switch.
CDR-Stats’ Components
CDR-Stats is built on an open source software consisting of, but not limited to:-
Django: Django is a Python based web framework that allows rapid development, with a clean and pragmatic design.
MongoDB: MongoDB is a high performance “NoSQL” database chosen for its ability to quickly query and analyse many millions of call detail records without noticeable loss of performance. MongoDB has been deployed by companies such as Disney, MTV and Craiglist for its ability to scale.
Celery: Celery is used to process millions of tasks per day, and is employed in CDR-Stats to monitor call detail records being added, calculating things like the average length of call, failed calls, and calls to unexpected destinations, all of which may suggest either a fault or fraud in progress. CDR-Stats can be developed to trigger events on a remote switch such as blocking an IP address in reaction to certain predefined conditions being met.
Socket.IO: Socket.IO is used to get realtime information from a remote switch so that concurrent calls can be displayed in realtime. Currently there are connectors supplied with CDR-Stats for Freeswitch only.
Bootstrap: Originally developed by Twitter, Bootstrap allows CDR-Stats to be fully responsive. That is to say that the web interface components will scale according the resolution and device viewing CDR-Stats, so CDR-Stats looks good on any web browsing device from a smartphone, tablet or computer monitor.
MySQL / SQLite / PostgreSQL: For administrative purposes, such as user management, one of the three database popular engines can be chosen. This is simply a matter of personal choice. CDR-Stats is fully multi-tenant allowing many users to log on and view only their own CDR.
Joining it Together
Freeswitch
Freeswitch has a MongoDB module, that writes CDR as they are created into the CDR-Stats database where they can be queried and interrogated.
Asterisk
We have written a custom module for Asterisk that extracts the CDR from the CDR database in Asterisk, and writes them into MongoDB.
Other Switches and Carrier CDR
A text file in CSV (comma separated values) is extracted from the source switch, then uploaded via the CDR-Stats web interface, and the fields correctly assigned. Some manipulation of the values in the CDR may have to be adjusted and sanitised for compatibility.
In the future, other connectors may be written to interface with other switches as demand dictates. Contact us for more details.
Installation
CDR-Stats is a web based application primarily designed and tested for installation on Linux, so a webserver will be required. CDR-Stats can be installed on the same server as the switch, or on a remote system and can be linked to many switches.
For really large deployments, MongoDB and CDR-Stats can be installed on an array of servers to scale to querying possibly billions of call detail records.
For installation instructions, a Beginner’s Guide to install CDR-Stats has been provided along with automated installation scripts for a range of scenarios.
