mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-06-26 07:22:20 +00:00
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 <eric_ernst@apple.com>
This commit is contained in:
parent
12a04cb0ba
commit
3787306107
@ -176,7 +176,7 @@ func (km *KataMonitor) aggregateSandboxMetrics(encoder expfmt.Encoder) error {
|
|||||||
for sandboxID, namespace := range sandboxes {
|
for sandboxID, namespace := range sandboxes {
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
go func(sandboxID, namespace string, results chan<- []*dto.MetricFamily) {
|
go func(sandboxID, namespace string, results chan<- []*dto.MetricFamily) {
|
||||||
sandboxMetrics, err := getSandboxMetrics(sandboxID)
|
sandboxMetrics, err := getParsedMetrics(sandboxID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
monitorLog.WithError(err).WithField("sandbox_id", sandboxID).Errorf("failed to get metrics for sandbox")
|
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 err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// getSandboxMetrics will get sandbox's metrics from shim
|
func getParsedMetrics(sandboxID string) ([]*dto.MetricFamily, error) {
|
||||||
func getSandboxMetrics(sandboxID string) ([]*dto.MetricFamily, error) {
|
|
||||||
body, err := doGet(sandboxID, defaultTimeout, "metrics")
|
body, err := doGet(sandboxID, defaultTimeout, "metrics")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -243,6 +242,16 @@ func getSandboxMetrics(sandboxID string) ([]*dto.MetricFamily, error) {
|
|||||||
return parsePrometheusMetrics(sandboxID, body)
|
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
|
// parsePrometheusMetrics will decode metrics from Prometheus text format
|
||||||
// and return array of *dto.MetricFamily with an ASC order
|
// and return array of *dto.MetricFamily with an ASC order
|
||||||
func parsePrometheusMetrics(sandboxID string, body []byte) ([]*dto.MetricFamily, error) {
|
func parsePrometheusMetrics(sandboxID string, body []byte) ([]*dto.MetricFamily, error) {
|
||||||
|
Loading…
Reference in New Issue
Block a user