Introduction
Warning: This API is considered obsolete. Please use WombatOAM for monitoring or one of the exometer reporters and your favourite statistics service.
To expose MongooseIM metrics, an adequate endpoint must be included in the Cowboy HTTP listener section.
Here's an example:
...
{ {5288, "127.0.0.1"}, ejabberd_cowboy, [
...
{modules, [
{"localhost", "/api", [{handlers, [mongoose_api_metrics]}]}
]}
]}
...
If you'd like to learn more about metrics in MongooseIM, please visit MongooseIM metrics page.
Security notice
An auth mechanism is available only for the new administration API. That's why we recommend to expose this API only using a private interface or a port hidden behind a firewall to limit the access to the API. The above configuration starts the API only on a loopback interface.
Response format
The responses are composed in a JSON format with a root element containing one or more attributes as response elements.
Example response:
{
"hosts": [
"localhost"
],
"metrics": [
"xmppErrorIq",
"xmppPresenceReceived",
"xmppMessageBounced",
(...)
],
"global": [
"nodeSessionCount",
"totalSessionCount",
"uniqueSessionCount",
(...)
]
}
Services
GET /api/metrics
Returns 200 OK
and two elements:
hosts
- A list of XMPP host names available on the server.metrics
- A list of per-host metrics.global
- A list of global metrics.
GET /api/metrics/all
Returns 200 OK
and an element:
metrics
- A list of aggregated (sum of all domains) per-host metrics with their values.
GET /api/metrics/all/:metric
On success returns 200 OK
and an element:
metric
- An aggregated (sum of all domains) per-host metric.
Returns 404 Not Found
when metric :metric
doesn't exist.
GET /api/metrics/host/:host
On success returns 200 OK
and an element:
metrics
- A list of per-host metrics and their values for host:host
.
Returns 404 Not Found
when host :host
doesn't exist.
GET /api/metrics/host/:host/:metric
On success returns 200 OK
and an element:
metric
- A per-host metric:metric
and its value for host:host
.
Returns 404 Not Found
when the pair (host :host
, metric :metric
) doesn't exist.
GET /api/metrics/global
On success returns 200 OK
and an element:
metrics
- A list of all global metrics and their values.
GET /api/metrics/global/:metric
On success returns 200 OK
and an element:
metric
- A global metric:metric
and its value.
Returns 404 Not Found
when metric :metric
doesn't exist.
collectd integration
The interface is compatible with the collectd curl_json plugin. Data fetched by collectd may be later visualized by tools like Graphite.
Here's an example of a collectd configuration entry that will fetch all available metrics for a given host:
LoadPlugin curl_json
...
<Plugin curl_json>
<URL "http://<MONGOOSEIM HOST>:<MONGOOSEIM HTTP LISTENER PORT>/api/metrics/host/<XMPP HOST>">
Instance "mongooseim"
<Key "metrics/sessionCount/value">
Type "absolute"
</Key>
<Key "metrics/*/count">
Type "absolute"
</Key>
<Key "metrics/*/one">
Type "absolute"
</Key>
</URL>
</Plugin>