summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2023-09-20 10:55:13 +0200
committerMatthias Beyer <mail@beyermatthias.de>2023-09-20 10:56:43 +0200
commit2201713604a1cfbc4f244cb896c91b9443610bac (patch)
treec4a7849057eeb286f1b38c298ce23041e9990ddb
parentff0dc9a2790ad3dc2d5a9041bd4d8cf1685e7a71 (diff)
Add changelog entry for "show" output style
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r--.changelogs/unreleased/2023-09-20T08_54_35_168068392.md6
1 files changed, 6 insertions, 0 deletions
diff --git a/.changelogs/unreleased/2023-09-20T08_54_35_168068392.md b/.changelogs/unreleased/2023-09-20T08_54_35_168068392.md
new file mode 100644
index 0000000..a9be732
--- /dev/null
+++ b/.changelogs/unreleased/2023-09-20T08_54_35_168068392.md
@@ -0,0 +1,6 @@
++++
+subject = "Command output styling"
+type = "Misc"
++++
+
+The "show" command output got some styling.
id='n71' href='#n71'>71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198
# no need for shebang - this file is loaded from charts.d.plugin

# netdata
# real-time performance and health monitoring, done right!
# (C) 2016 Costa Tsaousis <costa@tsaousis.gr>
# GPL v3+
#

apcupsd_ip=
apcupsd_port=

declare -A apcupsd_sources=(
    ["local"]="127.0.0.1:3551"
)

# how frequently to collect UPS data
apcupsd_update_every=10

apcupsd_timeout=3

# the priority of apcupsd related to other charts
apcupsd_priority=90000

apcupsd_get() {
	run -t $apcupsd_timeout apcaccess status "$1"
}

apcupsd_check() {

	# this should return:
	#  - 0 to enable the chart
	#  - 1 to disable the chart

	require_cmd apcaccess || return 1

	# backwards compatibility
	if [ "${apcupsd_ip}:${apcupsd_port}" != ":" ]
	then
	    apcupsd_sources["local"]="${apcupsd_ip}:${apcupsd_port}"
	fi

    local host working=0 failed=0
    for host in "${!apcupsd_sources[@]}"
    do
        run apcupsd_get "${apcupsd_sources[${host}]}" >/dev/null
        if [ $? -ne 0 ]
        then
            error "cannot get information for apcupsd server ${host} on ${apcupsd_sources[${host}]}."
            failed=$((failed + 1))
        elif [ $(apcupsd_get "${apcupsd_sources[${host}]}" | awk '/^STATUS.*/{ print $3 }') != "ONLINE" ]
        then
            error "APC UPS ${host} on ${apcupsd_sources[${host}]} is not online."
            failed=$((failed + 1))
        else
            working=$((working + 1))
        fi
    done

    if [ ${working} -eq 0 ]
    then
        error "No APC UPSes found available."
        return 1
    fi

	return 0
}

apcupsd_create() {
    local host src
    for host in "${!apcupsd_sources[@]}"
    do
        src=${apcupsd_sources[${host}]}

        # create the charts
        cat <<EOF
CHART apcupsd_${host}.charge '' "UPS Charge for ${host} on ${src}" "percentage" ups apcupsd.charge area $((apcupsd_priority + 1)) $apcupsd_update_every
DIMENSION battery_charge charge absolute 1 100

CHART apcupsd_${host}.battery_voltage '' "UPS Battery Voltage for ${host} on ${src}" "Volts" ups apcupsd.battery.voltage line $((apcupsd_priority + 3)) $apcupsd_update_every
DIMENSION battery_voltage voltage absolute 1 100
DIMENSION battery_voltage_nominal nominal absolute 1 100

CHART apcupsd_${host}.input_voltage '' "UPS Input Voltage for ${host} on ${src}" "Volts" input apcupsd.input.voltage line $((apcupsd_priority + 4)) $apcupsd_update_every
DIMENSION input_voltage voltage absolute 1 100
DIMENSION input_voltage_min min absolute 1 100
DIMENSION input_voltage_max max absolute 1 100

CHART apcupsd_${host}.input_frequency '' "UPS Input Frequency for ${host} on ${src}" "Hz" input apcupsd.input.frequency line $((apcupsd_priority + 5)) $apcupsd_update_every
DIMENSION input_frequency frequency absolute 1 100

CHART apcupsd_${host}.output_voltage '' "UPS Output Voltage for ${host} on ${src}" "Volts" output apcupsd.output.voltage line $((apcupsd_priority + 6)) $apcupsd_update_every
DIMENSION output_voltage voltage absolute 1 100
DIMENSION output_voltage_nominal nominal absolute 1 100

CHART apcupsd_${host}.load '' "UPS Load for ${host} on ${src}" "percentage" ups apcupsd.load area $((apcupsd_priority)) $apcupsd_update_every
DIMENSION load load absolute 1 100

CHART apcupsd_${host}.temp '' "UPS Temperature for ${host} on ${src}" "Celsius" ups apcupsd.temperature line $((apcupsd_priority + 7)) $apcupsd_update_every
DIMENSION temp temp absolute 1 100

CHART apcupsd_${host}.time '' "UPS Time Remaining for ${host} on ${src}" "Minutes" ups apcupsd.time area $((apcupsd_priority + 2)) $apcupsd_update_every
DIMENSION time time absolute 1 100

EOF
    done
	return 0
}


apcupsd_update() {
	# the first argument to this function is the microseconds since last update
	# pass this parameter to the BEGIN statement (see bellow).

	# do all the work to collect / calculate the values
	# for each dimension
	# remember: KEEP IT SIMPLE AND SHORT

    local host working=0 failed=0
    for host in "${!apcupsd_sources[@]}"
    do
    	apcupsd_get "${apcupsd_sources[${host}]}" | awk "

BEGIN {
	battery_charge = 0;
	battery_voltage = 0;
	battery_voltage_nominal = 0;
	input_voltage = 0;
	input_voltage_min = 0;
	input_voltage_max = 0;
	input_frequency = 0;
        output_voltage = 0;
 	output_voltage_nominal = 0;
	load = 0;
	temp = 0;
	time = 0;
}
/^BCHARGE.*/		{ battery_charge = \$3 * 100 };
/^BATTV.*/		{ battery_voltage = \$3 * 100 };
/^NOMBATTV.*/		{ battery_voltage_nominal = \$3 * 100 };
/^LINEV.*/		{ input_voltage = \$3 * 100 };
/^MINLINEV.*/		{ input_voltage_min = \$3 * 100 };
/^MAXLINEV.*/		{ input_voltage_max = \$3 * 100 };
/^LINEFREQ.*/		{ input_frequency = \$3 * 100 };
/^OUTPUTV.*/		{ output_voltage = \$3 * 100 };
/^NOMOUTV.*/		{ output_voltage_nominal = \$3 * 100 };
/^LOADPCT.*/		{ load = \$3 * 100 };
/^ITEMP.*/		{ temp = \$3 * 100 };
/^TIMELEFT.*/		{ time = \$3 * 100 };
END {
	print \"BEGIN apcupsd_${host}.charge $1\";
	print \"SET battery_charge = \" battery_charge;
	print \"END\"

	print \"BEGIN apcupsd_${host}.battery_voltage $1\";
	print \"SET battery_voltage = \" battery_voltage;
	print \"SET battery_voltage_nominal = \" battery_voltage_nominal;
	print \"END\"

	print \"BEGIN apcupsd_${host}.input_voltage $1\";
	print \"SET input_voltage = \" input_voltage;
	print \"SET input_voltage_min = \" input_voltage_min;
	print \"SET input_voltage_max = \" input_voltage_max;
	print \"END\"

	print \"BEGIN apcupsd_${host}.input_frequency $1\";
	print \"SET input_frequency = \" input_frequency;
	print \"END\"

	print \"BEGIN apcupsd_${host}.output_voltage $1\";
	print \"SET output_voltage = \" output_voltage;
        print \"SET output_voltage_nominal = \" output_voltage_nominal;
	print \"END\"

	print \"BEGIN apcupsd_${host}.load $1\";
	print \"SET load = \" load;
	print \"END\"

	print \"BEGIN apcupsd_${host}.temp $1\";
	print \"SET temp = \" temp;
	print \"END\"

	print \"BEGIN apcupsd_${host}.time $1\";
	print \"SET time = \" time;
	print \"END\"
}"
        if [ $? -ne 0 ]
        then
            failed=$((failed + 1))
        	error "failed to get values for APC UPS ${host} on ${apcupsd_sources[${host}]}" && return 1
        else
            working=$((working + 1))
        fi
    done

	[ $working -eq 0 ] && error "failed to get values from all APC UPSes" && return 1

	return 0
}