package metrics import ( "github.com/prometheus/client_golang/prometheus" "edge-infra.dev/pkg/k8s/runtime/controller/metrics" l5dv1alpha1 "edge-infra.dev/pkg/edge/linkerd/k8s/apis/linkerd/v1alpha1" ) var LinkerdReadinessMetric prometheus.GaugeVec = *prometheus.NewGaugeVec( prometheus.GaugeOpts{ Name: metrics.Name("linkerd", "reconcile_readiness"), Help: "Metric for linkerd controller readiness", }, []string{"type", "status", "reason", "version"}) var TrustAnchorExpiry prometheus.GaugeVec = *prometheus.NewGaugeVec( prometheus.GaugeOpts{ Name: metrics.Name("linkerd", "trust_anchor_expiry"), Help: "Metric for linkerd trust anchor expiration date as UNIX timestamp", }, []string{}, ) var WorkloadInjectionReadinessMetric prometheus.GaugeVec = *prometheus.NewGaugeVec( prometheus.GaugeOpts{ Name: metrics.Name("workloadinjection", "reconcile_readiness"), Help: "Metric for linkerd workload injection controller readiness", }, []string{"type", "reason", "status"}) func RecordLinkerdReadiness(l5d *l5dv1alpha1.Linkerd) { LinkerdReadinessMetric.Reset() for _, condition := range l5d.Status.Conditions { labels := prometheus.Labels{ "type": condition.Type, "status": string(condition.Status), "reason": condition.Reason, "version": l5d.Status.Version, } if condition.Status == "False" || condition.Status == "Unknown" { LinkerdReadinessMetric.With(labels).Set(0) } else if condition.Status == "True" { LinkerdReadinessMetric.With(labels).Set(1) } } } func RecordTrustAnchorExpiryTime(expiry float64) { labels := prometheus.Labels{} TrustAnchorExpiry.With(labels).Set(float64(expiry)) } func RecordWorkloadInjectionReadiness(workloadInjection *l5dv1alpha1.LinkerdWorkloadInjection) { WorkloadInjectionReadinessMetric.Reset() for _, condition := range workloadInjection.Status.Conditions { labels := prometheus.Labels{ "type": condition.Type, "status": string(condition.Status), "reason": condition.Reason, } if condition.Status == "False" || condition.Status == "Unknown" { WorkloadInjectionReadinessMetric.With(labels).Set(0) } else if condition.Status == "True" { WorkloadInjectionReadinessMetric.With(labels).Set(1) } } }