diff --git a/pkg/kapis/monitoring/v1alpha3/register.go b/pkg/kapis/monitoring/v1alpha3/register.go index 2dfccf021c6e35ed9714faddb78680a6a8814f08..d6a06051b90f8c688dc35214234c6a56c4a4e9e2 100644 --- a/pkg/kapis/monitoring/v1alpha3/register.go +++ b/pkg/kapis/monitoring/v1alpha3/register.go @@ -389,7 +389,7 @@ func AddToContainer(c *restful.Container, k8sClient kubernetes.Interface, monito ws.Route(ws.GET("/components/{component}"). To(h.handleComponentMetricsQuery). Doc("Get component-level metric data of the specific system component."). - Param(ws.PathParameter("component", "system component to monitor. One of etcd, apiserver, scheduler, controller_manager, coredns, prometheus.").DataType("string").Required(true)). + Param(ws.PathParameter("component", "system component to monitor. One of etcd, apiserver, scheduler.").DataType("string").Required(true)). Param(ws.QueryParameter("metrics_filter", "The metric name filter consists of a regexp pattern. It specifies which metric data to return. For example, the following filter matches both etcd server list and total size of the underlying database: `etcd_server_list|etcd_mvcc_db_size`. View available metrics at [kubesphere.io](https://docs.kubesphere.io/advanced-v2.0/zh-CN/api-reference/monitoring-metrics/).").DataType("string").Required(false)). Param(ws.QueryParameter("start", "Start time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1559347200. ").DataType("string").Required(false)). Param(ws.QueryParameter("end", "End time of query. Use **start** and **end** to retrieve metric data over a time span. It is a string with Unix time format, eg. 1561939200. ").DataType("string").Required(false)). diff --git a/pkg/simple/client/monitoring/prometheus/promql.go b/pkg/simple/client/monitoring/prometheus/promql.go index 40afd36d1063db76cae0b6d5c3f0f7651f65bfe3..1f16dfc2ae10395e68b53b52310531bfd5340a1b 100644 --- a/pkg/simple/client/monitoring/prometheus/promql.go +++ b/pkg/simple/client/monitoring/prometheus/promql.go @@ -50,7 +50,7 @@ var promQLTemplates = map[string]string{ "cluster_disk_inode_utilisation": `cluster:disk_inode_utilization:ratio`, "cluster_namespace_count": `count(kube_namespace_labels)`, "cluster_pod_count": `cluster:pod:sum`, - "cluster_pod_quota": `sum(max(kube_node_status_capacity_pods) by (node) unless on (node) (kube_node_status_condition{condition="Ready",status=~"unknown|false"} > 0))`, + "cluster_pod_quota": `sum(max(kube_node_status_capacity{resource="pods"}) by (node) unless on (node) (kube_node_status_condition{condition="Ready",status=~"unknown|false"} > 0))`, "cluster_pod_utilisation": `cluster:pod_utilization:ratio`, "cluster_pod_running_count": `cluster:pod_running:count`, "cluster_pod_succeeded_count": `count(kube_pod_info unless on (pod) (kube_pod_status_phase{phase=~"Failed|Pending|Unknown|Running"} > 0) unless on (node) (kube_node_status_condition{condition="Ready",status=~"unknown|false"} > 0))`, @@ -99,7 +99,7 @@ var promQLTemplates = map[string]string{ "node_disk_inode_usage": `node:node_inodes_total:{$1} - node:node_inodes_free:{$1}`, "node_disk_inode_utilisation": `node:disk_inode_utilization:ratio{$1}`, "node_pod_count": `node:pod_count:sum{$1}`, - "node_pod_quota": `max(kube_node_status_capacity_pods{$1}) by (node) unless on (node) (kube_node_status_condition{condition="Ready",status=~"unknown|false"} > 0)`, + "node_pod_quota": `max(kube_node_status_capacity{resource="pods",$1}) by (node) unless on (node) (kube_node_status_condition{condition="Ready",status=~"unknown|false"} > 0)`, "node_pod_utilisation": `node:pod_utilization:ratio{$1}`, "node_pod_running_count": `node:pod_running:count{$1}`, "node_pod_succeeded_count": `node:pod_succeeded:count{$1}`, diff --git a/pkg/simple/client/monitoring/prometheus/promql_test.go b/pkg/simple/client/monitoring/prometheus/promql_test.go index dc66e6d0795e3305eb59d35405b2a1bcd20f3f2f..0f2cd846aca05dc4e699dac703ff91c9567bfa0d 100644 --- a/pkg/simple/client/monitoring/prometheus/promql_test.go +++ b/pkg/simple/client/monitoring/prometheus/promql_test.go @@ -25,6 +25,13 @@ func TestMakeExpr(t *testing.T) { NodeName: "i-2dazc1d6", }, }, + { + name: "node_pod_quota", + opts: monitoring.QueryOptions{ + Level: monitoring.LevelNode, + ResourceFilter: "i-2dazc1d6|i-ezjb7gsk", + }, + }, { name: "node_cpu_total", opts: monitoring.QueryOptions{ diff --git a/pkg/simple/client/monitoring/prometheus/testdata/promqls.go b/pkg/simple/client/monitoring/prometheus/testdata/promqls.go index 7a7f3da7782f9ab9a13bf8fa33032280d927783b..c1e9d56558a7a7fa1b643fdae949cb69dd880148 100644 --- a/pkg/simple/client/monitoring/prometheus/testdata/promqls.go +++ b/pkg/simple/client/monitoring/prometheus/testdata/promqls.go @@ -4,6 +4,7 @@ var PromQLs = map[string]string{ "cluster_cpu_utilisation": `:node_cpu_utilisation:avg1m`, "node_cpu_utilisation": `node:node_cpu_utilisation:avg1m{node="i-2dazc1d6"}`, "node_cpu_total": `node:node_num_cpu:sum{node=~"i-2dazc1d6|i-ezjb7gsk"}`, + "node_pod_quota": `max(kube_node_status_capacity{resource="pods",node=~"i-2dazc1d6|i-ezjb7gsk"}) by (node) unless on (node) (kube_node_status_condition{condition="Ready",status=~"unknown|false"} > 0)`, "workspace_cpu_usage": `round(sum by (workspace) (namespace:container_cpu_usage_seconds_total:sum_rate{namespace!="", workspace="system-workspace"}), 0.001)`, "workspace_memory_usage": `sum by (workspace) (namespace:container_memory_usage_bytes:sum{namespace!="", workspace=~"system-workspace|demo", workspace!=""})`, "namespace_cpu_usage": `round(namespace:container_cpu_usage_seconds_total:sum_rate{namespace!="", namespace="kube-system"}, 0.001)`,