Skip to content

Commit 15fc491

Browse files
Merge pull request #338 from kaleido-io/helm-prom-metrics
[helm] Support for Prometheus Metrics
2 parents 611f2a6 + 56b6b54 commit 15fc491

File tree

8 files changed

+81
-1
lines changed

8 files changed

+81
-1
lines changed

.github/workflows/helm.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ jobs:
3636
helm install --skip-crds -n cert-manager cert-manager jetstack/cert-manager --wait
3737
kubectl apply -n cert-manager -f deploy/manifests/tls-issuers.yaml
3838
39+
- name: install prom-operator
40+
run: |
41+
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts || true
42+
helm install --set kubeStateMetrics.enabled=false --set nodeExporter.enabled=false --set grafana.enabled=false kube-prometheus prometheus-community/kube-prometheus-stack
43+
3944
- name: install postgres
4045
run: |
4146
helm repo add bitnami https://charts.bitnami.com/bitnami || true

deploy/charts/firefly/ci/it-values.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
config:
22
debugEnabled: true
33
adminEnabled: true
4+
metricsEnabled: true
45
preInit: true
56

67
organizationName: "firefly-os"
@@ -15,6 +16,11 @@ config:
1516
ipfsApiUrl: "http://ipfs.firefly-os:5001"
1617
ipfsGatewayUrl: "http://ipfs.firefly-os:8080"
1718

19+
core:
20+
metrics:
21+
serviceMonitor:
22+
enabled: true
23+
1824
dataexchange:
1925
certificate:
2026
enabled: true

deploy/charts/firefly/templates/_helpers.tpl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,13 @@ admin:
9797
address: 0.0.0.0
9898
enabled: {{ .Values.config.adminEnabled }}
9999
preinit: {{ and .Values.config.adminEnabled .Values.config.preInit }}
100+
metrics:
101+
enabled: {{ .Values.config.metricsEnabled }}
102+
{{- if .Values.config.metricsEnabled }}
103+
path: {{ .Values.config.metricsPath }}
104+
address: 0.0.0.0
105+
port: {{ .Values.core.service.metricsPort }}
106+
{{- end }}
100107
ui:
101108
path: ./frontend
102109
org:

deploy/charts/firefly/templates/core/service.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,11 @@ spec:
2323
protocol: TCP
2424
name: admin
2525
{{- end }}
26+
{{- if .Values.config.metricsEnabled }}
27+
- port: {{ .Values.core.service.metricsPort }}
28+
targetPort: metrics
29+
protocol: TCP
30+
name: metrics
31+
{{- end }}
2632
selector:
2733
{{- include "firefly.coreSelectorLabels" . | nindent 4 }}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
{{- if and .Values.core.metrics.serviceMonitor.enabled .Values.config.metricsEnabled }}
2+
{{- if not (.Capabilities.APIVersions.Has "monitoring.coreos.com/v1") }}
3+
# WARNING: prometheus-operator is not installed but serivcemonitor has been enabled, this will fail. Please install
4+
# prometheus-operator to resolve this.
5+
{{- end }}
6+
apiVersion: monitoring.coreos.com/v1
7+
kind: ServiceMonitor
8+
metadata:
9+
name: {{ include "firefly.fullname" . }}
10+
labels:
11+
{{- include "firefly.coreLabels" . | nindent 4 }}
12+
spec:
13+
endpoints:
14+
- port: metrics
15+
path: {{ .Values.config.metricsPath }}
16+
interval: {{ .Values.core.metrics.serviceMonitor.scrapeInterval }}
17+
{{- if .Values.core.metrics.serviceMonitor.honorLabels }}
18+
honorLabels: true
19+
{{- end }}
20+
{{- if .Values.core.metrics.serviceMonitor.metricRelabelings }}
21+
metricRelabelings: {{ toYaml .Values.core.metrics.serviceMonitor.metricRelabelings | nindent 8 }}
22+
{{- end }}
23+
{{- if .Values.core.metrics.serviceMonitor.jobLabel }}
24+
jobLabel: {{ .Values.core.metrics.serviceMonitor.jobLabel | quote }}
25+
{{- end }}
26+
{{- if .Values.core.metrics.serviceMonitor.namespaceSelector }}
27+
namespaceSelector: {{ toYaml .Values.core.metrics.serviceMonitor.namespaceSelector | nindent 4 }}
28+
{{- end }}
29+
{{- if .Values.core.metrics.serviceMonitor.targetLabels }}
30+
targetLabels:
31+
{{- range .Values.core.metrics.serviceMonitor.targetLabels }}
32+
- {{ . }}
33+
{{- end }}
34+
{{- end }}
35+
selector:
36+
matchLabels:
37+
{{- include "firefly.coreSelectorLabels" . | nindent 6 }}
38+
{{- end }}
39+

deploy/charts/firefly/templates/core/statefulset.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@ spec:
5656
containerPort: {{ .Values.core.service.adminPort }}
5757
protocol: TCP
5858
{{- end }}
59+
{{- if .Values.config.metricsEnabled }}
60+
- name: metrics
61+
containerPort: {{ .Values.core.service.metricsPort }}
62+
protocol: TCP
63+
{{- end }}
5964
livenessProbe:
6065
tcpSocket:
6166
port: {{ if and .Values.config.adminEnabled .Values.config.preInit }}admin{{ else }}http{{ end }}

deploy/charts/firefly/templates/dataexchange/statefulset.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ spec:
3636
- name: dx
3737
securityContext:
3838
{{- toYaml .Values.dataexchange.securityContext | nindent 12 }}
39-
image: "{{ .Values.dataexchange.image.repository }}:{{ .Values.dataexchange.image.tag | default .Chart.AppVersion }}"
39+
image: "{{ .Values.dataexchange.image.repository }}:{{ .Values.dataexchange.image.tag }}"
4040
imagePullPolicy: {{ .Values.dataexchange.image.pullPolicy }}
4141
{{- if .Values.dataexchange.extraEnv }}
4242
env:

deploy/charts/firefly/values.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@ config:
66
# Enables the Admin API port for dynamic configuration
77
adminEnabled: true
88

9+
# Enables the metrics server / port for Prometheus scraping
10+
metricsEnabled: true
11+
12+
# Configures the path on which Prometheus metrics are served, useful if you need to change it to match existing Prometheus scrape configs
13+
metricsPath: /metrics
14+
915
# Puts a fresh FireFly node into the preinit state, allowing an operator to then setup smart contracts, apply database migrations, etc. before re-configuring the node to proceed.
1016
# It is _not_ recommended to configure FireFly nodes in a preinit state for non-development scenarios.
1117
preInit: false
@@ -127,6 +133,12 @@ core:
127133
httpPort: 5000
128134
adminPort: 5001
129135
debugPort: 6060
136+
metricsPort: 5100
137+
138+
metrics:
139+
serviceMonitor:
140+
enabled: false
141+
scrapeInterval: 10s
130142

131143
# NOTE: The Ingress will only expose the HTTP API and never the Admin or Debug APIs
132144
ingress:

0 commit comments

Comments
 (0)