我一直在我的操作符上工作,我有一些自定义指标设置值,工作正常(注册和显示指标值)。问题是指标删除没有发生。我试图声明一个单独的函数来删除指标。
我的操作员正在启动statefulset和服务,但在删除我的CR时,子资源被删除,但指标没有得到任何更新/删除。
func (r *cr) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
......
......
if errors.IsNotFound(err) {
l.Info("CR not found so maybe deleted")
l.Info("Deleting CR metric Instance")
DeleteMetric(instance, true)
return ctrl.Result{}, nil
}
func DeleteMetric(cr *CR, condition bool) {
l := logf.Log.WithName("CR Metric deletion")
l.Info("Deleting metric for CR", "instance", cr.Name, "from namespace", cr.Namespace)
if condition {
custom_metric_name.Delete(prometheus.Labels{
"name": cr.Name,
"namespace": cr.Namespace,
})
}
}
我还尝试用DeleteFunc
声明 predicate ,但没有成功,我的指标仍然无法删除。
感谢任何帮助或指点。
1条答案
按热度按时间q5iwbnjs1#
我能够让这个工作,删除指标碰巧是简单地调用自定义指标与删除函数的基础上完成的操作的资源。
对于引用,在自定义指标上调用delete将起作用,并且您可以在自定义资源上的工作完成时调用该函数。
https://pkg.go.dev/github.com/prometheus/client_golang/prometheus#MetricVec.DeleteLabelValues