aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Jahns <github@patrickjahns.de>2022-11-17 23:33:00 +0100
committerMaximilien Richer <me@mricher.fr>2023-01-27 00:08:33 +0100
commitb999bb36af59de899c2426c0ad35e4e04abc317d (patch)
treed08ab873424b61bf066ce8cf878104c88093d6fd
parentd20e8c92564843e8c9abdf573db5ce7f6c58f482 (diff)
downloadgarage-b999bb36af59de899c2426c0ad35e4e04abc317d.tar.gz
garage-b999bb36af59de899c2426c0ad35e4e04abc317d.zip
feat(helm): ability to monitor garage via prometheus
-rw-r--r--script/helm/garage/templates/service.yaml21
-rw-r--r--script/helm/garage/templates/servicemonitor.yaml44
-rw-r--r--script/helm/garage/templates/workload.yaml2
-rw-r--r--script/helm/garage/values.yaml27
4 files changed, 94 insertions, 0 deletions
diff --git a/script/helm/garage/templates/service.yaml b/script/helm/garage/templates/service.yaml
index 2bfff99d..37218872 100644
--- a/script/helm/garage/templates/service.yaml
+++ b/script/helm/garage/templates/service.yaml
@@ -17,3 +17,24 @@ spec:
name: s3-web
selector:
{{- include "garage.selectorLabels" . | nindent 4 }}
+{{- if .Values.monitoring.metrics.enabled }}
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: {{ include "garage.fullname" . }}-metrics
+ labels:
+ {{- include "garage.labels" . | nindent 4 }}
+ annotations:
+ prometheus.io/scrape: "true"
+spec:
+ type: ClusterIP
+ clusterIP: None
+ ports:
+ - port: 3903
+ targetPort: 3903
+ protocol: TCP
+ name: metrics
+ selector:
+ {{- include "garage.selectorLabels" . | nindent 4 }}
+{{- end }} \ No newline at end of file
diff --git a/script/helm/garage/templates/servicemonitor.yaml b/script/helm/garage/templates/servicemonitor.yaml
new file mode 100644
index 00000000..6838d09f
--- /dev/null
+++ b/script/helm/garage/templates/servicemonitor.yaml
@@ -0,0 +1,44 @@
+{{- if .Values.monitoring.metrics.serviceMonitor.enabled }}
+---
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+ name: {{ include "garage.fullname" . }}
+ {{- if .Values.monitoring.metrics.serviceMonitor.namespace }}
+ namespace: {{ tpl .Values.monitoring.metrics.serviceMonitor.namespace . }}
+ {{- else }}
+ namespace: {{ .Release.Namespace }}
+ {{- end }}
+ labels:
+ {{- include "garage.labels" . | nindent 4 }}
+ {{- with .Values.monitoring.metrics.serviceMonitor.labels }}
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+spec:
+ endpoints:
+ - port: metrics
+ {{- with .Values.monitoring.metrics.serviceMonitor.interval }}
+ interval: {{ . }}
+ {{- end }}
+ {{- with .Values.monitoring.metrics.serviceMonitor.scrapeTimeout }}
+ scrapeTimeout: {{ . }}
+ {{- end }}
+ honorLabels: true
+ path: {{ .Values.monitoring.metrics.serviceMonitor.path }}
+ scheme: {{ .Values.monitoring.metrics.serviceMonitor.scheme }}
+ {{- with .Values.monitoring.metrics.serviceMonitor.tlsConfig }}
+ tlsConfig:
+ {{- toYaml . | nindent 6 }}
+ {{- end }}
+ {{- with .Values.monitoring.metrics.serviceMonitor.relabelings }}
+ relabelings:
+ {{- toYaml . | nindent 6 }}
+ {{- end }}
+ jobLabel: "{{ .Release.Name }}"
+ selector:
+ matchLabels:
+ {{- include "garage.selectorLabels" . | nindent 6 }}
+ namespaceSelector:
+ matchNames:
+ - {{ .Release.Namespace }}
+{{- end }} \ No newline at end of file
diff --git a/script/helm/garage/templates/workload.yaml b/script/helm/garage/templates/workload.yaml
index b0303869..340c0054 100644
--- a/script/helm/garage/templates/workload.yaml
+++ b/script/helm/garage/templates/workload.yaml
@@ -61,6 +61,8 @@ spec:
name: s3-api
- containerPort: 3902
name: web-api
+ - containerPort: 3903
+ name: admin
volumeMounts:
- name: meta
mountPath: /mnt/meta
diff --git a/script/helm/garage/values.yaml b/script/helm/garage/values.yaml
index 5900033b..69999e67 100644
--- a/script/helm/garage/values.yaml
+++ b/script/helm/garage/values.yaml
@@ -49,6 +49,12 @@ garage:
bind_addr = "[::]:3902"
root_domain = "{{ .Values.garage.s3.web.rootDomain }}"
index = "{{ .Values.garage.s3.web.index }}"
+
+ [admin]
+ api_bind_addr = "[::]:3903"
+ {{- if .Values.monitoring.tracing.sink }}
+ trace_sink = "{{ .Values.monitoring.tracing.sink }}"
+ {{- end }}
# Data persistence
persistence:
@@ -123,6 +129,7 @@ service:
web:
port: 3902
# NOTE: the admin API is excluded for now as it is not consistent across nodes
+
ingress:
s3:
api:
@@ -186,3 +193,23 @@ nodeSelector: {}
tolerations: []
affinity: {}
+
+monitoring:
+ metrics:
+ # If true, a service for monitoring is created with a prometheus.io/scrape annotation
+ enabled: false
+ serviceMonitor:
+ # If true, a ServiceMonitor CRD is created for a prometheus operator
+ # https://github.com/coreos/prometheus-operator
+ #
+ enabled: false
+ path: /metrics
+ # namespace: monitoring (defaults to use the namespace this chart is deployed to)
+ labels: {}
+ interval: 15s
+ scheme: http
+ tlsConfig: {}
+ scrapeTimeout: 10s
+ relabelings: []
+ tracing:
+ sink: "" \ No newline at end of file