Mercurial > prosody-modules
changeset 4575:5b4f43b90766
mod_measure_malloc: port to most recent trunk statistics API
author | Jonas Schäfer <jonas@wielicki.name> |
---|---|
date | Tue, 25 May 2021 19:01:54 +0200 |
parents | 38d80dbfee88 |
children | cade5dac1003 |
files | mod_measure_malloc/README.markdown mod_measure_malloc/mod_measure_malloc.lua |
diffstat | 2 files changed, 38 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/mod_measure_malloc/README.markdown Tue May 25 16:49:51 2021 +0200 +++ b/mod_measure_malloc/README.markdown Tue May 25 19:01:54 2021 +0200 @@ -7,5 +7,5 @@ Description =========== -This module collects stats from `util.pposix.meminfo` usage and reports using Prosody 0.10 APIs +This module collects stats from `util.pposix.meminfo` usage and reports using Prosody 0.12 APIs
--- a/mod_measure_malloc/mod_measure_malloc.lua Tue May 25 16:49:51 2021 +0200 +++ b/mod_measure_malloc/mod_measure_malloc.lua Tue May 25 19:01:54 2021 +0200 @@ -1,17 +1,44 @@ module:set_global(); -local measure = require"core.statsmanager".measure; +local metric = require"core.statsmanager".metric; local pposix = require"util.pposix"; -local measures = {}; -setmetatable(measures, { - __index = function (t, k) - local m = measure("amount", "memory."..k); t[k] = m; return m; +local allocated = metric( + "gauge", "malloc_heap_allocated", "bytes", + "Allocated bytes by mode of allocation", + {"mode"} +); + +local used = metric( + "gauge", "malloc_heap_used", "bytes", + "Used bytes" +):with_labels(); + +local unused = metric( + "gauge", "malloc_heap_unused", "bytes", + "Unused bytes" +):with_labels(); + +local returnable = metric( + "gauge", "malloc_heap_returnable", "bytes", + "Returnable bytes" +):with_labels(); + +module:hook("stats-update", function () + meminfo = pposix.meminfo(); + if meminfo.allocated then + allocated:with_labels("sbrk"):set(meminfo.allocated); end -}); -module:hook("stats-update", function () - local m = measures; - for k, v in pairs(pposix.meminfo()) do - m[k](v); + if meminfo.allocated_mmap then + allocated:with_labels("mmap"):set(meminfo.allocated_mmap); + end + if meminfo.used then + used:set(meminfo.used); + end + if meminfo.unused then + unused:set(meminfo.unused); + end + if meminfo.returnable then + returnable:set(meminfo.returnable); end end);