fix: authz add metrics_and_status schema
This commit is contained in:
parent
a6920ac11b
commit
f91a6b9f00
|
@ -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: """鉴权失败"""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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]).
|
||||
|
||||
|
|
|
@ -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: """鉴权失败"""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue