Skip to content

Instantly share code, notes, and snippets.

@samber
Last active October 21, 2020 00:29
Show Gist options
  • Save samber/0d6b91aae7600d8cfede66ab63263e19 to your computer and use it in GitHub Desktop.
Save samber/0d6b91aae7600d8cfede66ab63263e19 to your computer and use it in GitHub Desktop.
Ejabberd Prometheus exporter
#!/bin/bash
NAMESPACE="ejabberd"
EJABBERD_CLI="docker exec -i ejabberd-1 ejabberdctl"
function gauge() {
metric_name=$NAMESPACE"_"$1
help_message=$2
value=$3
echo "
# HELP $metric_name $help_message\r\n
# TYPE $metric_name gauge\r\n
$metric_name{} $value\r\n
"
}
function slash_metrics() {
gauge "visitors" "Number of visitors connected to Ejabberd" `$EJABBERD_CLI connected_users_info | grep customer | wc -l`
gauge "agents" "Number of agents connected to Ejabberd" `$EJABBERD_CLI connected_users_info | grep operators | wc -l`
gauge "http" "Number of http connections to Ejabberd" `$EJABBERD_CLI connected_users_info | grep http-bind | wc -l`
gauge "websocket" "Number of websocket connections to Ejabberd" `$EJABBERD_CLI connected_users_info | grep websocket | wc -l`
gauge "muc" "Number of muc started on Ejabberd" `$EJABBERD_CLI muc_online_rooms global | wc -l`
gauge "instances" "Number of instances in the Ejabberd cluster" `$EJABBERD_CLI list_cluster | wc -l`
gauge "registered_users" "Number of users registered in Ejabberd" `$EJABBERD_CLI stats registeredusers`
gauge "users" "Number of users in Ejabberd" `$EJABBERD_CLI stats onlineusers`
gauge "processes" "Number of processes started in Ejabberd cluster" `$EJABBERD_CLI stats processes`
}
if [ "$1" = "start" ]; then
echo "Starting server"
path=$0
socat tcp-l:9000,reuseaddr,fork EXEC:$path
else
echo -ne "HTTP/1.1 200 OK\r\n\r\n"`slash_metrics`
fi
@samber
Copy link
Author

samber commented Dec 6, 2016

$ ./ejabberd-exporter.sh
Starting server
$ curl localhost:9000
# HELP ejabberd_agents Number of agents connected to Ejabberd
# TYPE ejabberd_agents gauge
ejabberd_agents 0
# HELP ejabberd_http Number of http connections to Ejabberd
# TYPE ejabberd_http gauge
ejabberd_http 0
# HELP ejabberd_instances Number of instances in the Ejabberd cluster
# TYPE ejabberd_instances gauge
ejabberd_instances 1
# HELP ejabberd_muc Number of muc started on Ejabberd
# TYPE ejabberd_muc gauge
ejabberd_muc 0
# HELP ejabberd_processes Number of processes started in Ejabberd cluster
# TYPE ejabberd_processes gauge
ejabberd_processes 182
# HELP ejabberd_registered_users Number of users registered in Ejabberd
# TYPE ejabberd_registered_users gauge
ejabberd_registered_users 1
# HELP ejabberd_users Number of users in Ejabberd
# TYPE ejabberd_users gauge
ejabberd_users 0
# HELP ejabberd_visitors Number of visitors connected to Ejabberd
# TYPE ejabberd_visitors gauge
ejabberd_visitors 0
# HELP ejabberd_websocket Number of websocket connections to Ejabberd
# TYPE ejabberd_websocket gauge
ejabberd_websocket 0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment