[Devel] Re: [Users] New Feature - Global Statistics Management support

Bogdan-Andrei Iancu bogdan at voice-system.ro
Thu Feb 9 11:06:21 CET 2006


Hi again,

a new stage in developing general support for statistics in openser was 
completed:
    1) optimization of the Statistic Manager implementation - usage of 
atomic ops for i386
    2) clean-up and replace old core statistics (former stats.c that 
depended on some snmp stuff)
    3) replace local module statistics in sl, tm and usrloc with 
statistics via the general Manger.

next stage:
    1) building a module to provide dynamic script statistics - it will 
allow you to perform any kind of counting based of script criteria: you 
can count how many calls were sent to GW or voicemail, how many call had 
g.729 codec, etc.
    2) more statistics in other modules

Available statistics:
Core:
    core:rcv_requests - number of received requests
    core:rcv_replies  - number of received replies
    core:fwd_requests - number of stateless forwarded requests
    core:fwd_replies - number of stateless forwarded replies (relayed 
replies)
    core:drop_requests - number of dropped requests (due post/pre script 
callbacks or due script execution)
    core:drop_replies - number of dropped replies module's reply function
    core:err_requests - malformed received requests
    core:err_replies - malformed received replies
Shared Memory:
    shmem:total_size - total available sh mem
    shmem:used_size - used sh mem
    shmem:real_used_size - used sh mem including the internal overhead
    shmem:max_used_size - maximum of real used memory during execution
    shmem:free_size - free shm mem
    shmem:fragments - number of sh mem fragments
SL module:
    sl:1xx_replies - number of 1xx sent replies
    sl:2xx_replies - number of 2xx sent replies
    sl:3xx_replies - number of 3xx sent replies
    sl:4xx_replies - number of 4xx sent replies
    sl:5xx_replies - number of 5xx sent replies
    sl:6xx_replies - number of 6xx sent replies
    sl:sent_replies - total number of sent replies
    sl:sent_err_replies - replies sent via sl_error_send()
    sl:received_ACKs - number of received ACKs due sending negative replies
TM module
    tm:received_replies - number of statefull received replies
    tm:relayed_replies - number of statefull relayed replies
    tm:local_replies - number of statefull replies local generated (like 
t_reply() )
    tm:UAS_transactions - no. of processed UAS transactions (build on 
received request)
    tm:UAC_transactions - no. of processed UAC transactions (no 
received, but only sent request - via t_uac())
    tm:2xx_transactions - number of transactions completed via 2xx replies
    tm:3xx_transactions - number of transactions completed via 3xx replies
    tm:4xx_transactions - number of transactions completed via 4xx replies
    tm:5xx_transactions - number of transactions completed via 5xx replies
    tm:6xx_transactions - number of transactions completed via 6xx replies
    tm:inuse_transactions - how many transactions are still in memory
MSILO module
    msilo:stored_messages - no. of messages stored in DB
    msilo:dumped_messages - no. of stored messages that were finally 
delivered
    msilo:failed_messages - no. of stored messages that were discarded 
(unable to deliver)
    msilo:dumped_reminders - no. of stored reminder messages that were 
finally delivered
    msilo:failed_reminders - no. of stored reminder messages that were 
discarded (unable to deliver)
USRLOC module
    usrloc:location-users - number of registered users (AORs)
    usrloc:location-contacts - number of registered contacts
    usrloc:location-expires - number of contacts that expired

For how to access these statistics (via FIFO), please see my previous email.

regards,
bogdan


Bogdan-Andrei Iancu wrote:

> Hi everybody,
>
> A new feature is present on the development version of openser - 
> Global Statistics Management support: the core includes a Statistics 
> Manager which roll is to collect statistics variables from all over 
> openser and to offer management support (to create and operate them); 
> it also provides a single, centralized point of access to allow 
> external apps or internal modules to get any statistics.
>
> How it works? the core and the module exports different statistics 
> variables (via the module interface). The Statistics Manager (SM) 
> offers support for auto-initialization, for updating ans resetting 
> variables.
> The statistics variables are kept into shared mem to be accessible to 
> all processes. Synchronization support is offered by SM.
>
> Statistic variable capabilities
> -------------------------------
>     be defined with:
>         NO_RESET (it cannot be reset -ex. used mem, register 
> subscribers, etc)
>         NO_SYNC (it will not be synchronized during ops; by their 
> nature, some variables are already synchronized)
>     be updated (added with new val)
>     be reset (set to zero if allowed).
>
>
> Accessing the statistics
> -------------------------
>
> The SM export two FIFO functions for offering access to the statistics:
>    "get_statistics all" - gets all statistics
>    "get_statistics stat_name"  - gets the value of the stat_name variable
>    "get_statistics module_name:" - get all statistics exported by 
> module "module name"; to get statistics from core, use "core" as 
> module_name
>    "reset_statistics stat_name" - sets to 0 the value of the stat_name 
> variable
>
>
> The SM internally offers an API to be used by other modules interested 
> in accessing the statistics. Ex: a future snmp module
>
>
>
> Current statistics
> ------------------
>
> For the moment only a few core statistics are defined (we can easily 
> add them in time):
>    received requests : "rcv_reqs"
>    received replies : "rcv_rpls"
>    dropped requests (by scripts or post-script callbacks) : "drp_reqs"
>    dropped replies (by scripts or post-script callbacks) : "drp_rpls"
>    error requests (basic parsing failed) : "err_reqs"
>    error replies (bassic parsing failed) : "err_rpls"
>
>
> How to use it
> --------------
>
> first to need to enable its compiling - enable the -DSTATISTICS flag 
> in Makefile.def (by default is disabled).
> Recompile and run openser.
> Use fifo to get the statistics. Ex:
>    openserctl fifo get_statistics all
>    openserctl fifo get_statistics core:
>    openserctl fifo get_statistics rcv_reqs
>
>
>
> Next steps
> -----------
>
> optimization of the SM (better locking for sync, usage of atomic ops 
> if possible)
>
> replace old statistics (see stats.c) - the code is not compiling since 
> it depends on some snmp stuff...
>
> replace local module statistics (sl,tm,usrloc) with sttistics via SM
>
> add more statistics...ideas are welcomed
>
> new module to implement dynamic statistics variables to be used from 
> script.
>
>
>
> regards,
> bogdan
>
>
>
>
>
> _______________________________________________
> Users mailing list
> Users at openser.org
> http://openser.org/cgi-bin/mailman/listinfo/users
>




More information about the Devel mailing list