mirror of
https://github.com/pstadler/metrics.sh.git
synced 2025-02-28 13:59:12 -05:00
47 lines
836 B
Bash
Executable File
47 lines
836 B
Bash
Executable File
#!/bin/sh
|
|
|
|
# config
|
|
INTERVAL=2
|
|
REPORTER=stdout
|
|
|
|
# init
|
|
source utils.sh
|
|
_METRICS=()
|
|
|
|
# load reporter
|
|
source ./reporters/${REPORTER}.sh
|
|
copy_function report _r_${REPORTER}_report
|
|
unset -f init report terminate
|
|
|
|
# load metrics
|
|
for file in $(find ./metrics -type f -name '*.sh'); do
|
|
source $file
|
|
filename=$(basename $file)
|
|
metric=${filename%.*}
|
|
copy_function collect _m_${metric}_collect
|
|
_METRICS+=($metric)
|
|
unset -f init collect terminate
|
|
done
|
|
|
|
# init metrics
|
|
for metric in ${_METRICS[@]}; do
|
|
if ! is_function _m_${metric}_init; then
|
|
continue
|
|
fi
|
|
|
|
_m_${metric}_init
|
|
done
|
|
|
|
# collect metrics
|
|
while true; do
|
|
for metric in ${_METRICS[@]}; do
|
|
if ! is_function _m_${metric}_collect; then
|
|
continue
|
|
fi
|
|
|
|
result=$(_m_${metric}_collect)
|
|
_r_${REPORTER}_report $metric $result
|
|
done
|
|
|
|
sleep $INTERVAL
|
|
done |