This module provides public access to Prosodys internal statistics trough the XEP-0039: Statistics Gathering protocol. This is a simple protocol that returns triplets of name, unit and value for each know statistic collected by Prosody. The names used are the internal names assigned by modules or statsmanager, names from the registry are not used.


Enabled as usual by adding to modules_enabled:

-- Enable Prosodys internal statistics gathering
statistics = "internal"

-- and enable the module
modules_enabled = {
    -- other modules



Statistics can be queried from the XML console of clients that have one:

<iq type="get" to="" id="dTMERjt5">
  <query xmlns=""/>

<iq type="result" to="" id="dTMERjt5">
  <query xmlns="">
    <stat name="cpu.clock:amount" value="0.212131"/>
    <stat name="cpu.percent:amount" value="0"/>
    <stat name="memory.allocated:amount" value="8.30259e+06"/>
    <stat name="memory.allocated_mmap:amount" value="401408"/>
    <stat name="memory.lua:amount" value="6.21347e+06"/>
    <stat name="memory.returnable:amount" value="13872"/>
    <stat name="memory.rss:amount" value="2.03858e+07"/>
    <stat name="" value="6.53885e+07"/>
    <stat name="memory.unused:amount" value="14864"/>
    <stat name="memory.used:amount" value="8.28773e+06"/>
    <stat name="/*/mod_c2s/connections:amount" value="0"/>
    <stat name="/*/mod_c2s/ipv6:amount" value="0"/>
    <stat name="/*/mod_s2s/connections:amount" value="0"/>
    <stat name="/*/mod_s2s/ipv6:amount" value="0"/>
    <stat name="stats.collection:duration" unit="seconds" value="0.000125647"/>
    <stat name="stats.processing:duration" unit="seconds" value="0"/>


Prosody version Works
0.9.x No
0.10.x Yes
0.11.x Yes
Trunk1 No

  1. Does not work with trunk since the change to OpenMetrics↩︎


With the plugin installer in Prosody 0.12 you can use:

sudo prosodyctl install --server= mod_stats39

For earlier versions see the documentation for installing 3rd party modules