You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by ad...@apache.org on 2019/12/20 19:41:19 UTC

[kudu] 01/03: [metrics] Add a flag to set a default metric level

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

adar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kudu.git

commit fc02008c6e5bfb592a9eb60f2a600e1d989cdfd9
Author: Grant Henke <gr...@apache.org>
AuthorDate: Wed Dec 18 09:45:17 2019 -0600

    [metrics] Add a flag to set a default metric level
    
    This patch adds the `metrics_default_level` flag, set to the lowest level
    by default. The flag defines the default severity level to use when
    filtering the metrics in the '/metrics' endpoint.
    
    I am adding this flag to better support existing monitoring deployments
    using the plain/parameterless URL when collecting metrics. Even
    though the metric level can be filtered by using the URL query
    parameters, existing deployments may not support configuring or
    adjusting that URL.
    
    Change-Id: I296fda7a6fefb952f1522bba3c1ff9804d5ce5cc
    Reviewed-on: http://gerrit.cloudera.org:8080/14922
    Tested-by: Kudu Jenkins
    Reviewed-by: Adar Dembo <ad...@cloudera.com>
---
 src/kudu/server/default_path_handlers.cc | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/src/kudu/server/default_path_handlers.cc b/src/kudu/server/default_path_handlers.cc
index cbe33a4..502df9f 100644
--- a/src/kudu/server/default_path_handlers.cc
+++ b/src/kudu/server/default_path_handlers.cc
@@ -77,6 +77,27 @@ DEFINE_int64(web_log_bytes, 1024 * 1024,
 TAG_FLAG(web_log_bytes, advanced);
 TAG_FLAG(web_log_bytes, runtime);
 
+DEFINE_string(metrics_default_level, "debug",
+              "The default severity level to use when filtering the metrics. "
+              "Valid choices are 'debug', 'info', and 'warn'. "
+              "The levels are ordered and lower levels include the levels above them. "
+              "This value can be overridden by passing the level query parameter to the "
+              "'/metrics' endpoint.");
+TAG_FLAG(metrics_default_level, advanced);
+TAG_FLAG(metrics_default_level, runtime);
+TAG_FLAG(metrics_default_level, evolving);
+DEFINE_validator(metrics_default_level, [](const char* flag_name, const string& value) {
+  if (boost::iequals(value, "debug") ||
+      boost::iequals(value, "info") ||
+      boost::iequals(value, "warn")) {
+    return true;
+  }
+  LOG(ERROR) << Substitute("unknown value for --$0 flag: '$1' "
+                           "(expected one of 'debug', 'info', or 'warn')",
+                           flag_name, value);
+  return false;
+});
+
 // For configuration dashboard
 DECLARE_bool(webserver_require_spnego);
 DECLARE_string(redact);
@@ -356,7 +377,7 @@ static void WriteMetricsAsJson(const MetricRegistry* const metrics,
   filters.entity_ids = ParseArray(req.parsed_args, "ids");
   filters.entity_attrs = ParseArray(req.parsed_args, "attributes");
   filters.entity_metrics = ParseArray(req.parsed_args, "metrics");
-  filters.entity_level = FindWithDefault(req.parsed_args, "level", "debug");
+  filters.entity_level = FindWithDefault(req.parsed_args, "level", FLAGS_metrics_default_level);
   vector<string> merge_rules = ParseArray(req.parsed_args, "merge_rules");
   for (const auto& merge_rule : merge_rules) {
     vector<string> values;