Files

29 lines
1.1 KiB
Bash
Raw Permalink Normal View History

#!/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