Table of Contents
List of Tables
List of Examples
update_stat
usagereset_stat
usagestat_iter_init
usagestat_iter_next
usage$stat
usageThe 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.
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.
The following modules must be loaded before this module:
No dependencies on other OpenSIPS modules.
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")
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"); ...
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)"); ...
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.
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")) { ... } ...
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; ...
Table 2.1. Top contributors by DevScore(1), authored commits(2) and lines added/removed(3)
Name | DevScore | Commits | Lines ++ | Lines -- | |
---|---|---|---|---|---|
1. | Bogdan-Andrei Iancu (@bogdan-iancu) | 34 | 20 | 1036 | 227 |
2. | Liviu Chircu (@liviuchircu) | 18 | 11 | 491 | 137 |
3. | Daniel-Constantin Mierla (@miconda) | 11 | 9 | 22 | 18 |
4. | Razvan Crainea (@razvancrainea) | 8 | 6 | 14 | 10 |
5. | Vlad Paiu (@vladpaiu) | 5 | 2 | 144 | 1 |
6. | Anca Vamanu | 4 | 2 | 14 | 16 |
7. | Henning Westerholt (@henningw) | 4 | 2 | 4 | 4 |
8. | Ionut Ionita (@ionutrazvanionita) | 3 | 1 | 17 | 1 |
9. | Ovidiu Sas (@ovidiusas) | 3 | 1 | 15 | 2 |
10. | Konstantin Bokarius | 3 | 1 | 2 | 5 |
All remaining contributors: Julián Moreno Patiño, Edson Gellert Schubert.
(1) DevScore = author_commits + author_lines_added / (project_lines_added / project_commits) + author_lines_deleted / (project_lines_deleted / project_commits)
(2) including any documentation-related commits, excluding merge commits. Regarding imported patches/code, we do our best to count the work on behalf of the proper owner, as per the "fix_authors" and "mod_renames" arrays in opensips/doc/build-contrib.sh. If you identify any patches/commits which do not get properly attributed to you, please submit a pull request which extends "fix_authors" and/or "mod_renames".
(3) ignoring whitespace edits, renamed files and auto-generated files
Table 2.2. Most recently active contributors(1) to this module
Name | Commit Activity | |
---|---|---|
1. | Bogdan-Andrei Iancu (@bogdan-iancu) | Mar 2006 - Jun 2018 |
2. | Liviu Chircu (@liviuchircu) | Mar 2014 - Jun 2018 |
3. | Ionut Ionita (@ionutrazvanionita) | Apr 2017 - Apr 2017 |
4. | Razvan Crainea (@razvancrainea) | Feb 2012 - Mar 2017 |
5. | Julián Moreno Patiño | Feb 2016 - Feb 2016 |
6. | Vlad Paiu (@vladpaiu) | Jul 2010 - Feb 2011 |
7. | Anca Vamanu | Oct 2007 - Sep 2009 |
8. | Ovidiu Sas (@ovidiusas) | Jun 2008 - Jun 2008 |
9. | Daniel-Constantin Mierla (@miconda) | Nov 2006 - Mar 2008 |
10. | Konstantin Bokarius | Mar 2008 - Mar 2008 |
All remaining contributors: Edson Gellert Schubert, Henning Westerholt (@henningw).
(1) including any documentation-related commits, excluding merge commits
Last edited by: Bogdan-Andrei Iancu (@bogdan-iancu), Liviu Chircu (@liviuchircu), Razvan Crainea (@razvancrainea), Vlad Paiu (@vladpaiu), Ovidiu Sas (@ovidiusas), Daniel-Constantin Mierla (@miconda), Konstantin Bokarius, Edson Gellert Schubert.
doc copyrights:
Copyright © 2007-2017 OpenSIPS Project
Copyright © 2006 Voice Sistem SRL