// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0

package nomad

import (
	"github.com/armon/go-metrics"

	"github.com/hashicorp/nomad/nomad/structs"
)

// MeasureRPCRate increments the appropriate rate metric for this endpoint,
// with a label from the identity
func (s *Server) MeasureRPCRate(endpoint, op string, args structs.RequestWithIdentity) {
	identity := args.GetIdentity()

	if !s.config.ACLEnabled || identity == nil || s.config.DisableRPCRateMetricsLabels {
		// If ACLs aren't enabled, we never have a sensible identity.
		// Or the administrator may have disabled the identity labels.
		metrics.IncrCounter([]string{"nomad", "rpc", endpoint, op}, 1)
	} else {
		metrics.IncrCounterWithLabels(
			[]string{"nomad", "rpc", endpoint, op}, 1,
			[]metrics.Label{{Name: "identity", Value: identity.String()}})
	}
}
