Skip to content

Commit b1ba5b3

Browse files
authored
fix: generic metric alerts (#1850)
1 parent e20c11e commit b1ba5b3

5 files changed

+692
-0
lines changed
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
{{- if has "feature-complete" .Values.profiles }}
2+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsCounters.enabled }}
3+
apiVersion: apps/v1
4+
kind: Deployment
5+
metadata:
6+
name: {{ template "sentry.fullname" . }}-snuba-subscription-consumer-generic-metrics-counters
7+
labels:
8+
app: {{ template "sentry.fullname" . }}
9+
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
10+
release: "{{ .Release.Name }}"
11+
heritage: "{{ .Release.Service }}"
12+
app.kubernetes.io/managed-by: "Helm"
13+
{{- if .Values.asHook }}
14+
{{- /* Add the Helm annotations so that deployment after asHook from true to false works */}}
15+
annotations:
16+
meta.helm.sh/release-name: "{{ .Release.Name }}"
17+
meta.helm.sh/release-namespace: "{{ .Release.Namespace }}"
18+
"helm.sh/hook": "post-install,post-upgrade"
19+
"helm.sh/hook-weight": "18"
20+
{{- end }}
21+
spec:
22+
revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
23+
selector:
24+
matchLabels:
25+
app: {{ template "sentry.fullname" . }}
26+
release: "{{ .Release.Name }}"
27+
role: snuba-subscription-consumer-generic-metrics-counters
28+
replicas: {{ .Values.snuba.subscriptionConsumerGenericMetricsCounters.replicas }}
29+
template:
30+
metadata:
31+
annotations:
32+
checksum/snubaSettingsPy: {{ .Values.config.snubaSettingsPy | sha256sum }}
33+
checksum/config.yaml: {{ include "sentry.snuba.config" . | sha256sum }}
34+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsCounters.annotations }}
35+
{{ toYaml .Values.snuba.subscriptionConsumerGenericMetricsCounters.annotations | indent 8 }}
36+
{{- end }}
37+
labels:
38+
app: {{ template "sentry.fullname" . }}
39+
release: "{{ .Release.Name }}"
40+
role: snuba-subscription-consumer-generic-metrics-counters
41+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsCounters.podLabels }}
42+
{{ toYaml .Values.snuba.subscriptionConsumerGenericMetricsCounters.podLabels | indent 8 }}
43+
{{- end }}
44+
spec:
45+
affinity:
46+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsCounters.affinity }}
47+
{{ toYaml .Values.snuba.subscriptionConsumerGenericMetricsCounters.affinity | indent 8 }}
48+
{{- end }}
49+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsCounters.nodeSelector }}
50+
nodeSelector:
51+
{{ toYaml .Values.snuba.subscriptionConsumerGenericMetricsCounters.nodeSelector | indent 8 }}
52+
{{- else if .Values.global.nodeSelector }}
53+
nodeSelector:
54+
{{ toYaml .Values.global.nodeSelector | indent 8 }}
55+
{{- end }}
56+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsCounters.tolerations }}
57+
tolerations:
58+
{{ toYaml .Values.snuba.subscriptionConsumerGenericMetricsCounters.tolerations | indent 8 }}
59+
{{- else if .Values.global.tolerations }}
60+
tolerations:
61+
{{ toYaml .Values.global.tolerations | indent 8 }}
62+
{{- end }}
63+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsCounters.topologySpreadConstraints }}
64+
topologySpreadConstraints:
65+
{{ toYaml .Values.snuba.subscriptionConsumerGenericMetricsCounters.topologySpreadConstraints | indent 8 }}
66+
{{- end }}
67+
{{- if .Values.images.snuba.imagePullSecrets }}
68+
imagePullSecrets:
69+
{{ toYaml .Values.images.snuba.imagePullSecrets | indent 8 }}
70+
{{- end }}
71+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsCounters.securityContext }}
72+
securityContext:
73+
{{ toYaml .Values.snuba.subscriptionConsumerGenericMetricsCounters.securityContext | indent 8 }}
74+
{{- end }}
75+
containers:
76+
- name: {{ .Chart.Name }}-snuba
77+
image: "{{ template "snuba.image" . }}"
78+
imagePullPolicy: {{ default "IfNotPresent" .Values.images.snuba.pullPolicy }}
79+
command:
80+
- "snuba"
81+
- "subscriptions-scheduler-executor"
82+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsCounters.autoOffsetReset }}
83+
- "--auto-offset-reset"
84+
- "{{ .Values.snuba.subscriptionConsumerGenericMetricsCounters.autoOffsetReset }}"
85+
{{- end }}
86+
- "--dataset=generic_metrics"
87+
- "--entity=generic_metrics_counters"
88+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsCounters.noStrictOffsetReset }}
89+
- "--no-strict-offset-reset"
90+
{{- end }}
91+
- "--consumer-group=snuba-generic-metrics-counters-subscriptions-schedulers"
92+
- "--followed-consumer-group=snuba-gen-metrics-counters-consumers"
93+
- "--schedule-ttl=60"
94+
- "--stale-threshold-seconds=900"
95+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsCounters.livenessProbe.enabled }}
96+
- "--health-check-file"
97+
- "/tmp/health.txt"
98+
{{- end }}
99+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsCounters.livenessProbe.enabled }}
100+
livenessProbe:
101+
exec:
102+
command:
103+
- rm
104+
- /tmp/health.txt
105+
initialDelaySeconds: {{ .Values.snuba.subscriptionConsumerGenericMetricsCounters.livenessProbe.initialDelaySeconds }}
106+
periodSeconds: {{ .Values.snuba.subscriptionConsumerGenericMetricsCounters.livenessProbe.periodSeconds }}
107+
{{- end }}
108+
ports:
109+
- containerPort: {{ template "snuba.port" }}
110+
env:
111+
{{ include "sentry.snuba.env" . | indent 8 }}
112+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsCounters.env }}
113+
{{ toYaml .Values.snuba.subscriptionConsumerGenericMetricsCounters.env | indent 8 }}
114+
{{- end }}
115+
envFrom:
116+
- secretRef:
117+
name: {{ template "sentry.fullname" . }}-snuba-env
118+
volumeMounts:
119+
- mountPath: /etc/snuba
120+
name: config
121+
readOnly: true
122+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsCounters.volumeMounts }}
123+
{{ toYaml .Values.snuba.subscriptionConsumerGenericMetricsCounters.volumeMounts | indent 8 }}
124+
{{- end }}
125+
resources:
126+
{{ toYaml .Values.snuba.subscriptionConsumerGenericMetricsCounters.resources | indent 12 }}
127+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsCounters.containerSecurityContext }}
128+
securityContext:
129+
{{ toYaml .Values.snuba.subscriptionConsumerGenericMetricsCounters.containerSecurityContext | indent 12 }}
130+
{{- end }}
131+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsCounters.sidecars }}
132+
{{ toYaml .Values.snuba.subscriptionConsumerGenericMetricsCounters.sidecars | indent 6 }}
133+
{{- end }}
134+
{{- if .Values.global.sidecars }}
135+
{{ toYaml .Values.global.sidecars | indent 6 }}
136+
{{- end }}
137+
{{- if .Values.serviceAccount.enabled }}
138+
serviceAccountName: {{ .Values.serviceAccount.name }}-snuba
139+
{{- end }}
140+
volumes:
141+
- name: config
142+
configMap:
143+
name: {{ template "sentry.fullname" . }}-snuba
144+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsCounters.volumes }}
145+
{{ toYaml .Values.snuba.subscriptionConsumerGenericMetricsCounters.volumes | indent 6 }}
146+
{{- end }}
147+
{{- if .Values.global.volumes }}
148+
{{ toYaml .Values.global.volumes | indent 6 }}
149+
{{- end }}
150+
{{- end }}
151+
{{- end }}
152+
153+
Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
{{- if has "feature-complete" .Values.profiles }}
2+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsDistributions.enabled }}
3+
apiVersion: apps/v1
4+
kind: Deployment
5+
metadata:
6+
name: {{ template "sentry.fullname" . }}-snuba-subscription-consumer-generic-metrics-distributions
7+
labels:
8+
app: {{ template "sentry.fullname" . }}
9+
chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
10+
release: "{{ .Release.Name }}"
11+
heritage: "{{ .Release.Service }}"
12+
app.kubernetes.io/managed-by: "Helm"
13+
{{- if .Values.asHook }}
14+
{{- /* Add the Helm annotations so that deployment after asHook from true to false works */}}
15+
annotations:
16+
meta.helm.sh/release-name: "{{ .Release.Name }}"
17+
meta.helm.sh/release-namespace: "{{ .Release.Namespace }}"
18+
"helm.sh/hook": "post-install,post-upgrade"
19+
"helm.sh/hook-weight": "18"
20+
{{- end }}
21+
spec:
22+
revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
23+
selector:
24+
matchLabels:
25+
app: {{ template "sentry.fullname" . }}
26+
release: "{{ .Release.Name }}"
27+
role: snuba-subscription-consumer-generic-metrics-distributions
28+
replicas: {{ .Values.snuba.subscriptionConsumerGenericMetricsDistributions.replicas }}
29+
template:
30+
metadata:
31+
annotations:
32+
checksum/snubaSettingsPy: {{ .Values.config.snubaSettingsPy | sha256sum }}
33+
checksum/config.yaml: {{ include "sentry.snuba.config" . | sha256sum }}
34+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsDistributions.annotations }}
35+
{{ toYaml .Values.snuba.subscriptionConsumerGenericMetricsDistributions.annotations | indent 8 }}
36+
{{- end }}
37+
labels:
38+
app: {{ template "sentry.fullname" . }}
39+
release: "{{ .Release.Name }}"
40+
role: snuba-subscription-consumer-generic-metrics-distributions
41+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsDistributions.podLabels }}
42+
{{ toYaml .Values.snuba.subscriptionConsumerGenericMetricsDistributions.podLabels | indent 8 }}
43+
{{- end }}
44+
spec:
45+
affinity:
46+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsDistributions.affinity }}
47+
{{ toYaml .Values.snuba.subscriptionConsumerGenericMetricsDistributions.affinity | indent 8 }}
48+
{{- end }}
49+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsDistributions.nodeSelector }}
50+
nodeSelector:
51+
{{ toYaml .Values.snuba.subscriptionConsumerGenericMetricsDistributions.nodeSelector | indent 8 }}
52+
{{- else if .Values.global.nodeSelector }}
53+
nodeSelector:
54+
{{ toYaml .Values.global.nodeSelector | indent 8 }}
55+
{{- end }}
56+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsDistributions.tolerations }}
57+
tolerations:
58+
{{ toYaml .Values.snuba.subscriptionConsumerGenericMetricsDistributions.tolerations | indent 8 }}
59+
{{- else if .Values.global.tolerations }}
60+
tolerations:
61+
{{ toYaml .Values.global.tolerations | indent 8 }}
62+
{{- end }}
63+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsDistributions.topologySpreadConstraints }}
64+
topologySpreadConstraints:
65+
{{ toYaml .Values.snuba.subscriptionConsumerGenericMetricsDistributions.topologySpreadConstraints | indent 8 }}
66+
{{- end }}
67+
{{- if .Values.images.snuba.imagePullSecrets }}
68+
imagePullSecrets:
69+
{{ toYaml .Values.images.snuba.imagePullSecrets | indent 8 }}
70+
{{- end }}
71+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsDistributions.securityContext }}
72+
securityContext:
73+
{{ toYaml .Values.snuba.subscriptionConsumerGenericMetricsDistributions.securityContext | indent 8 }}
74+
{{- end }}
75+
containers:
76+
- name: {{ .Chart.Name }}-snuba
77+
image: "{{ template "snuba.image" . }}"
78+
imagePullPolicy: {{ default "IfNotPresent" .Values.images.snuba.pullPolicy }}
79+
command:
80+
- "snuba"
81+
- "subscriptions-scheduler-executor"
82+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsDistributions.autoOffsetReset }}
83+
- "--auto-offset-reset"
84+
- "{{ .Values.snuba.subscriptionConsumerGenericMetricsDistributions.autoOffsetReset }}"
85+
{{- end }}
86+
- "--dataset=generic_metrics"
87+
- "--entity=generic_metrics_distributions"
88+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsDistributions.noStrictOffsetReset }}
89+
- "--no-strict-offset-reset"
90+
{{- end }}
91+
- "--consumer-group=snuba-generic-metrics-distributions-subscriptions-schedulers"
92+
- "--followed-consumer-group=snuba-gen-metrics-distributions-consumers"
93+
- "--schedule-ttl=60"
94+
- "--stale-threshold-seconds=900"
95+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsDistributions.livenessProbe.enabled }}
96+
- "--health-check-file"
97+
- "/tmp/health.txt"
98+
{{- end }}
99+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsDistributions.livenessProbe.enabled }}
100+
livenessProbe:
101+
exec:
102+
command:
103+
- rm
104+
- /tmp/health.txt
105+
initialDelaySeconds: {{ .Values.snuba.subscriptionConsumerGenericMetricsDistributions.livenessProbe.initialDelaySeconds }}
106+
periodSeconds: {{ .Values.snuba.subscriptionConsumerGenericMetricsDistributions.livenessProbe.periodSeconds }}
107+
{{- end }}
108+
ports:
109+
- containerPort: {{ template "snuba.port" }}
110+
env:
111+
{{ include "sentry.snuba.env" . | indent 8 }}
112+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsDistributions.env }}
113+
{{ toYaml .Values.snuba.subscriptionConsumerGenericMetricsDistributions.env | indent 8 }}
114+
{{- end }}
115+
envFrom:
116+
- secretRef:
117+
name: {{ template "sentry.fullname" . }}-snuba-env
118+
volumeMounts:
119+
- mountPath: /etc/snuba
120+
name: config
121+
readOnly: true
122+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsDistributions.volumeMounts }}
123+
{{ toYaml .Values.snuba.subscriptionConsumerGenericMetricsDistributions.volumeMounts | indent 8 }}
124+
{{- end }}
125+
resources:
126+
{{ toYaml .Values.snuba.subscriptionConsumerGenericMetricsDistributions.resources | indent 12 }}
127+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsDistributions.containerSecurityContext }}
128+
securityContext:
129+
{{ toYaml .Values.snuba.subscriptionConsumerGenericMetricsDistributions.containerSecurityContext | indent 12 }}
130+
{{- end }}
131+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsDistributions.sidecars }}
132+
{{ toYaml .Values.snuba.subscriptionConsumerGenericMetricsDistributions.sidecars | indent 6 }}
133+
{{- end }}
134+
{{- if .Values.global.sidecars }}
135+
{{ toYaml .Values.global.sidecars | indent 6 }}
136+
{{- end }}
137+
{{- if .Values.serviceAccount.enabled }}
138+
serviceAccountName: {{ .Values.serviceAccount.name }}-snuba
139+
{{- end }}
140+
volumes:
141+
- name: config
142+
configMap:
143+
name: {{ template "sentry.fullname" . }}-snuba
144+
{{- if .Values.snuba.subscriptionConsumerGenericMetricsDistributions.volumes }}
145+
{{ toYaml .Values.snuba.subscriptionConsumerGenericMetricsDistributions.volumes | indent 6 }}
146+
{{- end }}
147+
{{- if .Values.global.volumes }}
148+
{{ toYaml .Values.global.volumes | indent 6 }}
149+
{{- end }}
150+
{{- end }}
151+
{{- end }}

0 commit comments

Comments
 (0)