package forwarder import ( "github.com/prometheus/client_golang/prometheus" "edge-infra.dev/pkg/lib/runtime/metrics" ) func init() { metrics.Registry.MustRegister( PackageForwards, PackageForwardSkips, PackageForwardErrs, ) } const metricsNamespace = "forwarder" // Metrics related to forwarding packages var ( // TODO(aw): You can probably use reflection or just continue to hardcode it. The only requirement // is to ensure that the fields and their values are returned in a stable order so that they match. PackageLabels = []string{"Action", "Digest", "Tag", "ProjectID", "Repository"} PackageForwards = prometheus.NewCounterVec( prometheus.CounterOpts{ Namespace: metricsNamespace, Name: "package_forwards", Help: "Count of packages successfully forwarded", }, PackageLabels) PackageForwardSkips = prometheus.NewCounterVec( prometheus.CounterOpts{ Namespace: metricsNamespace, Name: "package_forward_skips", Help: "Count of packages that were ignored and not forwarded", }, PackageLabels) PackageForwardErrs = prometheus.NewCounterVec( prometheus.CounterOpts{ Namespace: metricsNamespace, Name: "package_forward_errs", Help: "Count of errors during package forwarding", }, PackageLabels) ) func IncPackageForwards(m Message) { PackageForwards.WithLabelValues(m.Action, m.Digest, m.Tag, m.ProjectID, m.Repository).Inc() } func IncPackageForwardSkips(m Message) { PackageForwardSkips.WithLabelValues(m.Action, m.Digest, m.Tag, m.ProjectID, m.Repository).Inc() } func IncPackageForwardErrs(m Message) { PackageForwardErrs.WithLabelValues(m.Action, m.Digest, m.Tag, m.ProjectID, m.Repository).Inc() }