package metrics import ( "git.frostfs.info/TrueCloudLab/frostfs-observability/metrics" "github.com/prometheus/client_golang/prometheus" ) type GrpcServerMetrics interface { MarkHealthy(endpoint string) MarkUnhealthy(endpoint string) } type grpcServerMetrics struct { endpointHealth *prometheus.GaugeVec } func newGrpcServerMetrics() *grpcServerMetrics { return &grpcServerMetrics{ endpointHealth: metrics.NewGaugeVec( prometheus.GaugeOpts{ Namespace: namespace, Subsystem: grpcServerSubsystem, Name: "health", Help: "GRPC Server Endpoint health", }, []string{endpointLabel}), } } func (m *grpcServerMetrics) MarkHealthy(endpoint string) { m.endpointHealth.With(prometheus.Labels{endpointLabel: endpoint}).Set(float64(1)) } func (m *grpcServerMetrics) MarkUnhealthy(endpoint string) { m.endpointHealth.With(prometheus.Labels{endpointLabel: endpoint}).Set(float64(0)) }