mirror of
https://github.com/pstadler/metrics.sh.git
synced 2025-11-09 05:34:54 -05:00
load custom reporters. update README
This commit is contained in:
91
lib/main.sh
91
lib/main.sh
@@ -5,19 +5,21 @@ for util in ./lib/utils/*.sh; do
|
||||
. $util
|
||||
done
|
||||
|
||||
# init
|
||||
__AVAILABLE_METRICS=
|
||||
__AVAILABLE_REPORTERS=
|
||||
|
||||
main_defaults () {
|
||||
if [ -z $INTERVAL ]; then
|
||||
INTERVAL=2
|
||||
fi
|
||||
if [ -z $METRICS ]; then
|
||||
METRICS=cpu,disk_io,disk_usage,heartbeat,memory,network_io,swap
|
||||
if [ -z $DEFAULT_METRICS ]; then
|
||||
DEFAULT_METRICS=cpu,memory,swap,network_io,disk_io,disk_usage
|
||||
fi
|
||||
if [ -z $REPORTER ]; then
|
||||
REPORTER=stdout
|
||||
if [ -z $DEFAULT_REPORTER ]; then
|
||||
DEFAULT_REPORTER=stdout
|
||||
fi
|
||||
if [ -z $CUSTOM_REPORTERS_PATH ]; then
|
||||
CUSTOM_REPORTERS_PATH=./reporters/custom
|
||||
fi
|
||||
if [ -z $CUSTOM_METRICS_PATH ]; then
|
||||
CUSTOM_METRICS_PATH=./metrics/custom
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -25,28 +27,23 @@ main_load () {
|
||||
# set defaults
|
||||
main_defaults
|
||||
|
||||
# load reporter
|
||||
for file in ./reporters/*.sh; do
|
||||
local filename=$(basename $file)
|
||||
local reporter=${filename%.*}
|
||||
|
||||
__AVAILABLE_REPORTERS=$(trim "$__AVAILABLE_REPORTERS $reporter")
|
||||
done
|
||||
|
||||
# load available metrics
|
||||
for file in ./metrics/*.sh; do
|
||||
local filename=$(basename $file)
|
||||
local metric=${filename%.*}
|
||||
|
||||
# register metric
|
||||
__AVAILABLE_METRICS=$(trim "$__AVAILABLE_METRICS $metric")
|
||||
done
|
||||
__AVAILABLE_REPORTERS=$(get_available_reporters)
|
||||
__AVAILABLE_METRICS=$(get_available_metrics)
|
||||
}
|
||||
|
||||
main_init () {
|
||||
# handle args
|
||||
__METRICS=$(echo $1 | sed 's/,/ /g')
|
||||
__REPORTER=$2
|
||||
local metrics="$1"
|
||||
local reporter="$2"
|
||||
|
||||
if [ -z "$metrics" ]; then
|
||||
metrics=$DEFAULT_METRICS
|
||||
fi
|
||||
if [ -z "$reporter" ]; then
|
||||
reporter=$DEFAULT_REPORTER
|
||||
fi
|
||||
|
||||
__METRICS=$(echo $metrics| sed 's/,/ /g')
|
||||
__REPORTER=$reporter
|
||||
|
||||
# create temp dir
|
||||
TEMP_DIR=$(make_temp_dir)
|
||||
@@ -78,14 +75,17 @@ main_collect () {
|
||||
# init reporter
|
||||
local reporter_name=$(get_name_for_reporter $__REPORTER)
|
||||
local reporter_alias=$(get_alias $__REPORTER)
|
||||
load_reporter_with_prefix __r_${reporter_alias}_ ./reporters/${reporter_name}.sh
|
||||
load_reporter_with_prefix __r_${reporter_alias}_ ${reporter_name}
|
||||
|
||||
if is_function __r_${reporter_alias}_defaults; then
|
||||
__r_${reporter_alias}_defaults
|
||||
fi
|
||||
|
||||
if is_function __r_${reporter_alias}_config; then
|
||||
__r_${reporter_alias}_config
|
||||
fi
|
||||
|
||||
verbose "Starting reporter '${reporter_alias}'"
|
||||
if is_function __r_${reporter_alias}_start; then
|
||||
__r_${reporter_alias}_start
|
||||
fi
|
||||
@@ -98,7 +98,7 @@ main_collect () {
|
||||
local metric_alias=$(get_alias $metric)
|
||||
|
||||
# init metric
|
||||
load_metric_with_prefix __m_${metric_alias}_ ./metrics/${metric_name}.sh
|
||||
load_metric_with_prefix __m_${metric_alias}_ ${metric_name}
|
||||
|
||||
if is_function __m_${metric_alias}_defaults; then
|
||||
__m_${metric_alias}_defaults
|
||||
@@ -108,11 +108,13 @@ main_collect () {
|
||||
__m_${metric_alias}_config
|
||||
fi
|
||||
|
||||
verbose "Starting metric '${metric_alias}'"
|
||||
if is_function __m_${metric_alias}_start; then
|
||||
__m_${metric_alias}_start
|
||||
fi
|
||||
|
||||
if ! is_function __m_${metric_alias}_collect; then
|
||||
verbose "No collect() function found for '${metric_alias}'"
|
||||
continue
|
||||
fi
|
||||
|
||||
@@ -172,10 +174,19 @@ main_terminate () {
|
||||
}
|
||||
|
||||
main_print_docs () {
|
||||
echo "# GLOBAL"
|
||||
echo
|
||||
echo "INTERVAL=$INTERVAL"
|
||||
echo "DEFAULT_REPORTER=$DEFAULT_REPORTER"
|
||||
echo "DEFAULT_METRICS=$DEFAULT_METRICS"
|
||||
echo "CUSTOM_REPORTERS_PATH=$CUSTOM_REPORTERS_PATH"
|
||||
echo "CUSTOM_METRICS_PATH=$CUSTOM_METRICS_PATH"
|
||||
|
||||
echo
|
||||
echo "# METRICS"
|
||||
|
||||
for metric in $__AVAILABLE_METRICS; do
|
||||
load_metric_with_prefix __m_${metric}_ ./metrics/${metric}.sh
|
||||
load_metric_with_prefix __m_${metric}_ ${metric}
|
||||
|
||||
if ! is_function __m_${metric}_docs; then
|
||||
continue
|
||||
@@ -193,7 +204,7 @@ main_print_docs () {
|
||||
echo
|
||||
echo "# REPORTERS"
|
||||
for reporter in $__AVAILABLE_REPORTERS; do
|
||||
load_reporter_with_prefix __r_${reporter}_ ./reporters/${reporter}.sh
|
||||
load_reporter_with_prefix __r_${reporter}_ ${reporter}
|
||||
|
||||
if ! is_function __r_${reporter}_docs; then
|
||||
continue
|
||||
@@ -212,11 +223,13 @@ main_print_docs () {
|
||||
main_print_config () {
|
||||
echo "[metrics.sh]"
|
||||
echo ";INTERVAL=$INTERVAL"
|
||||
echo ";METRICS=$METRICS"
|
||||
echo ";REPORTER=$REPORTER"
|
||||
echo ";DEFAULT_REPORTER=$DEFAULT_REPORTER"
|
||||
echo ";DEFAULT_METRICS=$DEFAULT_METRICS"
|
||||
echo ";CUSTOM_REPORTERS_PATH=$CUSTOM_REPORTERS_PATH"
|
||||
echo ";CUSTOM_METRICS_PATH=$CUSTOM_METRICS_PATH"
|
||||
|
||||
for metric in $__AVAILABLE_METRICS; do
|
||||
load_metric_with_prefix __m_${metric}_ ./metrics/${metric}.sh
|
||||
load_metric_with_prefix __m_${metric}_ ${metric}
|
||||
|
||||
if is_function __m_${metric}_defaults; then
|
||||
__m_${metric}_defaults
|
||||
@@ -231,11 +244,7 @@ main_print_config () {
|
||||
done
|
||||
|
||||
for reporter in $__AVAILABLE_REPORTERS; do
|
||||
load_reporter_with_prefix __r_${reporter}_ ./reporters/${reporter}.sh
|
||||
|
||||
if ! is_function __r_${reporter}_docs; then
|
||||
continue
|
||||
fi
|
||||
load_reporter_with_prefix __r_${reporter}_ ${reporter}
|
||||
|
||||
if is_function __r_${reporter}_defaults; then
|
||||
__r_${reporter}_defaults
|
||||
@@ -243,6 +252,8 @@ main_print_config () {
|
||||
|
||||
echo
|
||||
echo ";[reporter $reporter]"
|
||||
print_prefixed ";" "$(__r_${reporter}_docs)"
|
||||
if is_function __r_${reporter}_docs; then
|
||||
print_prefixed ";" "$(__r_${reporter}_docs)"
|
||||
fi
|
||||
done
|
||||
}
|
||||
@@ -1,10 +1,43 @@
|
||||
#!/bin/sh
|
||||
|
||||
get_available_reporters () {
|
||||
local result
|
||||
for file in `ls ./reporters/*.sh $CUSTOM_REPORTERS_PATH/*.sh 2>/dev/null`; do
|
||||
local filename=$(basename $file)
|
||||
local reporter=${filename%.*}
|
||||
result=$(echo "$result $reporter")
|
||||
done
|
||||
echo $result
|
||||
}
|
||||
|
||||
get_available_metrics () {
|
||||
local result
|
||||
for file in `ls ./metrics/*.sh $CUSTOM_METRICS_PATH/*.sh 2>/dev/null`; do
|
||||
local filename=$(basename $file)
|
||||
local metric=${filename%.*}
|
||||
# register metric
|
||||
result=$(trim "$result $metric")
|
||||
done
|
||||
echo $result
|
||||
}
|
||||
|
||||
load_reporter_with_prefix () {
|
||||
local prefix=$1
|
||||
local file=$2
|
||||
local content
|
||||
local name=$2
|
||||
|
||||
local file
|
||||
for dir in $CUSTOM_REPORTERS_PATH ./reporters; do
|
||||
if [ -f $dir/$name.sh ]; then
|
||||
file=$dir/$name.sh
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z $file ]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
local content
|
||||
content=$(sed \
|
||||
-e 's/^[[:space:]]*\(defaults[ ]*()[ ]*{\)/'"$prefix"'\1/' \
|
||||
-e 's/^[[:space:]]*\(start[ ]*()[ ]*{\)/'"$prefix"'\1/' \
|
||||
@@ -17,10 +50,21 @@ load_reporter_with_prefix () {
|
||||
|
||||
load_metric_with_prefix () {
|
||||
local prefix=$1
|
||||
local file=$2
|
||||
local content
|
||||
local name=$2
|
||||
|
||||
# dash will error if this variable is defined as `local`
|
||||
local file
|
||||
for dir in $CUSTOM_METRICS_PATH ./metrics; do
|
||||
if [ -f $dir/$name.sh ]; then
|
||||
file=$dir/$name.sh
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z $file ]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
local content
|
||||
content=$(sed \
|
||||
-e 's/^[[:space:]]*\(defaults[ ]*()[ ]*{\)/'"$prefix"'\1/' \
|
||||
-e 's/^[[:space:]]*\(start[ ]*()[ ]*{\)/'"$prefix"'\1/' \
|
||||
|
||||
Reference in New Issue
Block a user