Skip to content

Commit 3c993a0

Browse files
authored
Implement metrics with the prometeus endpoint (#215)
* Implement metrics with the prometeus endpoint * Add the metrics service * Remove service yaml * Self-review fixes
1 parent fe1e740 commit 3c993a0

File tree

6 files changed

+39
-1
lines changed

6 files changed

+39
-1
lines changed

.helm/templates/deployment.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ spec:
7979
value: {{ .Values.settings.telemetry.clusterName | default "arcane-cluster"}}
8080
- name: ARCANE_OPERATOR__TELEMETRY__LOG_LEVEL
8181
value: {{ .Values.settings.telemetry.logLevel | default "info"}}
82+
- name: ARCANE_OPERATOR__TELEMETRY__METRICS_BIND_ADDRESS
83+
value: {{ .Values.settings.telemetry.metricsBindAddressOverride | default (printf "0.0.0.0:%v" .Values.settings.telemetry.metricsPort) }}
8284
{{- if .Values.datadog.enabled }}
8385
- name: DATADOG__API_KEY
8486
valueFrom:
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: {{ include "app.name" . }}-metrics
5+
labels:
6+
{{- include "app.labels" $ | nindent 4 }}
7+
{{- with .Values.additionalAnnotations }}
8+
annotations:
9+
{{- toYaml . | nindent 4 }}
10+
{{- end }}
11+
spec:
12+
type: ClusterIP
13+
ports:
14+
- port: {{ .Values.settings.telemetry.metricsPort }}
15+
targetPort: {{ .Values.settings.telemetry.metricsPort }}
16+
protocol: TCP
17+
name: metrics
18+
selector:
19+
{{- include "app.selectorLabels" $ | nindent 4 }}
20+

.helm/values.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,14 @@ settings:
215215
# Name of the cluster the operator is deployed in
216216
clusterName: "arcane-cluster"
217217

218+
# Metrics bind port
219+
metricsPort: 9090
220+
221+
# Address to bind the metrics endpoint to
222+
# Note that if this is overridden, a corresponding Service resource must be created to expose the metrics endpoint
223+
metricsBindAddressOverride: ""
224+
225+
218226
# Observability settings for Datadog
219227
datadog:
220228

appconfig.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@ periodic-metrics-reporter:
1010

1111
telemetry:
1212
log-level: "Info"
13-
cluster-name: "arcane-cluster"
13+
cluster-name: "arcane-cluster"
14+
metrics-bind-address: ":9090"

main.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"os/exec"
2828
controllerruntime "sigs.k8s.io/controller-runtime"
2929
"sigs.k8s.io/controller-runtime/pkg/manager"
30+
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
3031
"strings"
3132
)
3233

@@ -90,6 +91,9 @@ func main() {
9091
}
9192

9293
mgr, err := controllerruntime.NewManager(kubeconfig, controllerruntime.Options{
94+
Metrics: metricsserver.Options{
95+
BindAddress: appConfig.Telemetry.MetricsBindAddress,
96+
},
9397
Scheme: scheme,
9498
})
9599
if err != nil {

telemetry/logging_config.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,7 @@ type Config struct {
66

77
// ClusterName sets the name of the cluster where the application is running.
88
ClusterName string `mapstructure:"cluster-name,omitempty"`
9+
10+
// MetricsBindAddress sets the address for binding the metrics server.
11+
MetricsBindAddress string `mapstructure:"metrics-bind-address,omitempty"`
912
}

0 commit comments

Comments
 (0)