From 4cffff453eda45c9002b604c670ec2233d4753e8 Mon Sep 17 00:00:00 2001 From: Pei Hsuan Tsai Date: Thu, 12 Jul 2018 10:44:47 +0800 Subject: [PATCH 1/3] fix the bug when query the paramether from url path Former-commit-id: 5b84d07060ec676cd21e4a71392df89f59ac6b42 [formerly 5b84d07060ec676cd21e4a71392df89f59ac6b42 [formerly 45dbd57ea108cfafe8ab1bacc3e296781b5f5fbd]] Former-commit-id: dff19989f0dc922b00fbb965fb9feaa0b69da82f Former-commit-id: 896cad5a4f2afccaa91bfee55550e2275f31e3d3 --- src/prometheuscontroller/expression.go | 2 +- src/server/handler_prometheus.go | 17 +++-------------- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/src/prometheuscontroller/expression.go b/src/prometheuscontroller/expression.go index 8ee6afbf..a67efdce 100644 --- a/src/prometheuscontroller/expression.go +++ b/src/prometheuscontroller/expression.go @@ -256,7 +256,7 @@ func GetController(sp *serviceprovider.Container, id string) (entity.ControllerM controller.Type = "deployment" expression := Expression{} - expression.Metrics = []string{"kube_deployment_metadata_generation", "kube_deployment_created", "kube_deployment_labels", "kube_deployment_spec_replicas", "kube_deployment_status_replicas"} + expression.Metrics = []string{"kube_deployment_metadata_generation", "kube_deployment_created", "kube_deployment_labels", "kube_deployment_spec_replicas", "kube_deployment_status_replicas", "kube_deployment_status_replicas_available"} expression.QueryLabels = map[string]string{"deployment": id} results, err := getElements(sp, expression) diff --git a/src/server/handler_prometheus.go b/src/server/handler_prometheus.go index 9d8fd4fc..7597302b 100644 --- a/src/server/handler_prometheus.go +++ b/src/server/handler_prometheus.go @@ -79,9 +79,10 @@ func listPodMetricsHandler(ctx *web.Context) { } if controller, ok := query.Str("controller"); ok { - expression.QueryLabels["deployment"] = controller + expression.QueryLabels["created_by_kind"] = "ReplicaSet" + expression.QueryLabels["created_by_name"] = controller + ".*" } else { - expression.QueryLabels["deployment"] = ".*" + expression.QueryLabels["created_by_name"] = ".*" } containerList, err := pc.ListResource(sp, "pod", expression) @@ -116,12 +117,6 @@ func listControllerMetricsHandler(ctx *web.Context) { expression.Metrics = []string{"kube_deployment_metadata_generation"} expression.QueryLabels = map[string]string{} - if node, ok := query.Str("node"); ok { - expression.QueryLabels["node"] = node - } else { - expression.QueryLabels["node"] = ".*" - } - if namespace, ok := query.Str("namespace"); ok { expression.QueryLabels["namespace"] = namespace } else { @@ -160,12 +155,6 @@ func listServiceMetricsHandler(ctx *web.Context) { expression.Metrics = []string{"kube_service_info"} expression.QueryLabels = map[string]string{} - if node, ok := query.Str("node"); ok { - expression.QueryLabels["node"] = node - } else { - expression.QueryLabels["node"] = ".*" - } - if namespace, ok := query.Str("namespace"); ok { expression.QueryLabels["namespace"] = namespace } else { From 9a59d01b425f8770f9fdd4f9920e5383f0bb1970 Mon Sep 17 00:00:00 2001 From: Pei Hsuan Tsai Date: Thu, 12 Jul 2018 10:45:02 +0800 Subject: [PATCH 2/3] prometheus handler api document Former-commit-id: 019a8bd837bf708261745e32797d45dd92c32933 [formerly 019a8bd837bf708261745e32797d45dd92c32933 [formerly 4f1cdad28f7c3b5dee95e1746af332c4c48376ce]] Former-commit-id: 31e606c63229e8c47dacd66062b5d0d5522c3e50 Former-commit-id: 7ae61353d0c4b6e21121028fb0b3332f2d641c02 --- API.md | 523 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 523 insertions(+) diff --git a/API.md b/API.md index 52896837..9758ded5 100644 --- a/API.md +++ b/API.md @@ -405,3 +405,526 @@ Response Data: "message": "Delete success" } ``` + +## Resouce Monitoring + +### List Nodes +**GET /v1/monitoring/nodes** + +Example: +``` +curl -X GET http://localhost:7890/v1/monitoring/nodes +``` + +Response Data: +``` json +[ + "vortex-dev" +] +``` + +### Get Node +**Get /v1/monitoring/nodes/{id}** + +Example +``` +curl -X GET http://localhost:7890/v1/monitoring/nodes/vortex-dev +``` + +Response Data: +``` json +{ + "detail": { + "hostname": "vortex-dev", + "createAt": 1530584195, + "status": "Ready", + "os": "Ubuntu 16.04.4 LTS", + "kernelVersion": "4.4.0-128-generic", + "kubeproxyVersion": "v1.11.0", + "kubernetesVersion": "v1.11.0", + "labels": { + "beta_kubernetes_io_arch": "amd64", + "beta_kubernetes_io_os": "linux", + "kubernetes_io_hostname": "vortex-dev" + } + }, + "resource": { + "cpuRequests": 1.05, + "cpuLimits": 0.6, + "memoryRequests": 283115520, + "memoryLimits": 3009413000, + "allocatableCPU": 2, + "allocatableMemory": 4038615000, + "allocatablePods": 110, + "allocatableEphemeralStorage": 9306748000, + "capacityCPU": 2, + "capacityMemory": 4143472600, + "capacityPods": 110, + "capacityEphemeralStorage": 10340831000 + }, + "nics": { + "cni0": { + "default": "false", + "type": "virtual", + "ip": "10.244.0.1/24", + "nicNetworkTraffic": { + "receiveBytesTotal": 226772166, + "transmitBytesTotal": 1383390910, + "receivePacketsTotal": 2073736, + "transmitPacketsTotal": 2394274 + } + }, + "docker0": { + "default": "false", + "type": "virtual", + "ip": "172.18.0.1/16", + "nicNetworkTraffic": { + "receiveBytesTotal": 1441241, + "transmitBytesTotal": 1648414, + "receivePacketsTotal": 10605, + "transmitPacketsTotal": 18840 + } + }, + "enp0s3": { + "default": "true", + "type": "physical", + "ip": "10.0.2.15/24", + "nicNetworkTraffic": { + "receiveBytesTotal": 1279973603, + "transmitBytesTotal": 17027222, + "receivePacketsTotal": 1071124, + "transmitPacketsTotal": 264981 + } + }, + "enp0s8": { + "default": "false", + "type": "physical", + "ip": "172.17.8.100/24", + "nicNetworkTraffic": { + "receiveBytesTotal": 7886367, + "transmitBytesTotal": 116409318, + "receivePacketsTotal": 69027, + "transmitPacketsTotal": 84938 + } + }, + "flannel.1": { + "default": "false", + "type": "virtual", + "ip": "10.244.0.0/32", + "nicNetworkTraffic": { + "receiveBytesTotal": 0, + "transmitBytesTotal": 0, + "receivePacketsTotal": 0, + "transmitPacketsTotal": 0 + } + }, + "lo": { + "default": "false", + "type": "virtual", + "ip": "127.0.0.1/8", + "nicNetworkTraffic": { + "receiveBytesTotal": 7206320651, + "transmitBytesTotal": 7206320651, + "receivePacketsTotal": 30220996, + "transmitPacketsTotal": 30220996 + } + }, + "veth0369f171": { + "default": "false", + "type": "virtual", + "ip": "fe80::f4bf:f1ff:feb0:51e0/64", + "nicNetworkTraffic": { + "receiveBytesTotal": 1927350790, + "transmitBytesTotal": 10996445, + "receivePacketsTotal": 139639, + "transmitPacketsTotal": 138994 + } + }, + "veth09ed0568": { + "default": "false", + "type": "virtual", + "ip": "fe80::c430:9cff:fe31:a21a/64", + "nicNetworkTraffic": { + "receiveBytesTotal": 129245700, + "transmitBytesTotal": 171833140, + "receivePacketsTotal": 217329, + "transmitPacketsTotal": 237110 + } + }, + "veth1542be78": { + "default": "false", + "type": "virtual", + "ip": "fe80::d047:ebff:fece:fb3f/64", + "nicNetworkTraffic": { + "receiveBytesTotal": 3237703, + "transmitBytesTotal": 116003495, + "receivePacketsTotal": 58301, + "transmitPacketsTotal": 184394 + } + }, + "veth17a03665": { + "default": "false", + "type": "virtual", + "ip": "fe80::f493:3bff:fe1c:7bfe/64", + "nicNetworkTraffic": { + "receiveBytesTotal": 356941, + "transmitBytesTotal": 422027, + "receivePacketsTotal": 4073, + "transmitPacketsTotal": 2917 + } + }, + "veth340cca37": { + "default": "false", + "type": "virtual", + "ip": "fe80::e4ac:1cff:fe02:e06b/64", + "nicNetworkTraffic": { + "receiveBytesTotal": 5789767, + "transmitBytesTotal": 355262377, + "receivePacketsTotal": 55486, + "transmitPacketsTotal": 50945 + } + }, + "veth50f06084": { + "default": "false", + "type": "virtual", + "ip": "fe80::5882:6dff:fec4:526c/64", + "nicNetworkTraffic": { + "receiveBytesTotal": 16031926, + "transmitBytesTotal": 20077451, + "receivePacketsTotal": 182376, + "transmitPacketsTotal": 223934 + } + }, + "veth5e506aa3": { + "default": "false", + "type": "virtual", + "ip": "fe80::c8fa:5fff:fec8:c7de/64", + "nicNetworkTraffic": { + "receiveBytesTotal": 96955868, + "transmitBytesTotal": 186560406, + "receivePacketsTotal": 515276, + "transmitPacketsTotal": 601733 + } + }, + "vethb90c3da6": { + "default": "false", + "type": "virtual", + "ip": "fe80::8c36:f2ff:fe60:a9e7/64", + "nicNetworkTraffic": { + "receiveBytesTotal": 223475, + "transmitBytesTotal": 234836, + "receivePacketsTotal": 1246, + "transmitPacketsTotal": 2529 + } + }, + "vethe17ec2c5": { + "default": "false", + "type": "virtual", + "ip": "fe80::f8fe:6aff:fee4:b2a6/64", + "nicNetworkTraffic": { + "receiveBytesTotal": 96946925, + "transmitBytesTotal": 186348463, + "receivePacketsTotal": 516114, + "transmitPacketsTotal": 598524 + } + }, + "vethf0a4680": { + "default": "false", + "type": "virtual", + "ip": "fe80::a00b:b1ff:fe97:d00c/64", + "nicNetworkTraffic": { + "receiveBytesTotal": 1589711, + "transmitBytesTotal": 1649062, + "receivePacketsTotal": 10605, + "transmitPacketsTotal": 18848 + } + } + } + } +``` + +### List Pod +**GET /v1/monitoring/pods?namespace=\.\*&node=\.\*&deployment=\.*** + +Example: +``` +curl -X GET http://localhost:7890/v1/monitoring/pods +curl -X GET http://localhost:7890/v1/monitoring/pods?namespace=monitoring\&node\=vortex-dev\&controller\=prometheus +``` + +Response Data: +``` json +[ + "etcd-vortex-dev", + "kube-apiserver-vortex-dev", + "kube-controller-manager-vortex-dev", + "kube-scheduler-vortex-dev", + "cadvisor-mktsc", + "kube-flannel-ds-wrqhd", + "kube-proxy-5knh8", + "node-exporter-q2ckj", + "coredns-78fcdf6894-hxvw2", + "coredns-78fcdf6894-lbfnd", + "develop-66855589b7-tzwxd", + "kube-state-metrics-849d66bcc4-9csb7", + "prometheus-69dfbf887b-n2zf7", + "tiller-deploy-759cb9df9-mnkj6", + "youngling-echidna-vortex-server-6c6dbd8bc8-bb4g2", + "mongo-0" + ] +``` + +Example +``` +curl -X GET http://localhost:7890/v1/monitoring/pods?namespace=monitoring\&node\=vortex-dev\&controller\=prometheus +``` + +Response Data: +``` json +[ + "prometheus-69dfbf887b-n2zf7" + ] +``` + +### Get Pod +**Get /v1/monitoring/pods/{id}** + +Example: +``` +curl -X GET http://localhost:7890/v1/monitoring/pods/cadvisor-mktsc +``` + +Response Data: +``` json +{ + "podName": "cadvisor-mktsc", + "namespace": "monitoring", + "node": "vortex-dev", + "status": "Running", + "createAt": 1531124080, + "createByKind": "DaemonSet", + "createByName": "cadvisor", + "ip": "10.244.0.25", + "labels": { + "controller_revision_hash": "3793291166", + "name": "cadvisor", + "pod_template_generation": "1" + }, + "restartCount": 0, + "containers": [ + "cadvisor" + ] + } +``` + +### List Containers +**GET /v1/monitoring/container?namespace=\.\*&node=\.\*&podpo=\.*** + +Example: +``` +curl -X GET http://localhost:7890/v1/monitoring/containers +``` + +Response Data: +``` json +[ + "addon-resizer", + "cadvisor", + "coredns", + "coredns", + "develop", + "etcd", + "kube-apiserver", + "kube-controller-manager", + "kube-flannel", + "kube-proxy", + "kube-scheduler", + "kube-state-metrics", + "mongo", + "node-exporter", + "prometheus", + "tiller", + "vortex-server" + ] +``` + +Example: +``` +curl -X GET http://localhost:7890/v1/monitoring/containers\?namespace\=monitoring\&node\=vortex-dev\&pod\=kube-state-metrics-849d66bcc4-9csb7 +``` + +Response Data: +``` json +[ + "addon-resizer", + "kube-state-metrics" + ] +``` + +### Get Container +**Get /v1/monitoring/container/{id}** + +Example: +``` +curl -X GET http://localhost:7890/v1/monitoring/containers/prometheus +``` + +Response Data: +``` json +{ + "detail": { + "containerName": "prometheus", + "createAt": 0, + "pod": "prometheus-69dfbf887b-n2zf7", + "namespace": "monitoring", + "node": "vortex-dev", + "image": "prom/prometheus:v2.2.1", + "command": [ + "/bin/prometheus" + ] + }, + "status": { + "status": "running", + "waitingReason": "", + "terminatedReason": "", + "restartTime": 0 + }, + "resource": { + "cpuUsagePercentage": 2.3317826, + "memoryUsageBytes": 423919600 + }, + "nicNetworkTraffic": { + "receiveBytesTotal": 477653430, + "transmitBytesTotal": 7745781, + "receivePacketsTotal": 68539, + "transmitPacketsTotal": 74386 + } + } +``` + +### List Services +**GET /v1/monitoring/service?namespace=\.\*** + +Example: +``` +curl -X GET http://localhost:7890/v1/monitoring/services +``` + +Response Data: +``` json +[ + "prometheus-external", + "kube-state-metrics", + "mongo", + "tiller-deploy", + "youngling-echidna-vortex-server", + "kubernetes", + "kube-dns", + "prometheus" + ] +``` + +Example: +``` +curl -X GET http://localhost:7890/v1/monitoring/services\?namespace\=monitoring +``` + +Response Data: +``` json +[ + "prometheus-external", + "kube-state-metrics", + "mongo", + "youngling-echidna-vortex-server", + "prometheus" + ] +``` + +### Get Service +**Get /v1/monitoring/service/{id}** + +Example: +``` +curl -X GET http://localhost:7890/v1/monitoring/services/mongo +``` + +Response Data: +``` json +{ + "serviceName": "mongo", + "namespace": "monitoring", + "type": "ClusterIP", + "createAt": 1531196180, + "clusterIP": "10.107.88.103", + "Ports": [ + { + "protocol": "TCP", + "port": 27017, + "targetPort": 27017 + } + ], + "labels": { + "name": "mongo", + "service": "mongo" + } + } +``` + +### List Controllers +**GET /v1/monitoring/controller?namespace=\.\*** + +Example: +``` +curl -X GET http://localhost:7890/v1/monitoring/controllers +``` + +Response Data: +``` json +[ + "coredns", + "develop", + "kube-state-metrics", + "prometheus", + "tiller-deploy", + "youngling-echidna-vortex-server" + ] +``` + +Example: +``` +curl -X GET http://localhost:7890/v1/monitoring/controllers\?namespace\=monitoring +``` + +Response Data: +``` json +[ + "kube-state-metrics", + "prometheus", + "youngling-echidna-vortex-server" + ] +``` + +### Get Controller +**Get /v1/monitoring/controller/{id}** + +Example: +``` +curl -X GET http://localhost:7890/v1/monitoring/controllers/prometheus +``` + +Response Data: +``` json +{ + "controllerName": "prometheus", + "type": "deployment", + "namespace": "monitoring", + "strategy": "", + "createAt": 1531211728, + "desiredPod": 1, + "currentPod": 1, + "availablePod": 1, + "labels": { + "name": "prometheus-deployment" + } + } +``` \ No newline at end of file From f89870257d7cd5b01eeab7f43d78446913f48123 Mon Sep 17 00:00:00 2001 From: Pei Hsuan Tsai Date: Thu, 12 Jul 2018 10:49:07 +0800 Subject: [PATCH 3/3] fix typo delete one line Former-commit-id: 76e2de5e887e15af9b00a2c698a48d32e05e0ebe [formerly 76e2de5e887e15af9b00a2c698a48d32e05e0ebe [formerly 6fc22d5921a5318a59b78b4709f5c011b5076f3f]] Former-commit-id: 0dcaf06f456ab47b0e39afc9560279249165484d Former-commit-id: ec34993ccc60b01560e30fae4f2f4f567e8a204f --- API.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/API.md b/API.md index 9758ded5..1734e45d 100644 --- a/API.md +++ b/API.md @@ -406,7 +406,7 @@ Response Data: } ``` -## Resouce Monitoring +## Resouce Monitoring ### List Nodes **GET /v1/monitoring/nodes** @@ -649,7 +649,6 @@ Response Data: Example: ``` curl -X GET http://localhost:7890/v1/monitoring/pods -curl -X GET http://localhost:7890/v1/monitoring/pods?namespace=monitoring\&node\=vortex-dev\&controller\=prometheus ``` Response Data: