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

serverglen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-brpc.git


The following commit(s) were added to refs/heads/master by this push:
     new 90dce8b7 support mvariable dump by prometheus rpc service (#1964)
90dce8b7 is described below

commit 90dce8b720e8fd879278f9a77a61ba27cd843f66
Author: ldak4747 <[email protected]>
AuthorDate: Thu Oct 27 20:31:12 2022 +0800

    support mvariable dump by prometheus rpc service (#1964)
    
    Co-authored-by: Liu Mander <[email protected]>
---
 src/brpc/builtin/prometheus_metrics_service.cpp | 10 ++++++++++
 src/bvar/bvar.h                                 |  1 +
 src/bvar/mvariable.cpp                          |  9 +++++++++
 3 files changed, 20 insertions(+)

diff --git a/src/brpc/builtin/prometheus_metrics_service.cpp 
b/src/brpc/builtin/prometheus_metrics_service.cpp
index 5eddb1a8..f7948221 100644
--- a/src/brpc/builtin/prometheus_metrics_service.cpp
+++ b/src/brpc/builtin/prometheus_metrics_service.cpp
@@ -30,6 +30,7 @@ namespace bvar {
 DECLARE_int32(bvar_latency_p1);
 DECLARE_int32(bvar_latency_p2);
 DECLARE_int32(bvar_latency_p3);
+DECLARE_int32(bvar_max_dump_multi_dimension_metric_number);
 }
 
 namespace brpc {
@@ -200,6 +201,15 @@ int DumpPrometheusMetricsToIOBuf(butil::IOBuf* output) {
         return -1;
     }
     os.move_to(*output);
+
+    if (bvar::FLAGS_bvar_max_dump_multi_dimension_metric_number > 0) {
+        PrometheusMetricsDumper dumper_md(&os, g_server_info_prefix);
+        const int ndump_md = bvar::MVariable::dump_exposed(&dumper_md, NULL);
+        if (ndump_md < 0) {
+            return -1;
+        }
+        output->append(butil::IOBuf::Movable(os.buf()));
+    }
     return 0;
 }
 
diff --git a/src/bvar/bvar.h b/src/bvar/bvar.h
index 5a54a093..85e7442d 100644
--- a/src/bvar/bvar.h
+++ b/src/bvar/bvar.h
@@ -27,5 +27,6 @@
 #include "bvar/latency_recorder.h"
 #include "bvar/gflag.h"
 #include "bvar/scoped_timer.h"
+#include "bvar/mvariable.h"
 
 #endif  //BVAR_BVAR_H
diff --git a/src/bvar/mvariable.cpp b/src/bvar/mvariable.cpp
index 2e191a16..a2ad94b0 100644
--- a/src/bvar/mvariable.cpp
+++ b/src/bvar/mvariable.cpp
@@ -36,6 +36,8 @@ DECLARE_bool(bvar_abort_on_same_name);
 extern bool s_bvar_may_abort;
 
 DEFINE_int32(bvar_max_multi_dimension_metric_number, 1024, "Max number of 
multi dimension");
+DEFINE_int32(bvar_max_dump_multi_dimension_metric_number, 0,
+    "Max number of multi dimension metric number to dump by prometheus rpc 
service");
 
 static bool validator_bvar_max_multi_dimension_metric_number(const char*, 
int32_t v) {
     if (v < 1) {
@@ -246,6 +248,13 @@ size_t MVariable::dump_exposed(Dumper* dumper, const 
DumpOptions* options) {
         if (entry) {
             n += entry->var->dump(dumper, &opt);
         }
+       if (n > 
static_cast<size_t>(FLAGS_bvar_max_dump_multi_dimension_metric_number)) {
+            LOG(WARNING) << "truncated because of \
+                           exceed max dump multi dimension label number["
+                        << FLAGS_bvar_max_dump_multi_dimension_metric_number
+                        << "]";
+            break;
+       }
     }
     return n;
 }


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

Reply via email to