Files
NWC2026-AstropotaPOD/telegraf.sh
T
2026-09-06 12:08:05 -04:00

105 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
if [ -z "$INFLUX_TOKEN" ]; then
echo "WARNING: You need to set an INFLUX_TOKEN environment variable or else it won't actually work."
fi
# This is hardcoded here because it's easier. Find it on your own. :-)
PPBAkey="00e086b2-85b9-4562-a6bd-6d5a68ad2c26"
fluxHost="192.168.0.6"
fluxPort="8086"
ppbaHost="192.168.0.151"
ppbaPort="32000"
do_help() {
echo "Help coming soon. I promise. Do not panic!"
exit
}
do_preface() {
cat << PREFACE_EOF
[global_tags]
[agent]
interval = "10s"
round_interval = true
metric_batch_size = 1000
metric_buffer_limit = 10000
collection_jitter = "0s"
flush_interval = "10s"
flush_jitter = "0s"
precision = "0s"
[[outputs.influxdb_v2]]
urls = ["http://${fluxHost}:${fluxPort}"]
token = "$INFLUX_TOKEN"
organization = "Astropotamus"
bucket = "AstropotaPOD"
PREFACE_EOF
}
do_postface() {
cat << POSTFACE_EOF
POSTFACE_EOF
}
do_ppba() {
do_preface
cat << PPBA_EOF
[[inputs.http]]
urls = [
"http://${ppbaHost}:${ppbaPort}/Driver/PPBAdvance/Report?DriverUniqueKey=${PPBAkey}"
]
name_override = "PPBA"
data_format = "json"
tagexclude = ["url", "host"]
json_query="data.message"
json_string_fields=["dewHubStatus_hub_?_current_isOverCurrent","powerHubStatus_state","powerVariablePortStatus_state"]
PPBA_EOF
do_postface
}
do_weather() {
do_preface
cat << WEATHER_EOF
[[inputs.http]]
urls=["https://api.openweathermap.org/data/2.5/weather?id=5126015&units=metric&appid=043d58f75a4ffe7cf5d414ead183cb7f"]
data_format = "json"
tag_keys = [ "coord_lon", "coord_lat", "sys_country", "id", "name" ]
json_string_fields = [ "weather_0_main", "weather_0_description" ]
json_time_key = "dt"
json_time_format = "unix"
name_override = "openweathermap"
WEATHER_EOF
do_postface
}
do_local() {
do_preface
cat << LOCAL_EOF
[[inputs.cpu]]
percpu = true
totalcpu = true
collect_cpu_time = false
report_active = false
core_tags = false
[[inputs.mem]]
[[inputs.system]]
LOCAL_EOF
do_postface
}
tmpFile=$(mktemp)
while [ -n "$1" ]; do
case "$1" in
-h|--help) do_help;;
--ppba) do_ppba > $tmpFile; shift 1;;
--weather) do_weather > $tmpFile; shift 1;;
--iss) rm $tmpFile; echo "Not yet."; exit;;
--local) do_local > $tmpFile; shift 1;;
*) shift 1;;
esac
done
telegraf --config $tmpFile --once --quiet
rm $tmpFile