mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Merge branch 'fix_metrics' into 'master'
fix client stats, difference client/player See merge request veloren/veloren!1387
This commit is contained in:
commit
74caa01185
@ -801,6 +801,11 @@ impl Server {
|
|||||||
.create_entity_synced()
|
.create_entity_synced()
|
||||||
.with(client)
|
.with(client)
|
||||||
.build();
|
.build();
|
||||||
|
self.state
|
||||||
|
.ecs()
|
||||||
|
.read_resource::<metrics::PlayerMetrics>()
|
||||||
|
.clients_connected
|
||||||
|
.inc();
|
||||||
// Send client all the tracked components currently attached to its entity as
|
// Send client all the tracked components currently attached to its entity as
|
||||||
// well as synced resources (currently only `TimeOfDay`)
|
// well as synced resources (currently only `TimeOfDay`)
|
||||||
debug!("Starting initial sync with client.");
|
debug!("Starting initial sync with client.");
|
||||||
|
@ -25,8 +25,9 @@ pub struct StateTickMetrics {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub struct PlayerMetrics {
|
pub struct PlayerMetrics {
|
||||||
|
pub clients_connected: IntCounter,
|
||||||
pub players_connected: IntCounter,
|
pub players_connected: IntCounter,
|
||||||
pub players_disconnected: IntCounterVec, // timeout, network_error, gracefully
|
pub clients_disconnected: IntCounterVec, // timeout, network_error, gracefully
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct NetworkRequestMetrics {
|
pub struct NetworkRequestMetrics {
|
||||||
@ -113,31 +114,39 @@ impl StateTickMetrics {
|
|||||||
|
|
||||||
impl PlayerMetrics {
|
impl PlayerMetrics {
|
||||||
pub fn new() -> Result<(Self, RegistryFn), prometheus::Error> {
|
pub fn new() -> Result<(Self, RegistryFn), prometheus::Error> {
|
||||||
let players_connected = IntCounter::with_opts(Opts::new(
|
let clients_connected = IntCounter::with_opts(Opts::new(
|
||||||
"players_connected",
|
"clients_connected",
|
||||||
"shows the number of clients joined to the server",
|
"shows the number of clients joined to the server",
|
||||||
))?;
|
))?;
|
||||||
let players_disconnected = IntCounterVec::new(
|
let players_connected = IntCounter::with_opts(Opts::new(
|
||||||
|
"players_connected",
|
||||||
|
"shows the number of players joined to the server. A player is a client, that \
|
||||||
|
registers itself. Bots are not players (but clients)",
|
||||||
|
))?;
|
||||||
|
let clients_disconnected = IntCounterVec::new(
|
||||||
Opts::new(
|
Opts::new(
|
||||||
"players_disconnected",
|
"clients_disconnected",
|
||||||
"shows the number of clients disconnected from the server and the reason",
|
"shows the number of clients disconnected from the server and the reason",
|
||||||
),
|
),
|
||||||
&["reason"],
|
&["reason"],
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
|
let clients_connected_clone = clients_connected.clone();
|
||||||
let players_connected_clone = players_connected.clone();
|
let players_connected_clone = players_connected.clone();
|
||||||
let players_disconnected_clone = players_disconnected.clone();
|
let clients_disconnected_clone = clients_disconnected.clone();
|
||||||
|
|
||||||
let f = |registry: &Registry| {
|
let f = |registry: &Registry| {
|
||||||
|
registry.register(Box::new(clients_connected_clone))?;
|
||||||
registry.register(Box::new(players_connected_clone))?;
|
registry.register(Box::new(players_connected_clone))?;
|
||||||
registry.register(Box::new(players_disconnected_clone))?;
|
registry.register(Box::new(clients_disconnected_clone))?;
|
||||||
Ok(())
|
Ok(())
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok((
|
Ok((
|
||||||
Self {
|
Self {
|
||||||
|
clients_connected,
|
||||||
players_connected,
|
players_connected,
|
||||||
players_disconnected,
|
clients_disconnected,
|
||||||
},
|
},
|
||||||
Box::new(f),
|
Box::new(f),
|
||||||
))
|
))
|
||||||
|
@ -122,6 +122,7 @@ impl Sys {
|
|||||||
ClientState::Connected => {
|
ClientState::Connected => {
|
||||||
// Add Player component to this client
|
// Add Player component to this client
|
||||||
let _ = players.insert(entity, player);
|
let _ = players.insert(entity, player);
|
||||||
|
player_metrics.players_connected.inc();
|
||||||
|
|
||||||
// Give the Admin component to the player if their name exists in
|
// Give the Admin component to the player if their name exists in
|
||||||
// admin list
|
// admin list
|
||||||
@ -139,7 +140,6 @@ impl Sys {
|
|||||||
|
|
||||||
// Add to list to notify all clients of the new player
|
// Add to list to notify all clients of the new player
|
||||||
new_players.push(entity);
|
new_players.push(entity);
|
||||||
player_metrics.players_connected.inc();
|
|
||||||
},
|
},
|
||||||
// Use RequestState instead (No need to send `player` again).
|
// Use RequestState instead (No need to send `player` again).
|
||||||
_ => client.error_state(RequestStateError::Impossible),
|
_ => client.error_state(RequestStateError::Impossible),
|
||||||
@ -364,7 +364,7 @@ impl Sys {
|
|||||||
ClientMsg::Terminate => {
|
ClientMsg::Terminate => {
|
||||||
debug!(?entity, "Client send message to termitate session");
|
debug!(?entity, "Client send message to termitate session");
|
||||||
player_metrics
|
player_metrics
|
||||||
.players_disconnected
|
.clients_disconnected
|
||||||
.with_label_values(&["gracefully"])
|
.with_label_values(&["gracefully"])
|
||||||
.inc();
|
.inc();
|
||||||
server_emitter.emit(ServerEvent::ClientDisconnect(entity));
|
server_emitter.emit(ServerEvent::ClientDisconnect(entity));
|
||||||
@ -556,7 +556,7 @@ impl<'a> System<'a> for Sys {
|
|||||||
{
|
{
|
||||||
info!(?entity, "timeout error with client, disconnecting");
|
info!(?entity, "timeout error with client, disconnecting");
|
||||||
player_metrics
|
player_metrics
|
||||||
.players_disconnected
|
.clients_disconnected
|
||||||
.with_label_values(&["timeout"])
|
.with_label_values(&["timeout"])
|
||||||
.inc();
|
.inc();
|
||||||
server_emitter.emit(ServerEvent::ClientDisconnect(entity));
|
server_emitter.emit(ServerEvent::ClientDisconnect(entity));
|
||||||
@ -565,7 +565,7 @@ impl<'a> System<'a> for Sys {
|
|||||||
{
|
{
|
||||||
debug!(?entity, "postbox error with client, disconnecting");
|
debug!(?entity, "postbox error with client, disconnecting");
|
||||||
player_metrics
|
player_metrics
|
||||||
.players_disconnected
|
.clients_disconnected
|
||||||
.with_label_values(&["network_error"])
|
.with_label_values(&["network_error"])
|
||||||
.inc();
|
.inc();
|
||||||
server_emitter.emit(ServerEvent::ClientDisconnect(entity));
|
server_emitter.emit(ServerEvent::ClientDisconnect(entity));
|
||||||
|
Loading…
Reference in New Issue
Block a user