armsnyder/a2s-exporter

A Prometheus exporter for Steam game servers

20

stars

27

commits

Go

primary language

Dec 1, 2025

updated

hub.docker.com/r/armsnyder/a2s-exporter
a2s
counter-strike
prometheus
prometheus-exporter
rust-game
rust-server
source-engine
source-server-query
steam
team-fortress-2
valheim
valheim-server
valve
valve-servers

README

CI

A2S Exporter

A Prometheus exporter for Steam game server info.

Supports all Steam game servers which speak the UDP-based A2S query protocol, for example:

  • Counter-Strike
  • The Forest
  • Rust
  • Team Fortress 2
  • Valheim

Usage

The image is hosted on Docker Hub. (Link)

docker run --rm -p 9841:9841 armsnyder/a2s-exporter --address myserver.example.com:12345

Arguments

Arguments may be provided using commandline flags or environment variables.

Required

FlagVariableHelp
--addressA2S_EXPORTER_QUERY_ADDRESSAddress of the A2S query server as host:port (This is a separate port from the main server port).

Optional

FlagVariableDefaultHelp
--portA2S_EXPORTER_PORT9841Port for the metrics exporter.
--pathA2S_EXPORTER_PATH/metricsPath for the metrics exporter.
--namespaceA2S_EXPORTER_NAMESPACEa2sNamespace prefix for all exported a2s metrics.
--exclude-player-metricsA2S_EXPORTER_EXCLUDE_PLAYER_METRICSfalseIf true, exclude all player_* metrics. This option may be necessary for some servers.
--a2s-only-metricsA2S_EXPORTER_A2S_ONLY_METRICSfalseIf true, excludes Go runtime and promhttp metrics.
--max-packet-sizeA2S_EXPORTER_MAX_PACKET_SIZE1400Advanced option to set a non-standard max packet size of the A2S query server.

Special

FlagHelp
-hShow help.
--versionShow build version.

Exported Metrics

Metrics names are prefixed with a namespace (default a2s_).

NameHelpLabels
player_countTotal number of connected players.server_name
player_durationTime (in seconds) player has been connected to the server.server_name player_name player_index
player_infoNon-numerical player info, including player_name and player_index. The value is 1, and the info is in the labels.server_name player_name player_index
player_scorePlayer's score (usually "frags" or "kills").server_name player_name player_index
player_the_ship_deathsPlayer's deaths in a The Ship server.server_name player_name player_index
player_the_ship_moneyPlayer's money in a The Ship server.server_name player_name player_index
player_upWas the last player info query successful.
server_botsNumber of bots on the server.server_name
server_infoNon-numerical server info, including server_steam_id and version. The value is 1, and info is in the labels.server_name map folder game server_type server_os version server_id keywords server_game_id server_steam_id the_ship_mode source_tv_name
server_max_playersMaximum number of players the server reports it can hold.server_name
server_playersNumber of players on the server.server_name
server_portThe server's game port number.server_name
server_protocolProtocol version used by the server.server_name
server_source_tv_portSpectator port number for SourceTV.server_name
server_the_ship_durationTime (in seconds) before a player is arrested while being witnessed in a The Ship server.server_name
server_the_ship_witnessesThe number of witnesses necessary to have a player arrested in a The Ship server.server_name
server_upWas the last server info query successful.
server_vacSpecifies whether the server uses VAC (0 for unsecured, 1 for secured).server_name
server_visibilityIndicates whether the server requires a password (0 for public, 1 for private).server_name

Credits

This exporter depends on rumblefrog/go-a2s (MIT). Big thanks to them!

Contributors

armsnyder

22 commits

armsnyder/a2s-exporter

A Prometheus exporter for Steam game servers

20

stars

27

commits

Go

primary language

Dec 1, 2025

updated

hub.docker.com/r/armsnyder/a2s-exporter
a2s
counter-strike
prometheus
prometheus-exporter
rust-game
rust-server
source-engine
source-server-query
steam
team-fortress-2
valheim
valheim-server
valve
valve-servers

README

CI

A2S Exporter

A Prometheus exporter for Steam game server info.

Supports all Steam game servers which speak the UDP-based A2S query protocol, for example:

  • Counter-Strike
  • The Forest
  • Rust
  • Team Fortress 2
  • Valheim

Usage

The image is hosted on Docker Hub. (Link)

docker run --rm -p 9841:9841 armsnyder/a2s-exporter --address myserver.example.com:12345

Arguments

Arguments may be provided using commandline flags or environment variables.

Required

FlagVariableHelp
--addressA2S_EXPORTER_QUERY_ADDRESSAddress of the A2S query server as host:port (This is a separate port from the main server port).

Optional

FlagVariableDefaultHelp
--portA2S_EXPORTER_PORT9841Port for the metrics exporter.
--pathA2S_EXPORTER_PATH/metricsPath for the metrics exporter.
--namespaceA2S_EXPORTER_NAMESPACEa2sNamespace prefix for all exported a2s metrics.
--exclude-player-metricsA2S_EXPORTER_EXCLUDE_PLAYER_METRICSfalseIf true, exclude all player_* metrics. This option may be necessary for some servers.
--a2s-only-metricsA2S_EXPORTER_A2S_ONLY_METRICSfalseIf true, excludes Go runtime and promhttp metrics.
--max-packet-sizeA2S_EXPORTER_MAX_PACKET_SIZE1400Advanced option to set a non-standard max packet size of the A2S query server.

Special

FlagHelp
-hShow help.
--versionShow build version.

Exported Metrics

Metrics names are prefixed with a namespace (default a2s_).

NameHelpLabels
player_countTotal number of connected players.server_name
player_durationTime (in seconds) player has been connected to the server.server_name player_name player_index
player_infoNon-numerical player info, including player_name and player_index. The value is 1, and the info is in the labels.server_name player_name player_index
player_scorePlayer's score (usually "frags" or "kills").server_name player_name player_index
player_the_ship_deathsPlayer's deaths in a The Ship server.server_name player_name player_index
player_the_ship_moneyPlayer's money in a The Ship server.server_name player_name player_index
player_upWas the last player info query successful.
server_botsNumber of bots on the server.server_name
server_infoNon-numerical server info, including server_steam_id and version. The value is 1, and info is in the labels.server_name map folder game server_type server_os version server_id keywords server_game_id server_steam_id the_ship_mode source_tv_name
server_max_playersMaximum number of players the server reports it can hold.server_name
server_playersNumber of players on the server.server_name
server_portThe server's game port number.server_name
server_protocolProtocol version used by the server.server_name
server_source_tv_portSpectator port number for SourceTV.server_name
server_the_ship_durationTime (in seconds) before a player is arrested while being witnessed in a The Ship server.server_name
server_the_ship_witnessesThe number of witnesses necessary to have a player arrested in a The Ship server.server_name
server_upWas the last server info query successful.
server_vacSpecifies whether the server uses VAC (0 for unsecured, 1 for secured).server_name
server_visibilityIndicates whether the server requires a password (0 for public, 1 for private).server_name

Credits

This exporter depends on rumblefrog/go-a2s (MIT). Big thanks to them!

Contributors

armsnyder

22 commits

Languages

Go

98.3%

Dockerfile

1.3%