Statistics Module

Bogdan Iancu

Edited by

Bogdan Iancu

   Copyright © 2006 Voice Sistem SRL

   Copyright © 2007-2017 OpenSIPS Project
   Revision History
   Revision $Revision: 8740 $ $Date$
     __________________________________________________________

   Table of Contents

   1. Admin Guide

        1.1. Overview
        1.2. Statistic Groups
        1.3. Dependencies

              1.3.1. OpenSIPS Modules
              1.3.2. External Libraries or Applications

        1.4. Exported Parameters

              1.4.1. variable (string)
              1.4.2. stat_groups (string)

        1.5. Exported Functions

              1.5.1. update_stat(variable, value)
              1.5.2. reset_stat(variable)
              1.5.3. stat_iter_init(group, iter)
              1.5.4. stat_iter_next(name, val, iter)

        1.6. Exported Pseudo-Variables

              1.6.1. $stat

   List of Examples

   1.1. variable example
   1.2. setting the stat_groups parameter
   1.3. update_stat usage
   1.4. reset_stat usage
   1.5. stat_iter_init usage
   1.6. stat_iter_next usage
   1.7. $stat usage

Chapter 1. Admin Guide

1.1. Overview

   The Statistics module is a wrapper over the internal statistics
   manager, allowing the script writer to dynamically define and
   use of statistic variables.

   By bringing the statistics support into the script, it takes
   advantage of the script flexibility in defining logics, making
   possible implementation of any kind of statistic scenario.

1.2. Statistic Groups

   Starting with OpenSIPS 2.3, statistics may be grouped by
   prefixing their names with the name of the desired group, along
   with a colon separator (e.g. $stat(method:invite) or
   update_stat("packets:$var(ptype)", "+1")). In order for this to
   work, the groups must be defined prior to OpenSIPS startup
   using the stat_groups module parameter.

   The module allows easy iteration over the statistics of a group
   using the stat_iter_init() and stat_iter_next() functions.

   By default, all statistics belong to the "dynamic" group.

1.3. Dependencies

1.3.1. OpenSIPS Modules

   The following modules must be loaded before this module:
     * No dependencies on other OpenSIPS modules.

1.3.2. External Libraries or Applications

   The following libraries or applications must be installed
   before running OpenSIPS with this module loaded:
     * None.

1.4. Exported Parameters

1.4.1. variable (string)

   Name of a new statistic variable. The name may be followed by
   additional flag which describe the variable behavior:
     * no_reset : variable cannot be reset.

   Example 1.1. variable example
modparam("statistics", "variable", "register_counter")
modparam("statistics", "variable", "active_calls/no_reset")

1.4.2. stat_groups (string)

   A comma-separated values string, specifying the statistic
   groups that may be used throughout the OpenSIPS script. Groups
   cannot contain leading or trailing whitespace characters.

   Example 1.2. setting the stat_groups parameter
modparam("statistics", "stat_groups", "method, packet, response")

1.5. Exported Functions

1.5.1.  update_stat(variable, value)

   Updates the value of the statistic variable with the new value.

   Meaning of the parameters is as follows:
     * variable - variable to be updated (it can be a string or a
       pseudovariable);
     * value - value to update with; it may be also negative;
       variables (holding integer values) are also allowed.

   This function can be used from REQUEST_ROUTE, BRANCH_ROUTE,
   FAILURE_ROUTE and ONREPLY_ROUTE.

   Example 1.3. update_stat usage
...
update_stat("register_counter", "+1");
...
$var(a_calls) = "active_calls";
update_stat("$var(a_calls)", "-1");
...

1.5.2.  reset_stat(variable)

   Resets to zero the value of the statistic variable.

   Meaning of the parameters is as follows:
     * variable - variable to be reset-ed (it can be a string or a
       pseudovariable).

   This function can be used from REQUEST_ROUTE, BRANCH_ROUTE,
   FAILURE_ROUTE and ONREPLY_ROUTE.

   Example 1.4. reset_stat usage
...
reset_stat("register_counter");
...
$var(reg_counter) = "register_counter";
update_stat("$var(reg_counter)");
...

1.5.3.  stat_iter_init(group, iter)

   Re-initializes "iter" in order to begin iterating through all
   statistics belonging to the given "group".

   Meaning of the parameters is as follows:
     * group - string
     * iter - string (internally matched to a corresponding
       iterator)

   This function can be used from REQUEST_ROUTE, BRANCH_ROUTE,
   FAILURE_ROUTE and ONREPLY_ROUTE.

   Example 1.5. stat_iter_init usage
...
stat_iter_init("packet", "iter");
...

1.5.4.  stat_iter_next(name, val, iter)

   Attempts to fetch the current statistic to which "iter" points.
   If successful, the relevant data will be written to "name" and
   "val", while also advancing "iter". Returns negative when
   reaching the end of iteration.

   Meaning of the parameters is as follows:
     * name - script variable
     * val - script variable
     * iter - string (internally matched to a corresponding
       iterator)

   This function can be used from REQUEST_ROUTE, BRANCH_ROUTE,
   FAILURE_ROUTE and ONREPLY_ROUTE.

   Example 1.6. stat_iter_next usage
...
stat_iter_init("packet", "iter");
while (stat_iter_next("$var(k)", "$var(v)", "iter")) {
        ...
}
...

1.6. Exported Pseudo-Variables

1.6.1. $stat

   Allows "get" or "reset" operations on the given statistics.

   The name of a statistic may be optionally prefixed with a
   searching group, along with a colon separator.

   If a searching group is not provided, the statistic is first
   searched for in the core groups. If not found, search continues
   with the "dynamic" group which, by default, holds all
   non-explicitly grouped statistics which are not exported by the
   OpenSIPS core.

   Example 1.7. $stat usage
...
xlog("SHM used size = $stat(used_size), no_invites = $stat(method:invite
)\n");
...
$stat(err_requests) = 0;
...
