Skip to content

Multi-Protocol HEP Server & RTC Collector in NodeJS 🎈

License

Notifications You must be signed in to change notification settings

sipcapture/HEPop

Repository files navigation

HEPop is a prototype stand-alone HEP Capture Server designed for HOMER7 capable of emitting indexed datasets and tagged timeseries to multiple backends in bulks. HEPop is developed using NodeJS and distributed using npm.

TLDR; instant, stand-alone, minimal HOMER Server without Kamailio or OpenSIPS dependency/options.

WARNING

This is a prototype under heavy development, please use it with caution and kindly report bugs!

Features

The core of hepop follows the latest homer data design and splits indexed data and timeseries, providing multiple backend options to choose from when prototype a custom capture solution.

Performance

During testing, HEPop bulking clocked about 10-15k/PPS per shared core on a Xeon(R) CPU E5-2660 v3 @ 2.60GHz

Supported Stores

TYPE
JSON Postgres (default), RethinkDB, MongoDB, Elasticsearch
Timeseries InfluxDB (default), Prometheus, VictoriaMetrics

Supported Sources

SOCKET PROTO TYPE/ID DESCRIPTION STORE STATS
HEP HEP 1 SIP JSON + TS SIP methods, SIP responses
5 RTCP Reports Timeseries RTCP, RTCPXR, X-RTP-Stat
34 RTP Agent Report Timeseries RTP, RTCP Stats
100 JSON Logs JSON String, JSON Object
1000+ Dynamic Types JSON
HTTP/S JANUS any Custom JSON Fields JSON session_id, handle_id, opaque_id, event
34 Media Stats Timeseries RTCP Statistics
HTTP/S MEDIASOUP any Custom JSON Fields JSON roomId, peerName, producerId
producer.stats Media Stats Timeseries RTCP Statistics
transport.stats Transport Stats Timeseries IP SRC/DST, Bytes in/out
HTTPS JITSI any Custom JSON Fields JSON report counters
rtp.stats Browser Media Stats Timeseries RTCP Statistics
SIPFIX SIP (tcp/udp) SIP comm-monitor JSON + TS SIP methods, SIP responses
RTP QOS (stats) RTP Media stats Timeseries RTP, RTCP Stats

Usage

Launch a dedicated instance of hepop per protocol using a custom configuration:

$ hepop -c ./myconfig.js

Docker

Try the bundled Docker compose

Config

See myconfig.js for an example configuration

Options:

    -V, --version                  output the version number
    -c, --configfile <configfile>  configuration file
    -s, --socket <socket>          socket service (udp,tcp,http,sipfix,mqtt) (default: udp)

Screenshots

homer7

influxdb


Made by Humans

This Open-Source project is made possible by actual Humans without corporate sponsors, angels or patreons.
If you use this software in production, please consider supporting its development with contributions or donations

Donate