|
| 1 | +--- |
1 | 2 | # Use something like this to check for metrics: |
2 | 3 | # count by (app_kubernetes_io_name, app_kubernetes_io_instance, pod) ({app_kubernetes_io_name!="",pod!=""}) |
3 | 4 | # |
4 | 5 | # Products metrics covered by the ServiceMonitors below. The list also includes whether the |
5 | 6 | # ServiceMonitor scrapes native metrics or a statsd/JMX exporter. |
6 | 7 | # |
7 | | -# [x] Airflow - exporter |
8 | | -# [x] Druid - native |
9 | | -# [x] HBase - native |
10 | | -# [x] Hadoop HDFS - native |
11 | | -# [x] Hive - exporter |
12 | | -# [x] Kafka - exporter |
13 | | -# [x] NiFi 1 - native |
14 | | -# [x] NiFi 2 - native |
15 | | -# [x] OpenSearch - native |
16 | | -# [ ] Spark - native - partially done, see comment on it below |
17 | | -# [x] Superset - exporter |
18 | | -# [x] Trino - native |
19 | | -# [x] ZooKeeper - native |
20 | | -# [x] OPA - native |
21 | | ---- |
22 | | -apiVersion: monitoring.coreos.com/v1 |
23 | | -kind: ServiceMonitor |
24 | | -metadata: |
25 | | - name: stackable |
26 | | - labels: |
27 | | - stackable.tech/vendor: Stackable |
28 | | - release: prometheus |
29 | | -spec: |
30 | | - namespaceSelector: |
31 | | - any: true |
32 | | - selector: |
33 | | - matchLabels: |
34 | | - stackable.tech/vendor: Stackable |
35 | | - prometheus.io/scrape: "true" |
36 | | - matchExpressions: |
37 | | - - key: app.kubernetes.io/name |
38 | | - operator: In |
39 | | - values: |
40 | | - - airflow |
41 | | - - druid |
42 | | - - hive |
43 | | - - kafka |
44 | | - - nifi # This only works for NiFi 1, NiFi 2 works via stackable-generic |
45 | | - - opa |
46 | | - - superset |
47 | | - - trino |
48 | | - - zookeeper |
49 | | - endpoints: |
50 | | - - scheme: http |
51 | | - port: metrics |
52 | | - path: /metrics |
53 | | - podTargetLabels: |
54 | | - - app.kubernetes.io/name |
55 | | - - app.kubernetes.io/instance |
56 | | - - app.kubernetes.io/component |
57 | | - - app.kubernetes.io/role-group |
58 | | - - app.kubernetes.io/version |
59 | | ---- |
| 8 | +# |
60 | 9 | # Utilize `prometheus.io/scheme`, `prometheus.io/port`, `prometheus.io/path` annotations set by the operators |
61 | 10 | # to scrape all Stackable products. |
62 | 11 | # [x] Airflow - relabel drop filter on airflow container |
63 | 12 | # [x] Druid |
64 | 13 | # [x] HBase |
65 | 14 | # [X] Hadoop HDFS - relabel drop filter on empty container |
66 | 15 | # [x] Hive |
67 | | -# [~] Kafka - TODO: listener services have metrics? |
| 16 | +# [x] Kafka - TODO: listener services have metrics? |
68 | 17 | # [x] NiFi 1 + 2 |
69 | | -# [ ] OpenSearch |
| 18 | +# [x] OpenSearch |
70 | 19 | # [x] Spark: Connect, HistoryServer |
71 | 20 | # [x] Superset - relabel drop filter on superset container |
72 | 21 | # [x] Trino |
|
75 | 24 | apiVersion: monitoring.coreos.com/v1 |
76 | 25 | kind: ServiceMonitor |
77 | 26 | metadata: |
78 | | - name: stackable-generic |
| 27 | + name: stackable |
79 | 28 | labels: |
80 | 29 | stackable.tech/vendor: Stackable |
81 | 30 | release: prometheus |
|
91 | 40 | - sourceLabels: |
92 | 41 | - __meta_kubernetes_pod_container_name |
93 | 42 | # Pods show up twice due to multiple containers, we only keep the main / product container. |
94 | | - # Except for Airflow and Superset, where we chose the metrics container (otherwise scheduler, worker etc. |
95 | | - # which only have the metrics container are not getting picked up). |
| 43 | + # Except for Airflow and Superset, where we chose the metrics container. |
96 | 44 | # - airflow: airflow |
97 | 45 | # - superset: superset |
98 | 46 | # - empty: filter when container label does not exist: hdfs |
@@ -136,109 +84,6 @@ spec: |
136 | 84 | - app.kubernetes.io/role-group |
137 | 85 | - app.kubernetes.io/version |
138 | 86 | --- |
139 | | -# We prefer the native metrics over the statsd-exporter |
140 | | -apiVersion: monitoring.coreos.com/v1 |
141 | | -kind: ServiceMonitor |
142 | | -metadata: |
143 | | - name: stackable-hdfs |
144 | | - labels: |
145 | | - stackable.tech/vendor: Stackable |
146 | | - release: prometheus |
147 | | -spec: |
148 | | - namespaceSelector: |
149 | | - any: true |
150 | | - selector: |
151 | | - matchLabels: |
152 | | - stackable.tech/vendor: Stackable |
153 | | - prometheus.io/scrape: "true" |
154 | | - app.kubernetes.io/name: hdfs |
155 | | - endpoints: |
156 | | - - scheme: http |
157 | | - port: http # Don't use the "metrics" exporter port, we want native metrics instead |
158 | | - path: /prom |
159 | | - podTargetLabels: |
160 | | - - app.kubernetes.io/name |
161 | | - - app.kubernetes.io/instance |
162 | | - - app.kubernetes.io/component |
163 | | - - app.kubernetes.io/role-group |
164 | | - - app.kubernetes.io/version |
165 | | ---- |
166 | | -apiVersion: monitoring.coreos.com/v1 |
167 | | -kind: ServiceMonitor |
168 | | -metadata: |
169 | | - name: stackable-hbase |
170 | | - labels: |
171 | | - stackable.tech/vendor: Stackable |
172 | | - release: prometheus |
173 | | -spec: |
174 | | - namespaceSelector: |
175 | | - any: true |
176 | | - selector: |
177 | | - matchLabels: |
178 | | - stackable.tech/vendor: Stackable |
179 | | - prometheus.io/scrape: "true" |
180 | | - app.kubernetes.io/name: hbase |
181 | | - endpoints: |
182 | | - - scheme: http |
183 | | - port: metrics |
184 | | - path: /prometheus |
185 | | - podTargetLabels: |
186 | | - - app.kubernetes.io/name |
187 | | - - app.kubernetes.io/instance |
188 | | - - app.kubernetes.io/component |
189 | | - - app.kubernetes.io/role-group |
190 | | - - app.kubernetes.io/version |
191 | | ---- |
192 | | -apiVersion: monitoring.coreos.com/v1 |
193 | | -kind: ServiceMonitor |
194 | | -metadata: |
195 | | - name: stackable-opensearch |
196 | | - labels: |
197 | | - stackable.tech/vendor: Stackable |
198 | | - release: prometheus |
199 | | -spec: |
200 | | - namespaceSelector: |
201 | | - any: true |
202 | | - selector: |
203 | | - matchLabels: |
204 | | - stackable.tech/vendor: Stackable |
205 | | - prometheus.io/scrape: "true" |
206 | | - app.kubernetes.io/name: opensearch |
207 | | - endpoints: |
208 | | - - relabelings: |
209 | | - - sourceLabels: |
210 | | - - __meta_kubernetes_service_annotation_prometheus_io_scheme |
211 | | - action: replace |
212 | | - targetLabel: __scheme__ |
213 | | - regex: (https?) |
214 | | - - sourceLabels: |
215 | | - - __meta_kubernetes_service_annotation_prometheus_io_path |
216 | | - action: replace |
217 | | - targetLabel: __metrics_path__ |
218 | | - regex: (.+) |
219 | | - # Use the FQDN instead of the IP address because the IP address |
220 | | - # is not contained in the certificate. |
221 | | - - sourceLabels: |
222 | | - - __meta_kubernetes_pod_name |
223 | | - - __meta_kubernetes_service_name |
224 | | - - __meta_kubernetes_namespace |
225 | | - - __meta_kubernetes_service_annotation_prometheus_io_port |
226 | | - action: replace |
227 | | - targetLabel: __address__ |
228 | | - regex: (.+);(.+);(.+);(\d+) |
229 | | - replacement: $1.$2.$3.svc.cluster.local:$4 |
230 | | - tlsConfig: |
231 | | - ca: |
232 | | - secret: |
233 | | - name: prometheus-tls-certificate |
234 | | - key: ca.crt |
235 | | - podTargetLabels: |
236 | | - - app.kubernetes.io/name |
237 | | - - app.kubernetes.io/instance |
238 | | - - app.kubernetes.io/component |
239 | | - - app.kubernetes.io/role-group |
240 | | - - app.kubernetes.io/version |
241 | | ---- |
242 | 87 | # spark-k8s-operator does not deploy any Services at all (at least for SparkApplications). |
243 | 88 | # We currently only scrape the driver, going forward we might want to scrape the executors as well. |
244 | 89 | # In the future we might also want to scrape SparkConnect and HistoryServers. |
@@ -271,26 +116,6 @@ spec: |
271 | 116 | --- |
272 | 117 | apiVersion: monitoring.coreos.com/v1 |
273 | 118 | kind: ServiceMonitor |
274 | | -metadata: |
275 | | - name: stackable-minio-http |
276 | | - labels: |
277 | | - stackable.tech/vendor: Stackable |
278 | | - release: prometheus |
279 | | -spec: |
280 | | - namespaceSelector: |
281 | | - any: true |
282 | | - selector: |
283 | | - matchLabels: |
284 | | - # stackable.tech/vendor: Stackable # This is not always set, e.g. missing in the nifi-kafka-druid-water-level-data demo |
285 | | - app: minio |
286 | | - monitoring: "true" |
287 | | - endpoints: |
288 | | - - scheme: http |
289 | | - port: http |
290 | | - path: /minio/v2/metrics/cluster |
291 | | ---- |
292 | | -apiVersion: monitoring.coreos.com/v1 |
293 | | -kind: ServiceMonitor |
294 | 119 | metadata: |
295 | 120 | name: stackable-minio-https |
296 | 121 | labels: |
|
0 commit comments