author | Kim Alvefur <zash@zash.se> |
Fri, 06 Oct 2023 18:34:39 +0200 | |
changeset 5672 | ecfd7aece33b |
permissions | -rw-r--r-- |
5672
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 |
# Introduction |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
2 |
|
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
3 |
This module reports [module status priorities][doc:developers:moduleapi#logging-and-status] as metrics, which are a kind of persistent log messages |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 |
indicating whether the module is functioning properly. |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
5 |
|
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
6 |
This concept was introduced in [Prosody 0.12.0][doc:release:0.12.0#api] and is not used extensively yet, primarily for reporting failure to load |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
7 |
modules or e.g. [mod_component] not being connected to its external component yet. |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
8 |
|
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
9 |
Besides using this to report problems, this metric could also be used to count how many modules are loaded or monitor for when critical modules aren't |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
10 |
loaded at all. |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
11 |
|
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
12 |
# Configuration |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
13 |
|
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
14 |
After installing, enable by adding to [`modules_enabled`][doc:modules_enabled] like many other modules: |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
15 |
|
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
16 |
``` lua |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 |
-- in the global section |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
18 |
modules_enabled = { |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
19 |
-- Other globally enabled modules here... |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
20 |
"http_openmetrics"; |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 |
"measure_modules"; -- add |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 |
} |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
23 |
``` |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
24 |
|
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
25 |
# Example OpenMetrics |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
26 |
|
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
27 |
``` openmetrics |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
28 |
# HELP prosody_module_status Prosody module status |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
29 |
# UNIT prosody_module_status |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
30 |
# TYPE prosody_module_status gauge |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
31 |
prosody_module_status{host="example.org",module="message"} 0 |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
32 |
prosody_module_status{host="example.org",module="presence"} 0 |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
33 |
prosody_module_status{host="groups.example.org",module="muc"} 0 |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
34 |
``` |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
35 |
|
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
36 |
# Details |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
37 |
|
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
38 |
The priorities are reported as the following values: |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
39 |
|
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
40 |
0 |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
41 |
: `core` - no problem, nothing to report |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
42 |
|
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
43 |
1 |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
44 |
: `info` - no problem, but a module had something important to say |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
45 |
|
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
46 |
2 |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
47 |
: `warn` - something is not right |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
48 |
|
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
49 |
3 |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
50 |
: `error` - something has gone wrong |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
51 |
|
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
52 |
Status changes are generally also reported in Prosodys logs, so look there for details. |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
53 |
|
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
54 |
# See also |
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
55 |
|
ecfd7aece33b
mod_measure_modules: Report module statuses via OpenMetrics
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
56 |
- [mod_http_status] provides all module status details as JSON via HTTP |