#!/bin/sh /etc/rc.common # # OpenWISP Monitoring Daemon # shellcheck disable=SC2034 START=99 STOP=15 USE_PROCD=1 PROG="/usr/sbin/openwisp-monitoring" PROG_NAME="OpenWISP monitoring daemon" time_to_seconds() { time=$1 { [ "$time" -ge 1 ] 2>/dev/null && seconds="$time"; } \ || { [ "${time%s}" -ge 1 ] 2>/dev/null && seconds="${time%s}"; } \ || { [ "${time%m}" -ge 1 ] 2>/dev/null && seconds=$((${time%m} * 60)); } \ || { [ "${time%h}" -ge 1 ] 2>/dev/null && seconds=$((${time%h} * 3600)); } \ || { [ "${time%d}" -ge 1 ] 2>/dev/null && seconds=$((${time%d} * 86400)); } echo "$seconds" unset seconds unset time } start_service() { # for openwisp-config config_load openwisp config_get base_url http url config_get uuid http uuid config_get key http key config_get cacert http cacert config_get capath http capath config_get_bool verify_ssl http verify_ssl "1" config_get respawn_threshold http respawn_threshold config_get respawn_timeout http respawn_timeout config_get respawn_retry http respawn_retry [ -n "$base_url" ] && base_url="--url $base_url" [ -n "$uuid" ] && uuid="--uuid $uuid" [ -n "$key" ] && key="--key $key" [ -n "$cacert" ] && cacert="--cacert $cacert" [ -n "$capath" ] && capath="--capath $capath" [ -n "$verify_ssl" ] && verify_ssl="--verify_ssl $verify_ssl" if [ -z "$base_url" ]; then logger -s "url is not set, please add it to /etc/config/openwisp" \ -t openwisp-monitoring \ -p daemon.err exit 1 fi # for openwisp-monitoring config_load openwisp-monitoring config_get monitored_interfaces monitoring monitored_interfaces "*" config_get interval monitoring interval "300" config_get_bool verbose_mode monitoring verbose_mode "0" config_get required_memory monitoring required_memory "0.05" config_get max_retries monitoring max_retries "5" config_get bootup_delay monitoring bootup_delay "10" interval="$(time_to_seconds "$interval")" if [ "$interval" -lt 1 ]; then logger -s "Interval is invalid. Use time value(eg: '10', '2m', '3h', '1d')" \ -t openwisp-monitoring \ -p daemon.err exit 1 fi interval="--interval $interval" verbose="--verbose_mode ${verbose_mode:-0}" required_memory="--required_memory $required_memory" max_retries="--max_retries $max_retries" bootup_delay="--bootup_delay $bootup_delay" procd_open_instance "openwisp-monitoring_collect_data" # shellcheck disable=SC2086,SC2154 procd_set_param command $PROG $interval $verbose $required_memory --mode collect --monitored_interfaces "$monitored_interfaces" procd_set_param respawn "${respawn_threshold:-3600}" "${respawn_timeout:-5}" "${respawn_retry:-5}" [ "$verbose_mode" -eq "1" ] && procd_set_param stdout 1 && procd_set_param stderr 1 procd_close_instance procd_open_instance "openwisp-monitoring_send_data" # shellcheck disable=SC2086 procd_set_param command $PROG $base_url $uuid $key $cacert $capath $verify_ssl $interval $verbose $max_retries $bootup_delay --mode send procd_set_param respawn "${respawn_threshold:-3600}" "${respawn_timeout:-5}" "${respawn_retry:-5}" [ "$verbose_mode" -eq "1" ] && procd_set_param stdout 1 && procd_set_param stderr 1 procd_close_instance logger -s "$PROG_NAME started" \ -t openwisp-monitoring \ -p daemon.info } stop_service() { logger -s "$PROG_NAME stopping" \ -t openwisp-monitoring \ -p daemon.info } service_triggers() { procd_add_reload_trigger "openwisp" "openwisp-monitoring" }