<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On 24 Jun 2011, at 07:41, Richard Zulu wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Hey,<div><br></div><div>I have installed asterisk 1.8 on Slackware 13.1 from source and it is working well.</div><div><br></div><div>I have 300 ip phones in a natted environment and my asterisk server has a public IP</div>

<div><br></div><div>I would love to monitor my SIP activity on my VOIP Server, statistics like amount of sip traffic, who made what call and to whom, how many calls were made in a month, how many ip phones are up and running, which sip phone has made most calls among others.</div>

<div><br></div><div>How best can I do that?</div><div><br></div><div>On the other hand, I have also tried installing ast-gui onto asterisk 1.8, it has installed well but it however keeps looping whenever i try to login in, it says checking permissions on gui folder and loops. Haven't found much help on other mailing lists, any direction given in welcome.</div>

<div><br></div><div>Thanks<br clear="all">Richard Zulu<br><br><div>Twitter</div><div><a href="http://www.twitter.com/richardzulu" target="_blank">www.twitter.com/richardzulu</a></div><div><br></div><div>Skype: zulu.richard</div>

<div><font color="#008000"><b><br></b></font></div><div><font color="#008000"><b>There is no place like 127.0.0.1</b></font></div><br></div></blockquote></div><div><br></div><div>I've solved this a couple of different ways, depending on the nature of the reporting.</div><div><br></div><div>The 'conventional' way is to &nbsp;have CDR log to a relational database (probably not mySQL)</div><div>and then write queries against that data.</div><div><br></div><div>It can get quite tricky to get things like max-active-calls out of CDR although it is possible&nbsp;</div><div>if you are sneaky and have a decent database engine.</div><div><br></div><div><div>&nbsp;&nbsp;select max(</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;(select count (s.cdr_key)</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;from cdr s</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;where s.created_at -(s.billsec/(24*60*60)) &amp;lt; a.created_at &nbsp;-(a.billsec/(24*60*60))</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;and s.created_at &amp;gt; a.created_at - (a.billsec/(24*60*60))</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;and s.accountcode in ('VUCME','ZDX')</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;)+1) as channels</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;from cdr a</div><div>where</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;to_char(a.created_at,'IWYY') = {@weekno}</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;and a.accountcode in ('VUCME','ZDX')</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;order by a.created_at - a.billsec/(24*60*60)</div></div><div><br></div><div>for example.</div><div><br></div><div>The dis advantage of this is that it is purely retrospective - cdr gets written at the end of the call (mostly).</div><div><br></div><div>The unconventional way is to hang something like Asterisk-java (or adhearsion) off the manager&nbsp;</div><div>and have it collect events into 'interesting' silos - modern languages like groovy and Ruby are pretty good at this</div><div>sort of thing.</div><div><br></div><div>Last I looked SNMP only tells you about the _current_ state of the calls, no retrospection at all.</div><div><br></div><br><div>
<div style="font-size: 12px; ">Tim Panton - Web/VoIP consultant and implementor</div><div style="font-size: 12px; "><a href="http://www.westhawk.co.uk">www.westhawk.co.uk</a></div><div style="font-size: 12px; "><br></div><br class="Apple-interchange-newline">
</div>
<br></body></html>