hekmekk / ari-proxy

Ari-proxy connects Asterisk, an open source communication server, to the Apache Kafka distributed streaming platform.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ari-proxy

Ari-proxy connects Asterisk, an open source communication server, to the Apache Kafka distributed streaming platform.

Table of contents

  1. Abstract
  2. Getting started
  3. Metrics
  4. Compatibility
  5. Contributing & feedback
  6. Credit & License
  7. Acknowledgements

Abstract

The motivation to create ari-proxy arose from the need to build distributed and resilient telephony services scaling up to millions of active users. Ari-proxy makes use of Kafka’s built-in routing concepts to ensure consistency of message streams and proper dispatching to the call-controller, the application implementing the service logic.

Architecture Overview

Please see docs/concepts.md for details on the concepts of message routing and session mapping.

Getting started

In order to operate ari-proxy, make sure you have a running instance of both Asterisk and Kafka server.

Prerequisites

ari-proxy is written in Java, so you should install and setup Java before continuing. The project is managed by maven, which requires you to install maven as well.

Building

Build the fat jar in target/:

mvn package

Configuration

ari-proxy expects the following configuration files, which should be passed to the jvm when running the fat-jar:

config optional purpose
service.conf no configure the service, see our template: service.conf.sample
log4j2.xml yes configure logging (if not specified, a bundled config will be used logging to STDOUT only)
jolokia.properties no configure jolokia agent properties, see our template: jolokia.properties.sample

Running

Run the fat jar:

java -Dconfig.file=/path/to/service.conf [-Dlog4j.configurationFile=/path/to/log4j2.xml] -jar target/ari-proxy-1.2.1-fat.jar

Metrics

Ari-proxy provides service specific metrics using the micrometer framework which are available via JMX.

mbean type description
metrics:name=CallSetupDelay.* Timer Measures the duration between a StasisStart event and the first response to an ari-command
metrics:name=CallsStarted Counter Increases for every StasisStart event
metrics:name=CallsEnded Counter Increases for every StasisEnd event

Note: JMX data may be exposed via HTTP using the jolokia jvm agent (see: debian/ari-proxy@.service).

Compatibility

We aim for compatibility with the latest stable release of

Contributing & feedback

To report a bug or make a request for new features, use the Issues Page in the ari-proxy Github project. We welcome any contributions. Please see the Developer Guidelines for instructions on how to submit changes.

Credit & License

ari-proxy is maintained by the folks at sipgate and licensed under the terms of the AGPL license.

Maintainers of this repository:

Please refer to the Git commit log for a complete list of contributors.

Acknowledgements

ari-proxy is not the first of its kind. This project was inspired by the concepts underlying both go-ari-proxy by N-Visible as well as ari-proxy by CyCore Systems.

About

Ari-proxy connects Asterisk, an open source communication server, to the Apache Kafka distributed streaming platform.

License:GNU Affero General Public License v3.0


Languages

Language:Java 99.4%Language:Makefile 0.6%