Skip to content

Commit 1e34080

Browse files
committed
eclipse-ditto#1806 provide Helm configuration for metric prefix and custom metrics
Signed-off-by: Thomas Jäckle <[email protected]>
1 parent 40e1e83 commit 1e34080

File tree

8 files changed

+75
-15
lines changed

8 files changed

+75
-15
lines changed

.github/workflows/helm-chart.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ jobs:
6565
k8s:
6666
- v1.26.6
6767
- v1.27.3
68-
- v1.28.3
68+
- v1.28.0
6969
steps:
7070
- name: Checkout
7171
uses: actions/checkout@v4

deployment/helm/ditto/templates/connectivity-deployment.yaml

+7-3
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,14 @@ spec:
8282
env:
8383
{{- if not .Values.global.logging.customConfigFile.enabled }}
8484
- name: DITTO_LOGGING_DISABLE_SYSOUT_LOG
85-
value: "{{ if .Values.global.logging.sysout.enabled }}false{{ else }}true{{ end }}"
85+
value: "{{ printf "%t" .Values.global.logging.sysout.enabled }}"
8686
- name: DITTO_LOGGING_FILE_APPENDER
87-
value: "{{ if .Values.global.logging.logFiles.enabled }}true{{ else }}false{{ end }}"
87+
value: "{{ printf "%t" .Values.global.logging.logFiles.enabled }}"
8888
{{- end }}
89+
- name: DITTO_METRICS_METRIC_PREFIX
90+
value: "{{ .Values.global.metrics.metricsPrefix }}"
91+
- name: SYSTEM_METRICS_ENABLED
92+
value: "{{ .Values.global.metrics.systemMetrics.enabled }}"
8993
- name: DITTO_TRACING_ENABLED
9094
value: "{{ .Values.global.tracing.enabled }}"
9195
- name: DITTO_TRACING_OTEL_TRACE_REPORTER_ENABLED
@@ -137,7 +141,7 @@ spec:
137141
{{- end }}
138142
{{ join " " .Values.connectivity.systemProps }}
139143
- name: MONGO_DB_SSL_ENABLED
140-
value: "{{ if .Values.dbconfig.connectivity.ssl }}true{{ else }}false{{ end }}"
144+
value: "{{ printf "%t" .Values.dbconfig.connectivity.ssl }}"
141145
- name: MONGO_DB_URI
142146
valueFrom:
143147
secretKeyRef:

deployment/helm/ditto/templates/gateway-deployment.yaml

+6-2
Original file line numberDiff line numberDiff line change
@@ -83,10 +83,14 @@ spec:
8383
env:
8484
{{- if not .Values.global.logging.customConfigFile.enabled }}
8585
- name: DITTO_LOGGING_DISABLE_SYSOUT_LOG
86-
value: "{{ if .Values.global.logging.sysout.enabled }}false{{ else }}true{{ end }}"
86+
value: "{{ printf "%t" .Values.global.logging.sysout.enabled }}"
8787
- name: DITTO_LOGGING_FILE_APPENDER
88-
value: "{{ if .Values.global.logging.logFiles.enabled }}true{{ else }}false{{ end }}"
88+
value: "{{ printf "%t" .Values.global.logging.logFiles.enabled }}"
8989
{{- end }}
90+
- name: DITTO_METRICS_METRIC_PREFIX
91+
value: "{{ .Values.global.metrics.metricsPrefix }}"
92+
- name: SYSTEM_METRICS_ENABLED
93+
value: "{{ .Values.global.metrics.systemMetrics.enabled }}"
9094
- name: DITTO_TRACING_ENABLED
9195
value: "{{ .Values.global.tracing.enabled }}"
9296
- name: DITTO_TRACING_OTEL_TRACE_REPORTER_ENABLED

deployment/helm/ditto/templates/policies-deployment.yaml

+7-3
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,14 @@ spec:
8282
env:
8383
{{- if not .Values.global.logging.customConfigFile.enabled }}
8484
- name: DITTO_LOGGING_DISABLE_SYSOUT_LOG
85-
value: "{{ if .Values.global.logging.sysout.enabled }}false{{ else }}true{{ end }}"
85+
value: "{{ printf "%t" .Values.global.logging.sysout.enabled }}"
8686
- name: DITTO_LOGGING_FILE_APPENDER
87-
value: "{{ if .Values.global.logging.logFiles.enabled }}true{{ else }}false{{ end }}"
87+
value: "{{ printf "%t" .Values.global.logging.logFiles.enabled }}"
8888
{{- end }}
89+
- name: DITTO_METRICS_METRIC_PREFIX
90+
value: "{{ .Values.global.metrics.metricsPrefix }}"
91+
- name: SYSTEM_METRICS_ENABLED
92+
value: "{{ .Values.global.metrics.systemMetrics.enabled }}"
8993
- name: DITTO_TRACING_ENABLED
9094
value: "{{ .Values.global.tracing.enabled }}"
9195
- name: DITTO_TRACING_OTEL_TRACE_REPORTER_ENABLED
@@ -155,7 +159,7 @@ spec:
155159
{{- end }}
156160
{{ join " " .Values.policies.systemProps }}
157161
- name: MONGO_DB_SSL_ENABLED
158-
value: "{{ if .Values.dbconfig.policies.ssl }}true{{ else }}false{{ end }}"
162+
value: "{{ printf "%t" .Values.dbconfig.policies.ssl }}"
159163
- name: MONGO_DB_URI
160164
valueFrom:
161165
secretKeyRef:

deployment/helm/ditto/templates/things-deployment.yaml

+7-3
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,14 @@ spec:
8282
env:
8383
{{- if not .Values.global.logging.customConfigFile.enabled }}
8484
- name: DITTO_LOGGING_DISABLE_SYSOUT_LOG
85-
value: "{{ if .Values.global.logging.sysout.enabled }}false{{ else }}true{{ end }}"
85+
value: "{{ printf "%t" .Values.global.logging.sysout.enabled }}"
8686
- name: DITTO_LOGGING_FILE_APPENDER
87-
value: "{{ if .Values.global.logging.logFiles.enabled }}true{{ else }}false{{ end }}"
87+
value: "{{ printf "%t" .Values.global.logging.logFiles.enabled }}"
8888
{{- end }}
89+
- name: DITTO_METRICS_METRIC_PREFIX
90+
value: "{{ .Values.global.metrics.metricsPrefix }}"
91+
- name: SYSTEM_METRICS_ENABLED
92+
value: "{{ .Values.global.metrics.systemMetrics.enabled }}"
8993
- name: DITTO_TRACING_ENABLED
9094
value: "{{ .Values.global.tracing.enabled }}"
9195
- name: DITTO_TRACING_OTEL_TRACE_REPORTER_ENABLED
@@ -156,7 +160,7 @@ spec:
156160
'-Dditto.things.wot.to-thing-description.json-template={{ .Values.things.config.wot.tdJsonTemplate | replace "\n" "" | replace "\\\"" "\"" }}'
157161
{{ join " " .Values.things.systemProps }}
158162
- name: MONGO_DB_SSL_ENABLED
159-
value: "{{ if .Values.dbconfig.things.ssl }}true{{ else }}false{{ end }}"
163+
value: "{{ printf "%t" .Values.dbconfig.things.ssl }}"
160164
- name: MONGO_DB_URI
161165
valueFrom:
162166
secretKeyRef:

deployment/helm/ditto/templates/thingssearch-deployment.yaml

+22-3
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,14 @@ spec:
8282
env:
8383
{{- if not .Values.global.logging.customConfigFile.enabled }}
8484
- name: DITTO_LOGGING_DISABLE_SYSOUT_LOG
85-
value: "{{ if .Values.global.logging.sysout.enabled }}false{{ else }}true{{ end }}"
85+
value: "{{ printf "%t" .Values.global.logging.sysout.enabled }}"
8686
- name: DITTO_LOGGING_FILE_APPENDER
87-
value: "{{ if .Values.global.logging.logFiles.enabled }}true{{ else }}false{{ end }}"
87+
value: "{{ printf "%t" .Values.global.logging.logFiles.enabled }}"
8888
{{- end }}
89+
- name: DITTO_METRICS_METRIC_PREFIX
90+
value: "{{ .Values.global.metrics.metricsPrefix }}"
91+
- name: SYSTEM_METRICS_ENABLED
92+
value: "{{ .Values.global.metrics.systemMetrics.enabled }}"
8993
- name: DITTO_TRACING_ENABLED
9094
value: "{{ .Values.global.tracing.enabled }}"
9195
- name: DITTO_TRACING_OTEL_TRACE_REPORTER_ENABLED
@@ -132,9 +136,20 @@ spec:
132136
{{- if .Values.global.logging.customConfigFile.enabled }}
133137
-Dlogback.configurationFile=/opt/ditto/{{ .Values.global.logging.customConfigFile.fileName }}
134138
{{- end }}
139+
{{- range $key, $value := .Values.thingsSearch.config.operatorMetrics.customMetrics }}
140+
"{{ printf "%s%s%s=%t" "-Dditto.search.operator-metrics.custom-metrics." $key ".enabled" $value.enabled }}"
141+
"{{ printf "%s%s%s=%s" "-Dditto.search.operator-metrics.custom-metrics." $key ".scrape-interval" $value.scrapeInterval }}"
142+
{{- range $index, $namespace := $value.namespaces }}
143+
"{{ printf "%s%s%s%d=%s" "-Dditto.search.operator-metrics.custom-metrics." $key ".namespaces." $index $namespace }}"
144+
{{- end }}
145+
"{{ printf "%s%s%s=%s" "-Dditto.search.operator-metrics.custom-metrics." $key ".filter" $value.filter }}"
146+
{{- range $tagKey, $tagValue := $value.tags }}
147+
"{{ printf "%s%s%s%s=%s" "-Dditto.search.operator-metrics.custom-metrics." $key ".tags." $tagKey $tagValue }}"
148+
{{- end }}
149+
{{- end }}
135150
{{ join " " .Values.thingsSearch.systemProps }}
136151
- name: MONGO_DB_SSL_ENABLED
137-
value: "{{ if .Values.dbconfig.thingsSearch.ssl }}true{{ else }}false{{ end }}"
152+
value: "{{ printf "%t" .Values.dbconfig.thingsSearch.ssl }}"
138153
- name: MONGO_DB_URI
139154
valueFrom:
140155
secretKeyRef:
@@ -204,6 +219,10 @@ spec:
204219
value: "{{ .Values.thingsSearch.config.updater.stream.retrievalParallelism }}"
205220
- name: THINGS_SEARCH_UPDATER_STREAM_PERSISTENCE_PARALLELISM
206221
value: "{{ .Values.thingsSearch.config.updater.stream.persistence.parallelism }}"
222+
- name: THINGS_SEARCH_OPERATOR_METRICS_ENABLED
223+
value: "{{ .Values.thingsSearch.config.operatorMetrics.enabled }}"
224+
- name: THINGS_SEARCH_OPERATOR_METRICS_SCRAPE_INTERVAL
225+
value: "{{ .Values.thingsSearch.config.operatorMetrics.scrapeInterval }}"
207226
- name: ACTIVITY_CHECK_INTERVAL
208227
value: "{{ .Values.thingsSearch.config.updater.activityCheckInterval }}"
209228
- name: BACKGROUND_SYNC_ENABLED

deployment/helm/ditto/values.yaml

+24
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,14 @@ global:
135135
enabled: true
136136
# fileName passed as Java system property "-Dlogback.configurationFile"
137137
fileName: logback.xml
138+
# metrics configuration for Ditto
139+
metrics:
140+
# metricsPrefix defines a prefix to use for all Ditto created metrics (counters, gauges, histograms)
141+
metricsPrefix: ""
142+
# systemMetrics contains the configuration for obtaining system metrics (via Kamon)
143+
systemMetrics:
144+
# enabled if enabled, system metrics are gathered
145+
enabled: true
138146
# tracing configuration for Ditto
139147
tracing:
140148
# enabled whether tracing (via OpenTelemetry) is enabled
@@ -1069,6 +1077,22 @@ thingsSearch:
10691077
throughput: 100
10701078
# period the throttle period
10711079
period: 30s
1080+
# operatorMetrics contains configuration for operator defined custom metrics, using a search "count" with namespaces and filter
1081+
operatorMetrics:
1082+
# enabled configures whether operator metrics should be enabled or not
1083+
enabled: true
1084+
# scrapeInterval defines the default scrape interval if a "customMetric" did not specify a custom scrape interval
1085+
scrapeInterval: 15m
1086+
# customMetrics holds a map of metric-names as key (e.g. "ditto_my_awesome_things") and custom metric config as value
1087+
customMetrics:
1088+
# ditto_my_awesome_things:
1089+
# enabled: true
1090+
# scrapeInterval: 5m
1091+
# namespaces:
1092+
# - "org.eclipse.ditto"
1093+
# filter: "eq(attributes/awesome,true)"
1094+
# tags:
1095+
# foo: bar
10721096

10731097

10741098
## ----------------------------------------------------------------------------

thingsearch/service/src/main/resources/search.conf

+1
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,7 @@ ditto {
298298
# built-in query, delivering the total things as metric
299299
total_things {
300300
enabled = true
301+
scrape-interval = 15m # overwrite scrape interval, run each minute
301302
# for all namespaces
302303
namespaces = []
303304
# with an empty filter query, counting all existing things

0 commit comments

Comments
 (0)