A FreeSwitch ESL application that exports statistics to DataDog using the dogstatsd api.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.gitignore
LICENSE
README.md
config.py
datadog.py
fsmetrics
fsmetrics.py
metrics.py
setup.sh
tdm.py

README.md

FreeSwitch-DataDog-Metrics

A FreeSwitch ESL application that exports statistics to DataDog using the dogstatsd api.

Intended to run on a machine that has both the datadog-agent and freeswitch running.

Will automatically capture G729 licensing metrics, if mod_com_g729 is enabled.

INSTALL

To install please run "./setup.sh" from this directory as the root user.

This will copy the init script and create the appropriate directories and files.

You can control the freeswitch metrics application by running "/etc/init.d/fsmetrics start|stop|restart"

TODO

  • update metrics in readme
  • update metrics table formatting in readme
  • Separate hangup causes into normal/abnormal
  • Better metric names
  • Metrics on TDM trunks
  • Generate Alerts
  • Add a config file
  • Alert on SIP gateways
  • don't assume the location of eventsocket
  • add the following metrics

Alerts

  • Many Sofia Events
    • sofia::gateway_add INFO
    • sofia::gateway_delete INFO
    • sofia::gateway_state - when a gateway is detected as down or back up SUCCESS | ERROR

Sofia

event plain CUSTOM sofia::register sofia::expire

Configuration

You only need a configuration file if:

  • FreeSwtich has a custom ESL config
  • You're monitoring a remote machine
  • You'd like datadog to alarm
  • You're running dogstatsd on a custom port
  • You're connecting to a remote dogstatsd

If there's no API key present, no alarms will be emitted.

Any values left unpopulated have sensible defaults.

By default, the only normal hangup cause is NORMAL_CLEARING.

---
DataDog:
    API_KEY: KEY
    Port: 0
    Event_Host_Name: myhostname
FreeSwitch:
    Password: ClueCon
    Host: 127.0.0.1
    Port: 8021
    Normal_Hangup_Causes: 
        - NORMAL_CLEARING
        - NORMAL_TEMPORARY_FAILURE
        - USER_BUSY
        - NO_ANSWER
        - NO_ROUTE_DESTINATION
        

Requirements

Metrics

| Stat | Type | Description | | freeswitch.channels | counter | Number of currently active channels | | freeswitch.channels.started | counter | Number of channels that were started | | freeswitch.channels.finished | counter | Number of channels that were hungup | | freeswitch.channels.finished.normally | counter | Number of channels that were hungup normally | | freeswitch.channels.finished.normally.[cause] | counter | Number of channels that were hungup normally for a given cause | | freeswitch.channels.finished.abnormally | counter | Number of channels that were hungup abnormally | | freeswitch.channels.finished.abnormally.[cause] | counter | Number of channels that were hungup abnormally for a given cause|