add real time cpu/memory monitor api for container level

This commit is contained in:
Calvin Yu
2018-05-28 11:36:47 +08:00
parent f5cb88afc2
commit c7307e4d7a
3 changed files with 14 additions and 9 deletions

View File

@@ -19,15 +19,16 @@ package client
import (
"net/http"
"github.com/golang/glog"
"io/ioutil"
"os"
"github.com/golang/glog"
)
const (
DefaultHeapsterScheme = "http"
DefaultHeapsterService = "heapster" //"heapster"
DefaultHeapsterPort = "80" // use the first exposed port on the service
DefaultHeapsterPort = "80" // use the first exposed port on the service
)
var (

View File

@@ -64,7 +64,7 @@ func GetContainers(namespace, podName string) []string {
func FormatContainersMetrics(nodeName, namespace, podName string) ResultNameSpaceForContainer {
var resultNameSpaceForContainer ResultNameSpaceForContainer
var resultPodsForContainer []ResultPodForContainer
var resultPodForContainer ResultPodForContainer
var pods []string
if nodeName == "" {
pods = GetPods(namespace)
@@ -76,6 +76,7 @@ func FormatContainersMetrics(nodeName, namespace, podName string) ResultNameSpac
resultNameSpaceForContainer.PodsCount = strconv.Itoa(len(pods))
if podName != "" {
var resultPodForContainer ResultPodForContainer
resultPodForContainer.PodName = podName
resultPodForContainer = FormatPodMetricsWithContainers(namespace, podName)
resultPodsForContainer = append(resultPodsForContainer, resultPodForContainer)
@@ -83,6 +84,7 @@ func FormatContainersMetrics(nodeName, namespace, podName string) ResultNameSpac
return resultNameSpaceForContainer
}
for _, pod := range pods {
var resultPodForContainer ResultPodForContainer
resultPodForContainer.PodName = pod
resultPodForContainer = FormatPodMetricsWithContainers(namespace, pod)
resultPodsForContainer = append(resultPodsForContainer, resultPodForContainer)
@@ -96,17 +98,18 @@ func FormatPodMetricsWithContainers(namespace, pod string) ResultPodForContainer
var resultPod ResultPodForContainer
var containers []string
var resultContainers []ResultContainer
var resultContainer ResultContainer
var containerCPUMetrics []CPUContainer
var containerMemMetrics []MemoryContainer
var cpuMetrics CPUContainer
var memMetrics MemoryContainer
resultPod.PodName = pod
containers = GetContainers(namespace, pod)
resultPod.ContainersCount = strconv.Itoa(len(containers))
for _, container := range containers {
var resultContainer ResultContainer
var containerCPUMetrics []CPUContainer
var containerMemMetrics []MemoryContainer
var cpuMetrics CPUContainer
var memMetrics MemoryContainer
resultContainer.ContainerName = container
cpuRequest := client.GetHeapsterMetrics("/namespaces/" + namespace + "/pods/" + pod + "/containers/" + container + "/metrics/cpu/request")
cpuRequest = ksutil.JsonRawMessage(cpuRequest).Find("metrics").ToList()[0].Find("value").ToString()

View File

@@ -12,8 +12,9 @@ import (
ksutil "kubesphere.io/kubesphere/pkg/util"
"fmt"
"k8s.io/apimachinery/pkg/apis/meta/v1"
"strconv"
"k8s.io/apimachinery/pkg/apis/meta/v1"
)
type ResultNameSpaces struct {