@@ -16,6 +16,7 @@ import (
16
16
"github.com/go-logr/logr"
17
17
"github.com/machinezone/configmapsecrets/pkg/api/v1alpha1"
18
18
"github.com/machinezone/configmapsecrets/third_party/kubernetes/forked/golang/expansion"
19
+ "github.com/prometheus/client_golang/prometheus"
19
20
corev1 "k8s.io/api/core/v1"
20
21
apierrors "k8s.io/apimachinery/pkg/api/errors"
21
22
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -32,10 +33,20 @@ import (
32
33
"sigs.k8s.io/controller-runtime/pkg/event"
33
34
"sigs.k8s.io/controller-runtime/pkg/handler"
34
35
"sigs.k8s.io/controller-runtime/pkg/manager"
36
+ "sigs.k8s.io/controller-runtime/pkg/metrics"
35
37
"sigs.k8s.io/controller-runtime/pkg/reconcile"
36
38
"sigs.k8s.io/controller-runtime/pkg/source"
37
39
)
38
40
41
+ var missingValues = prometheus .NewCounterVec (prometheus.CounterOpts {
42
+ Name : "configmapsecret_controller_missing_value_render_errors_total" ,
43
+ Help : "Total number of ConfigMapSecret controller render errors due to missing required values." ,
44
+ }, []string {"namespace" })
45
+
46
+ func init () {
47
+ metrics .Registry .MustRegister (missingValues )
48
+ }
49
+
39
50
// ConfigMapSecret reconciles a ConfigMapSecret object
40
51
type ConfigMapSecret struct {
41
52
client client.Client
@@ -218,6 +229,7 @@ func (r *ConfigMapSecret) sync(ctx context.Context, log logr.Logger, cms *v1alph
218
229
}
219
230
}()
220
231
if isConfigError (err ) {
232
+ missingValues .WithLabelValues (cms .Namespace ).Inc ()
221
233
log .Info ("Unable to render ConfigMapSecret" , "warning" , err )
222
234
return true , nil
223
235
}
0 commit comments