29 lines
1.1 KiB
Bash
Executable File
29 lines
1.1 KiB
Bash
Executable File
#!/bin/sh
|
|
# Only ordinary console commands: no /c, /sc, Lua, mods, or achievement changes.
|
|
set -eu
|
|
trap 'exit 0' TERM INT
|
|
metrics_dir=${METRICS_DIR:-/metrics}
|
|
mkdir -p "$metrics_dir"
|
|
while :; do
|
|
now=$(date +%s)
|
|
up=0
|
|
players=''
|
|
if response=$(timeout 8 rcon /players online 2>/dev/null); then
|
|
players=$(printf '%s\n' "$response" | sed -n 's/^Online players (\([0-9][0-9]*\)):.*/\1/p' | head -1)
|
|
[ -z "$players" ] || up=1
|
|
fi
|
|
{
|
|
echo '# HELP factorio_server_up Authenticated non-Lua RCON player query succeeded.'
|
|
echo '# TYPE factorio_server_up gauge'
|
|
echo "factorio_server_up $up"
|
|
echo '# HELP factorio_players_online Connected players; omitted if the query fails.'
|
|
echo '# TYPE factorio_players_online gauge'
|
|
[ -z "$players" ] || echo "factorio_players_online $players"
|
|
echo '# HELP factorio_collector_last_poll_timestamp_seconds Last completed polling attempt.'
|
|
echo '# TYPE factorio_collector_last_poll_timestamp_seconds gauge'
|
|
echo "factorio_collector_last_poll_timestamp_seconds $now"
|
|
} > "$metrics_dir/factorio.prom.tmp"
|
|
mv "$metrics_dir/factorio.prom.tmp" "$metrics_dir/factorio.prom"
|
|
sleep 15
|
|
done
|