@@ -11,15 +11,22 @@ import (
1111)
1212
1313type MetricsServer struct {
14- handler http.Handler
15- gitFetchFailCounter * prometheus.CounterVec
16- gitLsRemoteFailCounter * prometheus.CounterVec
17- gitRequestCounter * prometheus.CounterVec
18- gitRequestHistogram * prometheus.HistogramVec
19- repoPendingRequestsGauge * prometheus.GaugeVec
20- redisRequestCounter * prometheus.CounterVec
21- redisRequestHistogram * prometheus.HistogramVec
22- PrometheusRegistry * prometheus.Registry
14+ handler http.Handler
15+ gitFetchFailCounter * prometheus.CounterVec
16+ gitLsRemoteFailCounter * prometheus.CounterVec
17+ gitRequestCounter * prometheus.CounterVec
18+ gitRequestHistogram * prometheus.HistogramVec
19+ repoPendingRequestsGauge * prometheus.GaugeVec
20+ redisRequestCounter * prometheus.CounterVec
21+ redisRequestHistogram * prometheus.HistogramVec
22+ ociExtractFailCounter * prometheus.CounterVec
23+ ociResolveRevisionFailCounter * prometheus.CounterVec
24+ ociDigestMetadataCounter * prometheus.CounterVec
25+ ociGetTagsFailCounter * prometheus.CounterVec
26+ ociTestRepoFailCounter * prometheus.CounterVec
27+ ociRequestCounter * prometheus.CounterVec
28+ ociRequestHistogram * prometheus.HistogramVec
29+ PrometheusRegistry * prometheus.Registry
2330}
2431
2532type GitRequestType string
@@ -100,16 +107,87 @@ func NewMetricsServer() *MetricsServer {
100107 )
101108 registry .MustRegister (redisRequestHistogram )
102109
110+ ociExtractFailCounter := prometheus .NewCounterVec (
111+ prometheus.CounterOpts {
112+ Name : "argocd_oci_extract_fail_total" ,
113+ Help : "Number of OCI extract requests failures by repo server" ,
114+ },
115+ []string {"repo" , "revision" },
116+ )
117+ registry .MustRegister (ociExtractFailCounter )
118+
119+ ociResolveRevisionFailCounter := prometheus .NewCounterVec (
120+ prometheus.CounterOpts {
121+ Name : "argocd_oci_resolve_revision_fail_total" ,
122+ Help : "Number of OCI resolve revision requests failures by repo server" ,
123+ },
124+ []string {"repo" , "revision" },
125+ )
126+ registry .MustRegister (ociResolveRevisionFailCounter )
127+
128+ ociDigestMetadataCounter := prometheus .NewCounterVec (
129+ prometheus.CounterOpts {
130+ Name : "argocd_oci_digest_metadata_fail_total" ,
131+ Help : "Number of OCI digest metadata requests failures by repo server" ,
132+ },
133+ []string {"repo" , "revision" },
134+ )
135+ registry .MustRegister (ociDigestMetadataCounter )
136+
137+ ociGetTagsFailCounter := prometheus .NewCounterVec (
138+ prometheus.CounterOpts {
139+ Name : "argocd_oci_get_tags_fail_total" ,
140+ Help : "Number of OCI get tags failures by repo server" ,
141+ },
142+ []string {"repo" },
143+ )
144+ registry .MustRegister (ociGetTagsFailCounter )
145+
146+ ociTestRepoFailCounter := prometheus .NewCounterVec (
147+ prometheus.CounterOpts {
148+ Name : "argocd_oci_test_repo_fail_total" ,
149+ Help : "Number of OCI test repo requests failures by repo server" ,
150+ },
151+ []string {"repo" },
152+ )
153+ registry .MustRegister (ociTestRepoFailCounter )
154+
155+ ociRequestCounter := prometheus .NewCounterVec (
156+ prometheus.CounterOpts {
157+ Name : "argocd_oci_request_total" ,
158+ Help : "Number of OCI requests performed by repo server" ,
159+ },
160+ []string {"repo" , "request_type" },
161+ )
162+ registry .MustRegister (ociRequestCounter )
163+
164+ ociRequestHistogram := prometheus .NewHistogramVec (
165+ prometheus.HistogramOpts {
166+ Name : "argocd_oci_request_duration_seconds" ,
167+ Help : "OCI requests duration seconds." ,
168+ Buckets : []float64 {0.1 , 0.25 , .5 , 1 , 2 , 4 , 10 , 20 },
169+ },
170+ []string {"repo" , "request_type" },
171+ )
172+ registry .MustRegister (ociRequestHistogram )
173+
103174 return & MetricsServer {
104- handler : promhttp .HandlerFor (registry , promhttp.HandlerOpts {}),
105- gitFetchFailCounter : gitFetchFailCounter ,
106- gitLsRemoteFailCounter : gitLsRemoteFailCounter ,
107- gitRequestCounter : gitRequestCounter ,
108- gitRequestHistogram : gitRequestHistogram ,
109- repoPendingRequestsGauge : repoPendingRequestsGauge ,
110- redisRequestCounter : redisRequestCounter ,
111- redisRequestHistogram : redisRequestHistogram ,
112- PrometheusRegistry : registry ,
175+ handler : promhttp .HandlerFor (registry , promhttp.HandlerOpts {}),
176+ gitFetchFailCounter : gitFetchFailCounter ,
177+ gitLsRemoteFailCounter : gitLsRemoteFailCounter ,
178+ gitRequestCounter : gitRequestCounter ,
179+ gitRequestHistogram : gitRequestHistogram ,
180+ repoPendingRequestsGauge : repoPendingRequestsGauge ,
181+ redisRequestCounter : redisRequestCounter ,
182+ redisRequestHistogram : redisRequestHistogram ,
183+ ociRequestCounter : ociRequestCounter ,
184+ ociRequestHistogram : ociRequestHistogram ,
185+ ociExtractFailCounter : ociExtractFailCounter ,
186+ ociResolveRevisionFailCounter : ociResolveRevisionFailCounter ,
187+ ociGetTagsFailCounter : ociGetTagsFailCounter ,
188+ ociDigestMetadataCounter : ociDigestMetadataCounter ,
189+ ociTestRepoFailCounter : ociTestRepoFailCounter ,
190+ PrometheusRegistry : registry ,
113191 }
114192}
115193
@@ -149,3 +227,37 @@ func (m *MetricsServer) IncRedisRequest(failed bool) {
149227func (m * MetricsServer ) ObserveRedisRequestDuration (duration time.Duration ) {
150228 m .redisRequestHistogram .WithLabelValues ("argocd-repo-server" ).Observe (duration .Seconds ())
151229}
230+
231+ // IncOCIRequest increments the OCI requests counter
232+ func (m * MetricsServer ) IncOCIRequest (repo string , requestType OCIRequestType ) {
233+ m .ociRequestCounter .WithLabelValues (repo , string (requestType )).Inc ()
234+ }
235+
236+ func (m * MetricsServer ) ObserveOCIRequestDuration (repo string , requestType OCIRequestType , duration time.Duration ) {
237+ m .ociRequestHistogram .WithLabelValues (repo , string (requestType )).Observe (duration .Seconds ())
238+ }
239+
240+ // IncOCIExtractFailCounter increments the OCI failed extract requests counter
241+ func (m * MetricsServer ) IncOCIExtractFailCounter (repo string , revision string ) {
242+ m .ociExtractFailCounter .WithLabelValues (repo , revision ).Inc ()
243+ }
244+
245+ // IncOCIResolveRevisionFailCounter increments the OCI failed resolve revision requests counter
246+ func (m * MetricsServer ) IncOCIResolveRevisionFailCounter (repo string , revision string ) {
247+ m .ociResolveRevisionFailCounter .WithLabelValues (repo , revision ).Inc ()
248+ }
249+
250+ // IncOCIDigestMetadataCounter increments the OCI failed digest metadata requests counter
251+ func (m * MetricsServer ) IncOCIDigestMetadataCounter (repo string , revision string ) {
252+ m .ociDigestMetadataCounter .WithLabelValues (repo , revision ).Inc ()
253+ }
254+
255+ // IncOCIGetTagsFailCounter increments the OCI failed get tags requests counter
256+ func (m * MetricsServer ) IncOCIGetTagsFailCounter (repo string ) {
257+ m .ociGetTagsFailCounter .WithLabelValues (repo ).Inc ()
258+ }
259+
260+ // IncOCITestRepoFailCounter increments the OCI failed test repo requests counter
261+ func (m * MetricsServer ) IncOCITestRepoFailCounter (repo string ) {
262+ m .ociTestRepoFailCounter .WithLabelValues (repo ).Inc ()
263+ }
0 commit comments