refact metrics
parent
1ffb11dbd6
commit
68b45fa6ec
|
|
@ -128,7 +128,7 @@ func (r *Container) Fields(ns string) Row {
|
|||
ff := make(Row, 0, len(r.Header(ns)))
|
||||
i := r.instance
|
||||
|
||||
scpu, smem, pcpu, pmem := gatherMetrics(i, r.metrics)
|
||||
c, p := gatherMetrics(i, r.metrics)
|
||||
|
||||
ready, state, restarts := "false", MissingValue, "0"
|
||||
cs := getContainerStatus(i.Name, r.pod.Status)
|
||||
|
|
@ -143,10 +143,10 @@ func (r *Container) Fields(ns string) Row {
|
|||
state,
|
||||
restarts,
|
||||
probe(i.LivenessProbe)+":"+probe(i.ReadinessProbe),
|
||||
scpu,
|
||||
smem,
|
||||
pcpu,
|
||||
pmem,
|
||||
c.cpu,
|
||||
c.mem,
|
||||
p.cpu,
|
||||
p.mem,
|
||||
toStrPorts(i.Ports),
|
||||
toAge(r.pod.CreationTimestamp),
|
||||
)
|
||||
|
|
@ -155,8 +155,8 @@ func (r *Container) Fields(ns string) Row {
|
|||
// ----------------------------------------------------------------------------
|
||||
// Helpers...
|
||||
|
||||
func gatherMetrics(co v1.Container, mx *mv1beta1.PodMetrics) (scpu, smem, pcpu, pmem string) {
|
||||
scpu, smem, pcpu, pmem = NAValue, NAValue, NAValue, NAValue
|
||||
func gatherMetrics(co v1.Container, mx *mv1beta1.PodMetrics) (c, p metric) {
|
||||
c, p = noMetric(), noMetric()
|
||||
if mx == nil {
|
||||
return
|
||||
}
|
||||
|
|
@ -166,21 +166,23 @@ func gatherMetrics(co v1.Container, mx *mv1beta1.PodMetrics) (scpu, smem, pcpu,
|
|||
mem float64
|
||||
)
|
||||
for _, c := range mx.Containers {
|
||||
if c.Name != co.Name {
|
||||
continue
|
||||
if c.Name == co.Name {
|
||||
cpu = c.Usage.Cpu().MilliValue()
|
||||
mem = k8s.ToMB(c.Usage.Memory().Value())
|
||||
break
|
||||
}
|
||||
cpu = c.Usage.Cpu().MilliValue()
|
||||
mem = k8s.ToMB(c.Usage.Memory().Value())
|
||||
break
|
||||
}
|
||||
c = metric{
|
||||
cpu: ToMillicore(cpu),
|
||||
mem: ToMi(mem),
|
||||
}
|
||||
|
||||
scpu, smem = ToMillicore(cpu), ToMi(mem)
|
||||
rcpu, rmem := containerResources(co)
|
||||
if rcpu != nil {
|
||||
pcpu = AsPerc(toPerc(float64(cpu), float64(rcpu.MilliValue())))
|
||||
p.cpu = AsPerc(toPerc(float64(cpu), float64(rcpu.MilliValue())))
|
||||
}
|
||||
if rmem != nil {
|
||||
pmem = AsPerc(toPerc(mem, k8s.ToMB(rmem.Value())))
|
||||
p.mem = AsPerc(toPerc(mem, k8s.ToMB(rmem.Value())))
|
||||
}
|
||||
|
||||
return
|
||||
|
|
|
|||
|
|
@ -139,25 +139,7 @@ func (r *Node) Fields(ns string) Row {
|
|||
iIP, eIP := r.getIPs(no.Status.Addresses)
|
||||
iIP, eIP = missing(iIP), missing(eIP)
|
||||
|
||||
ccpu, cmem, scpu, smem, pcpu, pmem := NAValue, NAValue, NAValue, NAValue, NAValue, NAValue
|
||||
if r.metrics != nil {
|
||||
var (
|
||||
cpu int64
|
||||
mem float64
|
||||
)
|
||||
|
||||
cpu = r.metrics.Usage.Cpu().MilliValue()
|
||||
mem = k8s.ToMB(r.metrics.Usage.Memory().Value())
|
||||
|
||||
acpu := no.Status.Allocatable.Cpu().MilliValue()
|
||||
amem := k8s.ToMB(no.Status.Allocatable.Memory().Value())
|
||||
ccpu = ToMillicore(cpu)
|
||||
pcpu = AsPerc(toPerc(float64(cpu), float64(acpu)))
|
||||
cmem = ToMi(mem)
|
||||
pmem = AsPerc(toPerc(mem, amem))
|
||||
scpu = ToMillicore(cpu)
|
||||
smem = ToMi(mem)
|
||||
}
|
||||
c, a, p := gatherNodeMX(no, r.metrics)
|
||||
|
||||
sta := make([]string, 10)
|
||||
r.status(no.Status, no.Spec.Unschedulable, sta)
|
||||
|
|
@ -172,12 +154,12 @@ func (r *Node) Fields(ns string) Row {
|
|||
no.Status.NodeInfo.KernelVersion,
|
||||
iIP,
|
||||
eIP,
|
||||
ccpu,
|
||||
cmem,
|
||||
pcpu,
|
||||
pmem,
|
||||
scpu,
|
||||
smem,
|
||||
c.cpu,
|
||||
c.mem,
|
||||
p.cpu,
|
||||
p.mem,
|
||||
a.cpu,
|
||||
a.mem,
|
||||
toAge(no.ObjectMeta.CreationTimestamp),
|
||||
)
|
||||
}
|
||||
|
|
@ -185,6 +167,42 @@ func (r *Node) Fields(ns string) Row {
|
|||
// ----------------------------------------------------------------------------
|
||||
// Helpers...
|
||||
|
||||
type metric struct {
|
||||
cpu, mem string
|
||||
}
|
||||
|
||||
func noMetric() metric {
|
||||
return metric{cpu: NAValue, mem: NAValue}
|
||||
}
|
||||
|
||||
func gatherNodeMX(no *v1.Node, mx *mv1beta1.NodeMetrics) (c metric, a metric, p metric) {
|
||||
c, a, p = noMetric(), noMetric(), noMetric()
|
||||
if mx == nil {
|
||||
return
|
||||
}
|
||||
|
||||
cpu := mx.Usage.Cpu().MilliValue()
|
||||
mem := k8s.ToMB(mx.Usage.Memory().Value())
|
||||
c = metric{
|
||||
cpu: ToMillicore(cpu),
|
||||
mem: ToMi(mem),
|
||||
}
|
||||
|
||||
acpu := no.Status.Allocatable.Cpu().MilliValue()
|
||||
amem := k8s.ToMB(no.Status.Allocatable.Memory().Value())
|
||||
a = metric{
|
||||
cpu: ToMillicore(acpu),
|
||||
mem: ToMi(amem),
|
||||
}
|
||||
|
||||
p = metric{
|
||||
cpu: AsPerc(toPerc(float64(cpu), float64(acpu))),
|
||||
mem: AsPerc(toPerc(mem, amem)),
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func withPerc(v, p string) string {
|
||||
return v + " (" + p + ")"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -268,17 +268,18 @@ func (r *Pod) Fields(ns string) Row {
|
|||
|
||||
ss := i.Status.ContainerStatuses
|
||||
cr, _, rc := r.statuses(ss)
|
||||
ccpu, cmem, pcpu, pmem := r.gatherPodMetrics(i)
|
||||
|
||||
c, p := r.gatherPodMX(i)
|
||||
|
||||
return append(ff,
|
||||
i.ObjectMeta.Name,
|
||||
strconv.Itoa(cr)+"/"+strconv.Itoa(len(ss)),
|
||||
r.phase(i),
|
||||
strconv.Itoa(rc),
|
||||
ccpu,
|
||||
cmem,
|
||||
pcpu,
|
||||
pmem,
|
||||
c.cpu,
|
||||
c.mem,
|
||||
p.cpu,
|
||||
p.mem,
|
||||
na(i.Status.PodIP),
|
||||
na(i.Spec.NodeName),
|
||||
r.mapQOS(i.Status.QOSClass),
|
||||
|
|
@ -289,17 +290,23 @@ func (r *Pod) Fields(ns string) Row {
|
|||
// ----------------------------------------------------------------------------
|
||||
// Helpers...
|
||||
|
||||
func (r *Pod) gatherPodMetrics(po *v1.Pod) (ccpu, cmem, pcpu, pmem string) {
|
||||
ccpu, cmem, pcpu, pmem = NAValue, NAValue, NAValue, NAValue
|
||||
func (r *Pod) gatherPodMX(po *v1.Pod) (c, p metric) {
|
||||
c, p = noMetric(), noMetric()
|
||||
if r.metrics == nil {
|
||||
return
|
||||
}
|
||||
|
||||
c, m := r.currentRes(r.metrics)
|
||||
ccpu, cmem = ToMillicore(c.MilliValue()), ToMi(k8s.ToMB(m.Value()))
|
||||
cpu, mem := r.currentRes(r.metrics)
|
||||
c = metric{
|
||||
cpu: ToMillicore(cpu.MilliValue()),
|
||||
mem: ToMi(k8s.ToMB(mem.Value())),
|
||||
}
|
||||
|
||||
rc, rm := r.requestedRes(po)
|
||||
pcpu = AsPerc(toPerc(float64(c.MilliValue()), float64(rc.MilliValue())))
|
||||
pmem = AsPerc(toPerc(k8s.ToMB(m.Value()), k8s.ToMB(rm.Value())))
|
||||
p = metric{
|
||||
cpu: AsPerc(toPerc(float64(cpu.MilliValue()), float64(rc.MilliValue()))),
|
||||
mem: AsPerc(toPerc(k8s.ToMB(mem.Value()), k8s.ToMB(rm.Value()))),
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue