[asterisk-dev] Logging and multi-tenancy

Jaco Kroon jaco at uls.co.za
Wed Jan 18 08:41:02 CST 2023


Hi Luke,

Real time processing of the logs and dispatch based on those C-???? 
values into a database of sorts then I reckon.  You will probably still 
need some way to link C-???? to the CDR entries, but that IMHO is 
optional depending on how your support process.


Kind Regards,
Jaco

On 2023/01/18 16:33, Luke Escudé wrote:

> In our case, we've managed to turn Asterisk into a Docker container, 
> so we can scale up/out as much as needed.
>
> Interestingly, after running about 500 containers in production (500 
> asterisk instances) we've found that there's a lot of untapped power 
> in the smaller containers, so we ended up designing our PBX web portal 
> and our dial plan to be multi-tenant.
>
> So, effectively, we can stick about 20 customers (roughly 100 to 400 
> SIP endpoints total) on a single Asterisk docker container without 
> breaking a sweat.
>
> The main issue now is trying to filter the real-time console output - 
> We don't give customers access to any of that of course, just filtered 
> logs and events via our web portal, which is permissions-based - so 
> that a technician can diagnose a possible call flow failure without 
> having to grep through tons of information.
>
>
>
> *Luke **Escudé*
>
> Owner, CEO
>
> *
> *
>
> 972.600.1150*
> *
>
> support at primevox.net*
> *
>
> Schedule a meeting! 
> <https://outlook.office365.com/owa/calendar/PrimeVOXCommunications@primevox.net/bookings/>
>
>
>
> View the PrimeVOX R&D Roadmap here 
> <https://trello.com/b/pzpoyn8m/primevox-engineering>
> View the PrimeVOX Status Page here <https://status.primevox.net/>
> ------------------------------------------------------------------------
> *From:* Jaco Kroon <jaco at uls.co.za>
> *Sent:* Wednesday, January 18, 2023 1:31 AM
> *To:* Asterisk Developers Mailing List 
> <asterisk-dev at lists.digium.com>; Luke Escudé <luke at primevox.net>
> *Subject:* Re: [asterisk-dev] Logging and multi-tenancy
>
> Hi Luke,
>
>
> On 2022/12/23 18:48, Luke Escudé wrote:
>> So, it's possible to achieve multi-tenancy in Asterisk with 
>> well-designed dial plan. By multi-tenancy, in terms of Asterisk, I 
>> mean each "customer" has their own separate dial plan, and each 
>> customer cannot "see" another.
>
> As long as each "customer" has their own "endpoint" details (for 
> whatever protocol they use to connect), yes, this is technically 
> possible.  There are other risks associated, eg, if you give them 
> access to AMI or even to the CLI ... how do you control data 
> visibility?  This just gets very, very risky.
>
>
> Given that a well tuned asterisk instance can use sub 100MB of RAM ... 
> I don't see the problem with running an asterisk instance per tenant.  
> Eliminates most of the above concerns, and if you do it right, pretty 
> much all of the issues just goes away.  The one serious downside is 
> that you need to bind each one to a different IP ... which is also not 
> a major problem, one idea around this is to use a SIP proxy to 
> dispatch to the correct "private" IP based on the registered to realm.
>
>>
>> However, when it comes to looking at the asterisk CLI/console, you 
>> see all the calls flowing across all dial plans, which can be a lot 
>> to look at.
> Correct.
>>
>> What is the possibility of adding some kind of "tenancy filtering" to 
>> CLI logging?
> Extremely unlikely.
>>
>> Example: At the beginning of a dial plan call, let's say exten => s, 
>> we set LoggingTenancy(customer_id), then all of the subsequent log 
>> messages are visible in the CLI only if you run the "logging view 
>> tenant (x)" or something like this.
>>
>> That would make it easier to diagnose call issues on high-volume systems.
>
> Agreed.  We generally use the full log.  So in logger.conf:
>
>
> full => notice,warning,error,debug,verbose(4),dtmf,fax
>
>
> Now each call will have a C-?????? tag associated with it. So after 
> the call has completed, find the C-????? tag (You can for example use 
> your LoggingTenancy idea here, but something like 
> Verbose(TENTANT=?????, CLI=${CALLERID(full}, DST=${EXTEN}) - this will 
> give you something to grep for in the full log to find C-??????, then 
> grep C-?????? full.
>
>>
>> I, personally, do not have the ability to implement this, but I 
>> wanted to put it out there.
>
>>
>>
>>
>>
>> *Luke **Escudé*
>>
>>
>> 972.600.1150*
>> *
>>
>> support at primevox.net <mailto:support at primevox.net>*
>> *
>>
>> Schedule a meeting! 
>> <https://outlook.office365.com/owa/calendar/PrimeVOXCommunications@primevox.net/bookings/>
>>
>>
>>
>> View the PrimeVOX R&D Roadmap here 
>> <https://trello.com/b/pzpoyn8m/primevox-engineering>
>> View the PrimeVOX Status Page here <https://status.primevox.net/>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20230118/6d0c8a56/attachment.html>


More information about the asterisk-dev mailing list