From 1b3cf2fb7dd0175d20efc225f4391d00d62fe49e Mon Sep 17 00:00:00 2001 From: Eric Ernst Date: Thu, 6 May 2021 11:46:12 -0700 Subject: [PATCH] kata-monitor: export get stats for sandbox Gathering stats for a given sandbox is pretty useful; let's export a function from katamonitor pkg to do this. Signed-off-by: Eric Ernst (cherry picked from commit 37873061072125713b3f9330c52e3103c68d195f) --- src/runtime/pkg/kata-monitor/metrics.go | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/runtime/pkg/kata-monitor/metrics.go b/src/runtime/pkg/kata-monitor/metrics.go index aeb9f72c5..8e0d4c7e4 100644 --- a/src/runtime/pkg/kata-monitor/metrics.go +++ b/src/runtime/pkg/kata-monitor/metrics.go @@ -176,7 +176,7 @@ func (km *KataMonitor) aggregateSandboxMetrics(encoder expfmt.Encoder) error { for sandboxID, namespace := range sandboxes { wg.Add(1) go func(sandboxID, namespace string, results chan<- []*dto.MetricFamily) { - sandboxMetrics, err := getSandboxMetrics(sandboxID) + sandboxMetrics, err := getParsedMetrics(sandboxID) if err != nil { monitorLog.WithError(err).WithField("sandbox_id", sandboxID).Errorf("failed to get metrics for sandbox") } @@ -229,12 +229,11 @@ func (km *KataMonitor) aggregateSandboxMetrics(encoder expfmt.Encoder) error { return err } } - return nil + } -// getSandboxMetrics will get sandbox's metrics from shim -func getSandboxMetrics(sandboxID string) ([]*dto.MetricFamily, error) { +func getParsedMetrics(sandboxID string) ([]*dto.MetricFamily, error) { body, err := doGet(sandboxID, defaultTimeout, "metrics") if err != nil { return nil, err @@ -243,6 +242,16 @@ func getSandboxMetrics(sandboxID string) ([]*dto.MetricFamily, error) { return parsePrometheusMetrics(sandboxID, body) } +// GetSandboxMetrics will get sandbox's metrics from shim +func GetSandboxMetrics(sandboxID string) (string, error) { + body, err := doGet(sandboxID, defaultTimeout, "metrics") + if err != nil { + return "", err + } + + return string(body), nil +} + // parsePrometheusMetrics will decode metrics from Prometheus text format // and return array of *dto.MetricFamily with an ASC order func parsePrometheusMetrics(sandboxID string, body []byte) ([]*dto.MetricFamily, error) {