Skip to content

Commit fe749f0

Browse files
committed
feat: New player_info metric
1 parent 0f76d26 commit fe749f0

File tree

3 files changed

+13
-5
lines changed

3 files changed

+13
-5
lines changed

README.md

+7-5
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,15 @@ Metrics names are prefixed with a namespace (default `a2s_`).
5555
Name | Help | Labels
5656
--- | --- | ---
5757
player_count | Total number of connected players. | server_name
58-
player_duration | Time (in seconds) player has been connected to the server. | server_name player_name player_index
59-
player_score | Player's score (usually \"frags\" or \"kills\"). | server_name player_name player_index
60-
player_the_ship_deaths | Player's deaths in a The Ship server. | server_name player_name player_index
61-
player_the_ship_money | Player's money in a The Ship server. | server_name player_name player_index
58+
player_duration | Time (in seconds) player has been connected to the server. | server_name,player_name,player_index
59+
player_info | Non-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
60+
player_score | Player's score (usually \"frags\" or \"kills\"). | server_name,player_name,player_index
61+
player_the_ship_deaths | Player's deaths in a The Ship server. | server_name,player_name,player_index
62+
player_the_ship_money | Player's money in a The Ship server. | server_name,player_name,player_index
6263
player_up | Was the last player info query successful. |
6364
server_bots | Number of bots on the server. | server_name
64-
server_info | Non-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
65+
server_info | Non-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_t
66+
v_name
6567
server_max_players | Maximum number of players the server reports it can hold. | server_name
6668
server_players | Number of players on the server. | server_name
6769
server_port | The server's game port number. | server_name

internal/collector/collector.go

+2
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ func New(namespace, addr string, excludePlayerMetrics bool, clientOptions ...fun
4949
basicDesc("server_the_ship_duration", "Time (in seconds) before a player is arrested while being witnessed in a The Ship server.")
5050

5151
basicDesc("player_count", "Total number of connected players.")
52+
playerDesc("player_info", "Non-numerical player info, including player_name and player_index. The value is 1, and the info is in the labels.")
5253
playerDesc("player_duration", "Time (in seconds) player has been connected to the server.")
5354
playerDesc("player_score", `Player's score (usually "frags" or "kills").`)
5455
playerDesc("player_the_ship_deaths", "Player's deaths in a The Ship server.")
@@ -221,6 +222,7 @@ func (c *Collector) collectPlayerInfo(playerInfo *a2s.PlayerInfo, add adder) {
221222
for _, player := range c.uniquePlayers(playerInfo.Players) {
222223
labelValues := []string{player.Name, fmt.Sprintf("%d", player.Index)}
223224

225+
add("player_info", 1, labelValues...)
224226
add("player_duration", float64(player.Duration), labelValues...)
225227
add("player_score", float64(player.Score), labelValues...)
226228

internal/collector/collector_test.go

+4
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,10 @@ func TestCollector(t *testing.T) {
117117
expectGauge{value: 32, labels: map[string]string{"server_name": "foo", "player_index": "0", "player_name": "jon"}},
118118
expectGauge{value: 64, labels: map[string]string{"server_name": "foo", "player_index": "0", "player_name": "alice"}},
119119
)
120+
testAssertGauge(t, metrics, "player_info",
121+
expectGauge{value: 1, labels: map[string]string{"server_name": "foo", "player_index": "0", "player_name": "jon"}},
122+
expectGauge{value: 1, labels: map[string]string{"server_name": "foo", "player_index": "0", "player_name": "alice"}},
123+
)
120124
}
121125

122126
func TestCollector_ExcludePlayerMetrics(t *testing.T) {

0 commit comments

Comments
 (0)