@@ -20,6 +20,7 @@ import (
20
20
"io"
21
21
"net/http"
22
22
23
+ "kubeops.dev/ui-server/pkg/graph"
23
24
"kubeops.dev/ui-server/pkg/metricsstore"
24
25
25
26
"github.com/prometheus/client_golang/prometheus/promhttp"
@@ -64,117 +65,133 @@ func (m *MetricsHandler) Install(c *mux.PathRecorderMux) {
64
65
65
66
func collectMetrics (kc client.Client , w io.Writer ) error {
66
67
generators := getFamilyGenerators ()
68
+ if len (generators ) == 0 {
69
+ _ , err := w .Write ([]byte ("OK" ))
70
+ return err
71
+ }
72
+
67
73
// Generate the headers for the resources metrics
68
74
headers := generator .ExtractMetricFamilyHeaders (generators )
69
75
store := metricsstore .NewMetricsStore (headers )
70
76
71
- err := collectScannerMetrics (kc , generators , store )
72
- if err != nil {
73
- return err
77
+ offset := 0
78
+ if graph .ScannerInstalled () {
79
+ err := collectScannerMetrics (kc , generators , store )
80
+ if err != nil {
81
+ return err
82
+ }
83
+ offset = 9 // # of scanner metrics families
74
84
}
75
- err = collectPolicyMetrics (kc , generators , store )
76
- if err != nil {
77
- return err
85
+ if graph .OPAInstalled () {
86
+ err := collectPolicyMetrics (kc , generators , store , offset )
87
+ if err != nil {
88
+ return err
89
+ }
78
90
}
79
91
return store .WriteAll (w )
80
92
}
81
93
82
94
func getFamilyGenerators () []generator.FamilyGenerator {
83
95
fn := func (obj interface {}) * metric.Family { return new (metric.Family ) }
84
96
generators := make ([]generator.FamilyGenerator , 0 , 13 )
85
- generators = append (generators , generator.FamilyGenerator {
86
- Name : scannerMetricPrefix + "cluster_cve_occurrence" ,
87
- Help : "CVE occurrence statistics" ,
88
- Type : metric .Gauge ,
89
- DeprecatedVersion : "" ,
90
- GenerateFunc : fn ,
91
- })
92
- generators = append (generators , generator.FamilyGenerator {
93
- Name : scannerMetricPrefix + "cluster_cve_occurrence_total" ,
94
- Help : "Cluster total CVE occurrence" ,
95
- Type : metric .Gauge ,
96
- DeprecatedVersion : "" ,
97
- GenerateFunc : fn ,
98
- })
99
- generators = append (generators , generator.FamilyGenerator {
100
- Name : scannerMetricPrefix + "cluster_cve_count_total" ,
101
- Help : "Cluster total unique CVE count" ,
102
- Type : metric .Gauge ,
103
- DeprecatedVersion : "" ,
104
- GenerateFunc : fn ,
105
- })
106
- generators = append (generators , generator.FamilyGenerator {
107
- Name : scannerMetricPrefix + "namespace_cve_occurrence" ,
108
- Help : "Namespace CVE occurrence statistics" ,
109
- Type : metric .Gauge ,
110
- DeprecatedVersion : "" ,
111
- GenerateFunc : fn ,
112
- })
113
- generators = append (generators , generator.FamilyGenerator {
114
- Name : scannerMetricPrefix + "namespace_cve_occurrence_total" ,
115
- Help : "Namespace total CVE occurrence" ,
116
- Type : metric .Gauge ,
117
- DeprecatedVersion : "" ,
118
- GenerateFunc : fn ,
119
- })
120
- generators = append (generators , generator.FamilyGenerator {
121
- Name : scannerMetricPrefix + "namespace_cve_count_total" ,
122
- Help : "Namespace total unique CVE count" ,
123
- Type : metric .Gauge ,
124
- DeprecatedVersion : "" ,
125
- GenerateFunc : fn ,
126
- })
127
-
128
- generators = append (generators , generator.FamilyGenerator {
129
- Name : scannerMetricPrefix + "image_cve_occurrence_total" ,
130
- Help : "Image total CVE occurrence" ,
131
- Type : metric .Gauge ,
132
- DeprecatedVersion : "" ,
133
- GenerateFunc : fn ,
134
- })
135
- generators = append (generators , generator.FamilyGenerator {
136
- Name : scannerMetricPrefix + "image_cve_count_total" ,
137
- Help : "Image total unique CVE count" ,
138
- Type : metric .Gauge ,
139
- DeprecatedVersion : "" ,
140
- GenerateFunc : fn ,
141
- })
142
- generators = append (generators , generator.FamilyGenerator {
143
- Name : scannerMetricPrefix + "image_lineage" ,
144
- Help : "Image Lineage" ,
145
- Type : metric .Gauge ,
146
- DeprecatedVersion : "" ,
147
- GenerateFunc : fn ,
148
- })
149
-
150
- // Policy related metrics
151
- generators = append (generators , generator.FamilyGenerator {
152
- Name : policyMetricPrefix + "cluster_violation_occurrence_total" ,
153
- Help : "Cluster-wide Violation Occurrence statistics" ,
154
- Type : metric .Gauge ,
155
- DeprecatedVersion : "" ,
156
- GenerateFunc : fn ,
157
- })
158
- generators = append (generators , generator.FamilyGenerator {
159
- Name : policyMetricPrefix + "cluster_violation_occurrence_by_constraint_type" ,
160
- Help : "Cluster-wide Violation Occurrence statistics by constraint type" ,
161
- Type : metric .Gauge ,
162
- DeprecatedVersion : "" ,
163
- GenerateFunc : fn ,
164
- })
165
- generators = append (generators , generator.FamilyGenerator {
166
- Name : policyMetricPrefix + "namespace_violation_occurrence_total" ,
167
- Help : "Namespace-wise total Violation Occurrence statistics" ,
168
- Type : metric .Gauge ,
169
- DeprecatedVersion : "" ,
170
- GenerateFunc : fn ,
171
- })
172
- generators = append (generators , generator.FamilyGenerator {
173
- Name : policyMetricPrefix + "namespace_violation_occurrence_by_constraint_type" ,
174
- Help : "Namespace-wise Violation Occurrence statistics by constraint type" ,
175
- Type : metric .Gauge ,
176
- DeprecatedVersion : "" ,
177
- GenerateFunc : fn ,
178
- })
97
+
98
+ if graph .ScannerInstalled () {
99
+ generators = append (generators , generator.FamilyGenerator {
100
+ Name : scannerMetricPrefix + "cluster_cve_occurrence" ,
101
+ Help : "CVE occurrence statistics" ,
102
+ Type : metric .Gauge ,
103
+ DeprecatedVersion : "" ,
104
+ GenerateFunc : fn ,
105
+ })
106
+ generators = append (generators , generator.FamilyGenerator {
107
+ Name : scannerMetricPrefix + "cluster_cve_occurrence_total" ,
108
+ Help : "Cluster total CVE occurrence" ,
109
+ Type : metric .Gauge ,
110
+ DeprecatedVersion : "" ,
111
+ GenerateFunc : fn ,
112
+ })
113
+ generators = append (generators , generator.FamilyGenerator {
114
+ Name : scannerMetricPrefix + "cluster_cve_count_total" ,
115
+ Help : "Cluster total unique CVE count" ,
116
+ Type : metric .Gauge ,
117
+ DeprecatedVersion : "" ,
118
+ GenerateFunc : fn ,
119
+ })
120
+ generators = append (generators , generator.FamilyGenerator {
121
+ Name : scannerMetricPrefix + "namespace_cve_occurrence" ,
122
+ Help : "Namespace CVE occurrence statistics" ,
123
+ Type : metric .Gauge ,
124
+ DeprecatedVersion : "" ,
125
+ GenerateFunc : fn ,
126
+ })
127
+ generators = append (generators , generator.FamilyGenerator {
128
+ Name : scannerMetricPrefix + "namespace_cve_occurrence_total" ,
129
+ Help : "Namespace total CVE occurrence" ,
130
+ Type : metric .Gauge ,
131
+ DeprecatedVersion : "" ,
132
+ GenerateFunc : fn ,
133
+ })
134
+ generators = append (generators , generator.FamilyGenerator {
135
+ Name : scannerMetricPrefix + "namespace_cve_count_total" ,
136
+ Help : "Namespace total unique CVE count" ,
137
+ Type : metric .Gauge ,
138
+ DeprecatedVersion : "" ,
139
+ GenerateFunc : fn ,
140
+ })
141
+
142
+ generators = append (generators , generator.FamilyGenerator {
143
+ Name : scannerMetricPrefix + "image_cve_occurrence_total" ,
144
+ Help : "Image total CVE occurrence" ,
145
+ Type : metric .Gauge ,
146
+ DeprecatedVersion : "" ,
147
+ GenerateFunc : fn ,
148
+ })
149
+ generators = append (generators , generator.FamilyGenerator {
150
+ Name : scannerMetricPrefix + "image_cve_count_total" ,
151
+ Help : "Image total unique CVE count" ,
152
+ Type : metric .Gauge ,
153
+ DeprecatedVersion : "" ,
154
+ GenerateFunc : fn ,
155
+ })
156
+ generators = append (generators , generator.FamilyGenerator {
157
+ Name : scannerMetricPrefix + "image_lineage" ,
158
+ Help : "Image Lineage" ,
159
+ Type : metric .Gauge ,
160
+ DeprecatedVersion : "" ,
161
+ GenerateFunc : fn ,
162
+ })
163
+ }
164
+
165
+ if graph .OPAInstalled () {
166
+ // Policy related metrics
167
+ generators = append (generators , generator.FamilyGenerator {
168
+ Name : policyMetricPrefix + "cluster_violation_occurrence_total" ,
169
+ Help : "Cluster-wide Violation Occurrence statistics" ,
170
+ Type : metric .Gauge ,
171
+ DeprecatedVersion : "" ,
172
+ GenerateFunc : fn ,
173
+ })
174
+ generators = append (generators , generator.FamilyGenerator {
175
+ Name : policyMetricPrefix + "cluster_violation_occurrence_by_constraint_type" ,
176
+ Help : "Cluster-wide Violation Occurrence statistics by constraint type" ,
177
+ Type : metric .Gauge ,
178
+ DeprecatedVersion : "" ,
179
+ GenerateFunc : fn ,
180
+ })
181
+ generators = append (generators , generator.FamilyGenerator {
182
+ Name : policyMetricPrefix + "namespace_violation_occurrence_total" ,
183
+ Help : "Namespace-wise total Violation Occurrence statistics" ,
184
+ Type : metric .Gauge ,
185
+ DeprecatedVersion : "" ,
186
+ GenerateFunc : fn ,
187
+ })
188
+ generators = append (generators , generator.FamilyGenerator {
189
+ Name : policyMetricPrefix + "namespace_violation_occurrence_by_constraint_type" ,
190
+ Help : "Namespace-wise Violation Occurrence statistics by constraint type" ,
191
+ Type : metric .Gauge ,
192
+ DeprecatedVersion : "" ,
193
+ GenerateFunc : fn ,
194
+ })
195
+ }
179
196
return generators
180
197
}
0 commit comments