Просмотр исходного кода

fix: authz add metrics_and_status schema

EMQ-YangM 3 лет назад
Родитель
Сommit
f91a6b9f00

+ 0 - 33
apps/emqx_authn/i18n/emqx_authn_schema_i18n.conf

@@ -163,37 +163,4 @@ emqx_authn_schema {
       zh: """节点名称。"""
     }
   }
-
-  ignore {
-    desc {
-      en: """Not match any rules."""
-      zh: """没有匹配到任何规则。"""
-    }
-    label: {
-      en: """Not Match Any Rules"""
-      zh: """没有匹配到任何规则。"""
-    }
-  }
-
-  allow {
-    desc {
-      en: """Authorize allow."""
-      zh: """鉴权成功。"""
-    }
-    label: {
-      en: """Authorize Allow"""
-      zh: """鉴权成功"""
-    }
-  }
-
-  deny {
-    desc {
-      en: """Authorize Deny."""
-      zh: """鉴权失败"""
-    }
-    label: {
-      en: """Authorize Deny"""
-      zh: """鉴权失败"""
-    }
-  }
 }

+ 19 - 44
apps/emqx_authn/src/emqx_authn_schema.erl

@@ -89,45 +89,41 @@ backend(Name) ->
 
 fields("metrics_status_fields") ->
     [
+        {"resource_metrics", mk(ref(?MODULE, "resource_metrics"), #{desc => ?DESC("metrics")})},
+        {"node_resource_metrics",
+            mk(
+                hoconsc:array(ref(?MODULE, "node_resource_metrics")),
+                #{desc => ?DESC("node_metrics")}
+            )},
         {"metrics", mk(ref(?MODULE, "metrics"), #{desc => ?DESC("metrics")})},
         {"node_metrics",
             mk(
                 hoconsc:array(ref(?MODULE, "node_metrics")),
                 #{desc => ?DESC("node_metrics")}
-            )}
-    ] ++ common_metrics_field();
-fields("metrics_status_fields_authz") ->
-    [
-        {"metrics", mk(ref(?MODULE, "metrics_authz"), #{desc => ?DESC("metrics")})},
-        {"node_metrics",
+            )},
+        {"status", mk(cluster_status(), #{desc => ?DESC("status")})},
+        {"node_status",
             mk(
-                hoconsc:array(ref(?MODULE, "node_metrics_authz")),
-                #{desc => ?DESC("node_metrics")}
+                hoconsc:array(ref(?MODULE, "node_status")),
+                #{desc => ?DESC("node_status")}
+            )},
+        {"node_error",
+            mk(
+                hoconsc:array(ref(?MODULE, "node_error")),
+                #{desc => ?DESC("node_error")}
             )}
-    ] ++ common_metrics_field();
+    ];
 fields("metrics") ->
     [
         {"ignore", mk(integer(), #{desc => ?DESC("failed")})}
     ] ++ common_field();
-fields("metrics_authz") ->
-    [
-        {"matched", mk(integer(), #{desc => ?DESC("matched")})},
-        {"allow", mk(integer(), #{desc => ?DESC("allow")})},
-        {"deny", mk(integer(), #{desc => ?DESC("deny")})},
-        {"ignore", mk(float(), #{desc => ?DESC("ignore")})}
-    ];
+fields("resource_metrics") ->
+    common_field();
 fields("node_metrics") ->
     [
         node_name(),
         {"metrics", mk(ref(?MODULE, "metrics"), #{desc => ?DESC("metrics")})}
     ];
-fields("node_metrics_authz") ->
-    [
-        node_name(),
-        {"metrics", mk(ref(?MODULE, "metrics_authz"), #{desc => ?DESC("metrics")})}
-    ];
-fields("resource_metrics") ->
-    common_field();
 fields("node_resource_metrics") ->
     [
         node_name(),
@@ -154,27 +150,6 @@ common_field() ->
         {"rate_last5m", mk(float(), #{desc => ?DESC("rate_last5m")})}
     ].
 
-common_metrics_field() ->
-    [
-        {"resource_metrics", mk(ref(?MODULE, "resource_metrics"), #{desc => ?DESC("metrics")})},
-        {"node_resource_metrics",
-            mk(
-                hoconsc:array(ref(?MODULE, "node_resource_metrics")),
-                #{desc => ?DESC("node_metrics")}
-            )},
-        {"status", mk(cluster_status(), #{desc => ?DESC("status")})},
-        {"node_status",
-            mk(
-                hoconsc:array(ref(?MODULE, "node_status")),
-                #{desc => ?DESC("node_status")}
-            )},
-        {"node_error",
-            mk(
-                hoconsc:array(ref(?MODULE, "node_error")),
-                #{desc => ?DESC("node_error")}
-            )}
-    ].
-
 status() ->
     hoconsc:enum([connected, disconnected, connecting]).
 

+ 167 - 0
apps/emqx_authz/i18n/emqx_authz_schema_i18n.conf

@@ -392,4 +392,171 @@ Commands can support following wildcards:\n
       zh: """查询语句"""
     }
   }
+
+#==== metrics field
+
+  metrics {
+    desc {
+      en: """The metrics of the resource."""
+      zh: """资源统计指标。"""
+    }
+    label: {
+      en: """Metrics"""
+      zh: """指标"""
+    }
+  }
+
+  node_metrics {
+    desc {
+      en: """The metrics of the resource for each node."""
+      zh: """每个节点上资源的统计指标。"""
+    }
+    label: {
+      en: """Resource Metrics in Node"""
+      zh: """节点资源指标"""
+    }
+  }
+
+  status {
+    desc {
+      en: """The status of the resource."""
+      zh: """资源状态。"""
+    }
+    label: {
+      en: """Status"""
+      zh: """状态"""
+    }
+  }
+
+  node_status {
+    desc {
+      en: """The status of the resource for each node."""
+      zh: """每个节点上资源的状态。"""
+    }
+    label: {
+      en: """Resource Status in Node"""
+      zh: """节点资源状态"""
+    }
+  }
+
+  node_error {
+    desc {
+      en: """The error of node."""
+      zh: """节点上产生的错误。"""
+    }
+    label: {
+      en: """Error in Node"""
+      zh: """节点产生的错误"""
+    }
+  }
+
+  matched {
+    desc {
+      en: """Count of this resource is queried."""
+      zh: """请求命中次数。"""
+    }
+    label: {
+      en: """Matched"""
+      zh: """已命中"""
+    }
+  }
+
+  success {
+    desc {
+      en: """Count of query success."""
+      zh: """请求成功次数。"""
+    }
+    label: {
+      en: """Success"""
+      zh: """成功"""
+    }
+  }
+
+  failed {
+    desc {
+      en: """Count of query failed."""
+      zh: """请求失败次数。"""
+    }
+    label: {
+      en: """Failed"""
+      zh: """失败"""
+    }
+  }
+
+  rate {
+    desc {
+      en: """The rate of matched, times/second."""
+      zh: """命中速率,单位:次/秒。"""
+    }
+    label: {
+      en: """Rate"""
+      zh: """速率"""
+    }
+  }
+
+  rate_max {
+    desc {
+      en: """The max rate of matched, times/second."""
+      zh: """最大命中速率,单位:次/秒。"""
+    }
+    label: {
+      en: """Max Rate"""
+      zh: """最大速率"""
+    }
+  }
+
+  rate_last5m {
+    desc {
+      en: """The average rate of matched in the last 5 minutes, times/second."""
+      zh: """5分钟内平均命中速率,单位:次/秒。"""
+    }
+    label: {
+      en: """Rate in Last 5min"""
+      zh: """5分钟内速率"""
+    }
+  }
+
+  node {
+    desc {
+      en: """Node name."""
+      zh: """节点名称。"""
+    }
+    label: {
+      en: """Node Name."""
+      zh: """节点名称。"""
+    }
+  }
+
+  ignore {
+    desc {
+      en: """Not match any rules."""
+      zh: """没有匹配到任何规则。"""
+    }
+    label: {
+      en: """Not Match Any Rules"""
+      zh: """没有匹配到任何规则。"""
+    }
+  }
+
+  allow {
+    desc {
+      en: """Authorize allow."""
+      zh: """鉴权成功。"""
+    }
+    label: {
+      en: """Authorize Allow"""
+      zh: """鉴权成功"""
+    }
+  }
+
+  deny {
+    desc {
+      en: """Authorize Deny."""
+      zh: """鉴权失败"""
+    }
+    label: {
+      en: """Authorize Deny"""
+      zh: """鉴权失败"""
+    }
+  }
 }

+ 1 - 1
apps/emqx_authz/src/emqx_authz_api_sources.erl

@@ -143,7 +143,7 @@ schema("/authorization/sources/:type/status") ->
                 responses =>
                     #{
                         200 => emqx_dashboard_swagger:schema_with_examples(
-                            hoconsc:ref(emqx_authn_schema, "metrics_status_fields_authz"),
+                            hoconsc:ref(emqx_authz_schema, "metrics_status_fields"),
                             status_metrics_example()
                         ),
                         400 => emqx_dashboard_swagger:error_codes(

+ 76 - 1
apps/emqx_authz/src/emqx_authz_schema.erl

@@ -19,6 +19,7 @@
 -include("emqx_authz.hrl").
 -include_lib("hocon/include/hoconsc.hrl").
 -include_lib("emqx_connector/include/emqx_connector.hrl").
+-import(hoconsc, [mk/2, ref/2]).
 
 -reflect_type([
     permission/0,
@@ -134,7 +135,81 @@ fields(jwt) ->
                 default => <<"acl">>,
                 desc => ?DESC(acl_claim_name)
             }}
-        ].
+        ];
+fields("metrics_status_fields") ->
+    [
+        {"resource_metrics", mk(ref(?MODULE, "resource_metrics"), #{desc => ?DESC("metrics")})},
+        {"node_resource_metrics",
+            mk(
+                hoconsc:array(ref(?MODULE, "node_resource_metrics")),
+                #{desc => ?DESC("node_metrics")}
+            )},
+        {"metrics", mk(ref(?MODULE, "metrics"), #{desc => ?DESC("metrics")})},
+        {"node_metrics",
+            mk(
+                hoconsc:array(ref(?MODULE, "node_metrics")),
+                #{desc => ?DESC("node_metrics")}
+            )},
+        {"status", mk(cluster_status(), #{desc => ?DESC("status")})},
+        {"node_status",
+            mk(
+                hoconsc:array(ref(?MODULE, "node_status")),
+                #{desc => ?DESC("node_status")}
+            )},
+        {"node_error",
+            mk(
+                hoconsc:array(ref(?MODULE, "node_error")),
+                #{desc => ?DESC("node_error")}
+            )}
+    ];
+fields("metrics") ->
+    [
+        {"matched", mk(integer(), #{desc => ?DESC("matched")})},
+        {"allow", mk(integer(), #{desc => ?DESC("allow")})},
+        {"deny", mk(integer(), #{desc => ?DESC("deny")})},
+        {"ignore", mk(float(), #{desc => ?DESC("ignore")})}
+    ];
+fields("node_metrics") ->
+    [
+        node_name(),
+        {"metrics", mk(ref(?MODULE, "metrics"), #{desc => ?DESC("metrics")})}
+    ];
+fields("resource_metrics") ->
+    common_field();
+fields("node_resource_metrics") ->
+    [
+        node_name(),
+        {"metrics", mk(ref(?MODULE, "resource_metrics"), #{desc => ?DESC("metrics")})}
+    ];
+fields("node_status") ->
+    [
+        node_name(),
+        {"status", mk(status(), #{desc => ?DESC("node_status")})}
+    ];
+fields("node_error") ->
+    [
+        node_name(),
+        {"error", mk(string(), #{desc => ?DESC("node_error")})}
+    ].
+
+common_field() ->
+    [
+        {"matched", mk(integer(), #{desc => ?DESC("matched")})},
+        {"success", mk(integer(), #{desc => ?DESC("success")})},
+        {"failed", mk(integer(), #{desc => ?DESC("failed")})},
+        {"rate", mk(float(), #{desc => ?DESC("rate")})},
+        {"rate_max", mk(float(), #{desc => ?DESC("rate_max")})},
+        {"rate_last5m", mk(float(), #{desc => ?DESC("rate_last5m")})}
+    ].
+
+status() ->
+    hoconsc:enum([connected, disconnected, connecting]).
+
+cluster_status() ->
+    hoconsc:enum([connected, disconnected, connecting, inconsistent]).
+
+node_name() ->
+    {"node", mk(binary(), #{desc => ?DESC("node"), example => "emqx@127.0.0.1"})}.
 
 desc(?CONF_NS) ->
     ?DESC(?CONF_NS);