This is an automated email from the ASF dual-hosted git repository.

wangdan pushed a commit to branch migrate-metrics-dev
in repository https://gitbox.apache.org/repos/asf/incubator-pegasus.git

commit fd6755db4f3e0455d389f13f2172ac0cfeb01ed7
Author: Dan Wang <[email protected]>
AuthorDate: Thu Jun 1 20:02:59 2023 +0800

    feat(new_metrics): migrate metrics for network (#1504)
    
    https://github.com/apache/incubator-pegasus/issues/1503
    
    The only server-level gauge of network is split into 2 gauges, and migrated
    to the new framework. The only gauge is a metric about TCP connections:
    from client side, the network could connect to different remote servers;
    while from server side, it could receive connections from remote clients.
    
    In the past, the only gauge has been used to measure either the number of
    different remote servers from client side, or the number of different remote
    clients from server side, which might result in confusion. Therefore, it's 
better
    to split the only gauge into 2 individual ones.
---
 src/runtime/rpc/network.cpp     | 31 +++++++++++++++++++------------
 src/runtime/rpc/network.h       |  5 +++--
 src/runtime/rpc/rpc_message.cpp |  2 +-
 src/utils/metrics.h             |  1 +
 4 files changed, 24 insertions(+), 15 deletions(-)

diff --git a/src/runtime/rpc/network.cpp b/src/runtime/rpc/network.cpp
index 64d18f4f9..55554657e 100644
--- a/src/runtime/rpc/network.cpp
+++ b/src/runtime/rpc/network.cpp
@@ -33,7 +33,6 @@
 #include <utility>
 
 #include "message_parser_manager.h"
-#include "perf_counter/perf_counter.h"
 #include "runtime/api_task.h"
 #include "runtime/rpc/rpc_address.h"
 #include "runtime/rpc/rpc_engine.h"
@@ -45,9 +44,20 @@
 #include "utils/fmt_logging.h"
 #include "utils/ports.h"
 #include "utils/safe_strerror_posix.h"
+#include "utils/string_view.h"
 #include "utils/strings.h"
 #include "utils/threadpool_code.h"
 
+METRIC_DEFINE_gauge_int64(server,
+                          network_client_sessions,
+                          dsn::metric_unit::kSessions,
+                          "The number of sessions from client side");
+
+METRIC_DEFINE_gauge_int64(server,
+                          network_server_sessions,
+                          dsn::metric_unit::kSessions,
+                          "The number of sessions from server side");
+
 namespace dsn {
 DSN_DEFINE_uint32(network,
                   conn_threshold_per_ip,
@@ -590,13 +600,10 @@ uint32_t network::get_local_ipv4()
 }
 
 connection_oriented_network::connection_oriented_network(rpc_engine *srv, 
network *inner_provider)
-    : network(srv, inner_provider)
+    : network(srv, inner_provider),
+      METRIC_VAR_INIT_server(network_client_sessions),
+      METRIC_VAR_INIT_server(network_server_sessions)
 {
-    _client_session_count.init_global_counter("server",
-                                              "network",
-                                              "client_session_count",
-                                              COUNTER_TYPE_NUMBER,
-                                              "current session count on 
server");
 }
 
 void connection_oriented_network::inject_drop_message(message_ex *msg, bool 
is_send)
@@ -654,7 +661,7 @@ void connection_oriented_network::send_message(message_ex 
*request)
         LOG_INFO("client session created, remote_server = {}, current_count = 
{}",
                  client->remote_address(),
                  ip_count);
-        _client_session_count->set(ip_count);
+        METRIC_VAR_SET(network_client_sessions, ip_count);
         client->connect();
     }
 
@@ -702,7 +709,7 @@ void 
connection_oriented_network::on_server_session_accepted(rpc_session_ptr &s)
              s->remote_address(),
              ip_conn_count);
 
-    _client_session_count->set(ip_count);
+    METRIC_VAR_SET(network_server_sessions, ip_count);
 }
 
 void 
connection_oriented_network::on_server_session_disconnected(rpc_session_ptr &s)
@@ -738,7 +745,7 @@ void 
connection_oriented_network::on_server_session_disconnected(rpc_session_ptr
         LOG_INFO("session {} disconnected, the total client sessions count 
remains {}",
                  s->remote_address(),
                  ip_count);
-        _client_session_count->set(ip_count);
+        METRIC_VAR_SET(network_server_sessions, ip_count);
     }
 
     if (ip_conn_count == 0) {
@@ -800,7 +807,7 @@ void 
connection_oriented_network::on_client_session_connected(rpc_session_ptr &s
         LOG_INFO("client session connected, remote_server = {}, current_count 
= {}",
                  s->remote_address(),
                  ip_count);
-        _client_session_count->set(ip_count);
+        METRIC_VAR_SET(network_client_sessions, ip_count);
     }
 }
 
@@ -822,7 +829,7 @@ void 
connection_oriented_network::on_client_session_disconnected(rpc_session_ptr
         LOG_INFO("client session disconnected, remote_server = {}, 
current_count = {}",
                  s->remote_address(),
                  ip_count);
-        _client_session_count->set(ip_count);
+        METRIC_VAR_SET(network_client_sessions, ip_count);
     }
 }
 
diff --git a/src/runtime/rpc/network.h b/src/runtime/rpc/network.h
index 72f610853..1ce002b83 100644
--- a/src/runtime/rpc/network.h
+++ b/src/runtime/rpc/network.h
@@ -32,7 +32,6 @@
 #include <unordered_map>
 #include <vector>
 
-#include "perf_counter/perf_counter_wrapper.h"
 #include "rpc_address.h"
 #include "runtime/rpc/message_parser.h"
 #include "runtime/rpc/rpc_message.h"
@@ -41,6 +40,7 @@
 #include "utils/error_code.h"
 #include "utils/join_point.h"
 #include "utils/link.h"
+#include "utils/metrics.h"
 #include "utils/synchronize.h"
 
 namespace dsn {
@@ -191,7 +191,8 @@ protected:
     ip_connection_count _ip_conn_count; // from_ip => connection count
     utils::rw_lock_nr _servers_lock;
 
-    perf_counter_wrapper _client_session_count;
+    METRIC_VAR_DECLARE_gauge_int64(network_client_sessions);
+    METRIC_VAR_DECLARE_gauge_int64(network_server_sessions);
 };
 
 /*!
diff --git a/src/runtime/rpc/rpc_message.cpp b/src/runtime/rpc/rpc_message.cpp
index 04d77c18f..7f34b6b85 100644
--- a/src/runtime/rpc/rpc_message.cpp
+++ b/src/runtime/rpc/rpc_message.cpp
@@ -40,7 +40,7 @@
 #include "utils/flags.h"
 #include "utils/fmt_logging.h"
 #include "utils/join_point.h"
-#include "utils/singleton.h"
+#include "utils/strings.h"
 #include "utils/utils.h"
 
 using namespace dsn::utils;
diff --git a/src/utils/metrics.h b/src/utils/metrics.h
index 979c8274d..11f34b56c 100644
--- a/src/utils/metrics.h
+++ b/src/utils/metrics.h
@@ -692,6 +692,7 @@ ENUM_END(metric_type)
     DEF(Operations)                                                            
                    \
     DEF(Tasks)                                                                 
                    \
     DEF(Disconnections)                                                        
                    \
+    DEF(Sessions)                                                              
                    \
     DEF(Learns)                                                                
                    \
     DEF(Rounds)                                                                
                    \
     DEF(Resets)                                                                
                    \


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to