Files
kubescape/core/metrics/metrics.go
David Wertenteil 3e2314a269 Bump v3 (#1449)
* bump version

Signed-off-by: David Wertenteil <dwertent@armosec.io>

* change default view

Signed-off-by: David Wertenteil <dwertent@armosec.io>

* fixed tests

Signed-off-by: David Wertenteil <dwertent@armosec.io>

* fixed go mod

Signed-off-by: David Wertenteil <dwertent@armosec.io>

---------

Signed-off-by: David Wertenteil <dwertent@armosec.io>
2023-10-22 17:43:51 +03:00

60 lines
1.5 KiB
Go

package metrics
import (
"context"
"strings"
"sync"
"github.com/kubescape/go-logger"
"github.com/kubescape/go-logger/helpers"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/metric"
)
const (
METER_NAME = "github.com/kubescape/kubescape/v3"
METRIC_NAME_PREFIX = "kubescape"
)
var initOnce sync.Once
// Metrics are defined here
var (
kubernetesResourcesCount metric.Int64UpDownCounter
workerNodesCount metric.Int64UpDownCounter
)
// Init initializes the metrics
func Init() {
initOnce.Do(func() {
var err error
meterProvider := otel.GetMeterProvider()
meter := meterProvider.Meter(METER_NAME)
metricName := func(name string) string {
return strings.Join([]string{METRIC_NAME_PREFIX, name}, "_")
}
if kubernetesResourcesCount, err = meter.Int64UpDownCounter(metricName("kubernetes_resources_count")); err != nil {
logger.L().Error("failed to register instrument", helpers.Error(err))
}
if workerNodesCount, err = meter.Int64UpDownCounter(metricName("worker_nodes_count")); err != nil {
logger.L().Error("failed to register instrument", helpers.Error(err))
}
})
}
// UpdateKubernetesResourcesCount updates the kubernetes resources count metric
func UpdateKubernetesResourcesCount(ctx context.Context, value int64) {
if kubernetesResourcesCount != nil {
kubernetesResourcesCount.Add(ctx, value)
}
}
// UpdateWorkerNodesCount updates the worker nodes count metric
func UpdateWorkerNodesCount(ctx context.Context, value int64) {
if workerNodesCount != nil {
workerNodesCount.Add(ctx, value)
}
}