mirror of
https://github.com/matrix-org/dendrite.git
synced 2024-11-26 00:01:55 -06:00
feat(helm): add prometheus resources to monitor (#2958)
### Pull Request Checklist <!-- Please read https://matrix-org.github.io/dendrite/development/contributing before submitting your pull request --> * [x] I have added Go unit tests or [Complement integration tests](https://github.com/matrix-org/complement) for this PR _or_ I have justified why this PR doesn't need tests * [x] Pull request includes a [sign off below using a legally identifiable name](https://matrix-org.github.io/dendrite/development/contributing#sign-off) _or_ I have already signed off privately --- I do not know, how you run helm-docs .... otherwise i would like to add somewhere: ````markdown * Works well with [Prometheus Operator](https://prometheus-operator.dev/) ([Helmchart](https://artifacthub.io/packages/helm/prometheus-community/kube-prometheus-stack)) and there setup of [Grafana](https://grafana.com/grafana/), by enabling following values: ```yaml prometheus: servicemonitor: enabled: true labels: release: "kube-prometheus-stack" rules: enabled: true # will deploy alert rules additionalLabels: release: "kube-prometheus-stack" grafana: dashboards: enabled: true # will deploy default dashboards ``` PS: The labels `release=kube-prometheus-stack` is setup with the helmchart of the Prometheus Operator. For Grafana Dashboards it maybe need scan enable to scan in correct namespaces (or ALL), enabled by `sidecar.dashboards.searchNamespace` in [Helmchart of grafana](https://artifacthub.io/packages/helm/grafana/grafana) (which is part of PrometheusOperator, so `grafana.sidecar.dashboards.searchNamespace`) ```` Maybe also put somewhere the Screenshot of that Grafana Dashboard: https://grafana.com/grafana/dashboards/13916-dendrite/ --- @S7evinK do you take a look? Signed-off-by: genofire <geno+dev@fireorbit.de>
This commit is contained in:
parent
eddf31f915
commit
7fff7cd2ac
22
helm/dendrite/.helm-docs/monitoring.gotmpl
Normal file
22
helm/dendrite/.helm-docs/monitoring.gotmpl
Normal file
|
@ -0,0 +1,22 @@
|
|||
{{ define "chart.monitoringSection" }}
|
||||
## Monitoring
|
||||
|
||||
[![Grafana Dashboard](https://grafana.com/api/dashboards/13916/images/9894/image)](https://grafana.com/grafana/dashboards/13916-dendrite/)
|
||||
|
||||
* Works well with [Prometheus Operator](https://prometheus-operator.dev/) ([Helmchart](https://artifacthub.io/packages/helm/prometheus-community/kube-prometheus-stack)) and their setup of [Grafana](https://grafana.com/grafana/), by enabling the following values:
|
||||
```yaml
|
||||
prometheus:
|
||||
servicemonitor:
|
||||
enabled: true
|
||||
labels:
|
||||
release: "kube-prometheus-stack"
|
||||
rules:
|
||||
enabled: true # will deploy alert rules
|
||||
labels:
|
||||
release: "kube-prometheus-stack"
|
||||
grafana:
|
||||
dashboards:
|
||||
enabled: true # will deploy default dashboards
|
||||
```
|
||||
PS: The label `release=kube-prometheus-stack` is setup with the helmchart of the Prometheus Operator. For Grafana Dashboards it may be necessary to enable scanning in the correct namespaces (or ALL), enabled by `sidecar.dashboards.searchNamespace` in [Helmchart of grafana](https://artifacthub.io/packages/helm/grafana/grafana) (which is part of PrometheusOperator, so `grafana.sidecar.dashboards.searchNamespace`)
|
||||
{{ end }}
|
|
@ -1,6 +1,6 @@
|
|||
apiVersion: v2
|
||||
name: dendrite
|
||||
version: "0.11.1"
|
||||
version: "0.11.2"
|
||||
appVersion: "0.11.1"
|
||||
description: Dendrite Matrix Homeserver
|
||||
type: application
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# dendrite
|
||||
|
||||
![Version: 0.11.1](https://img.shields.io/badge/Version-0.11.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.11.1](https://img.shields.io/badge/AppVersion-0.11.1-informational?style=flat-square)
|
||||
![Version: 0.11.2](https://img.shields.io/badge/Version-0.11.2-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.11.1](https://img.shields.io/badge/AppVersion-0.11.1-informational?style=flat-square)
|
||||
Dendrite Matrix Homeserver
|
||||
|
||||
Status: **NOT PRODUCTION READY**
|
||||
|
@ -146,3 +146,35 @@ Create a folder `appservices` and place your configurations in there. The confi
|
|||
| ingress.tls | list | `[]` | |
|
||||
| service.type | string | `"ClusterIP"` | |
|
||||
| service.port | int | `8008` | |
|
||||
| prometheus.servicemonitor.enabled | bool | `false` | Enable ServiceMonitor for Prometheus-Operator for scrape metric-endpoint |
|
||||
| prometheus.servicemonitor.labels | object | `{}` | Extra Labels on ServiceMonitor for selector of Prometheus Instance |
|
||||
| prometheus.rules.enabled | bool | `false` | Enable PrometheusRules for Prometheus-Operator for setup alerting |
|
||||
| prometheus.rules.labels | object | `{}` | Extra Labels on PrometheusRules for selector of Prometheus Instance |
|
||||
| prometheus.rules.additionalRules | list | `[]` | additional alertrules (no default alertrules are provided) |
|
||||
| grafana.dashboards.enabled | bool | `false` | |
|
||||
| grafana.dashboards.labels | object | `{"grafana_dashboard":"1"}` | Extra Labels on ConfigMap for selector of grafana sidecar |
|
||||
| grafana.dashboards.annotations | object | `{}` | Extra Annotations on ConfigMap additional config in grafana sidecar |
|
||||
|
||||
## Monitoring
|
||||
|
||||
[![Grafana Dashboard](https://grafana.com/api/dashboards/13916/images/9894/image)](https://grafana.com/grafana/dashboards/13916-dendrite/)
|
||||
|
||||
* Works well with [Prometheus Operator](https://prometheus-operator.dev/) ([Helmchart](https://artifacthub.io/packages/helm/prometheus-community/kube-prometheus-stack)) and their setup of [Grafana](https://grafana.com/grafana/), by enabling the following values:
|
||||
```yaml
|
||||
prometheus:
|
||||
servicemonitor:
|
||||
enabled: true
|
||||
labels:
|
||||
release: "kube-prometheus-stack"
|
||||
rules:
|
||||
enabled: true # will deploy alert rules
|
||||
labels:
|
||||
release: "kube-prometheus-stack"
|
||||
grafana:
|
||||
dashboards:
|
||||
enabled: true # will deploy default dashboards
|
||||
```
|
||||
PS: The label `release=kube-prometheus-stack` is setup with the helmchart of the Prometheus Operator. For Grafana Dashboards it may be necessary to enable scanning in the correct namespaces (or ALL), enabled by `sidecar.dashboards.searchNamespace` in [Helmchart of grafana](https://artifacthub.io/packages/helm/grafana/grafana) (which is part of PrometheusOperator, so `grafana.sidecar.dashboards.searchNamespace`)
|
||||
|
||||
----------------------------------------------
|
||||
Autogenerated from chart metadata using [helm-docs vv1.11.0](https://github.com/norwoodj/helm-docs/releases/vv1.11.0)
|
|
@ -10,4 +10,5 @@
|
|||
{{ template "chart.sourcesSection" . }}
|
||||
{{ template "chart.requirementsSection" . }}
|
||||
{{ template "chart.valuesSection" . }}
|
||||
{{ template "chart.monitoringSection" . }}
|
||||
{{ template "helm-docs.versionFooter" . }}
|
|
@ -11,3 +11,8 @@ dendrite_config:
|
|||
|
||||
ingress:
|
||||
enabled: true
|
||||
|
||||
# dashboard is an ConfigMap with labels - it does not harm on testing
|
||||
grafana:
|
||||
dashboards:
|
||||
enabled: true
|
||||
|
|
1119
helm/dendrite/grafana_dashboards/dendrite-rev1.json
Normal file
1119
helm/dendrite/grafana_dashboards/dendrite-rev1.json
Normal file
File diff suppressed because it is too large
Load diff
16
helm/dendrite/templates/configmap_grafana_dashboards.yaml
Normal file
16
helm/dendrite/templates/configmap_grafana_dashboards.yaml
Normal file
|
@ -0,0 +1,16 @@
|
|||
{{- if .Values.grafana.dashboards.enabled }}
|
||||
{{- range $path, $bytes := .Files.Glob "grafana_dashboards/*" }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ include "dendrite.fullname" $ }}-grafana-dashboards-{{ base $path }}
|
||||
labels:
|
||||
{{- include "dendrite.labels" $ | nindent 4 }}
|
||||
{{- toYaml $.Values.grafana.dashboards.labels | nindent 4 }}
|
||||
annotations:
|
||||
{{- toYaml $.Values.grafana.dashboards.annotations | nindent 4 }}
|
||||
data:
|
||||
{{- ($.Files.Glob $path ).AsConfig | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
16
helm/dendrite/templates/prometheus-rules.yaml
Normal file
16
helm/dendrite/templates/prometheus-rules.yaml
Normal file
|
@ -0,0 +1,16 @@
|
|||
{{- if and ( .Values.prometheus.rules.enabled ) ( .Capabilities.APIVersions.Has "monitoring.coreos.com/v1" ) }}
|
||||
---
|
||||
apiVersion: monitoring.coreos.com/v1
|
||||
kind: PrometheusRule
|
||||
metadata:
|
||||
name: {{ include "dendrite.fullname" . }}
|
||||
labels:
|
||||
{{- include "dendrite.labels" . | nindent 4 }}
|
||||
{{- toYaml .Values.prometheus.rules.labels | nindent 4 }}
|
||||
spec:
|
||||
groups:
|
||||
{{- if .Values.prometheus.rules.additionalRules }}
|
||||
- name: {{ template "dendrite.name" . }}-Additional
|
||||
rules: {{- toYaml .Values.prometheus.rules.additionalRules | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
|
@ -1,15 +1,15 @@
|
|||
{{ if (gt (len (.Files.Glob "appservices/*")) 0) }}
|
||||
{{- if (gt (len (.Files.Glob "appservices/*")) 0) }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: {{ include "dendrite.fullname" . }}-appservices-conf
|
||||
namespace: {{ .Release.Namespace }}
|
||||
type: Opaque
|
||||
data:
|
||||
{{ (.Files.Glob "appservices/*").AsSecrets | indent 2 }}
|
||||
{{ end }}
|
||||
{{ if and .Values.signing_key.create (not .Values.signing_key.existingSecret) }}
|
||||
{{- end }}
|
||||
|
||||
{{- if and .Values.signing_key.create (not .Values.signing_key.existingSecret) }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
|
@ -17,17 +17,29 @@ metadata:
|
|||
annotations:
|
||||
helm.sh/resource-policy: keep
|
||||
name: {{ include "dendrite.fullname" . }}-signing-key
|
||||
namespace: {{ .Release.Namespace }}
|
||||
type: Opaque
|
||||
{{ end }}
|
||||
{{- end }}
|
||||
|
||||
{{- with .Values.dendrite_config.global.metrics }}
|
||||
{{- if .enabled }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: {{ include "dendrite.fullname" $ }}-metrics-basic-auth
|
||||
type: Opaque
|
||||
stringData:
|
||||
user: {{ .basic_auth.user | quote }}
|
||||
password: {{ .basic_auth.password | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
type: Opaque
|
||||
metadata:
|
||||
name: {{ include "dendrite.fullname" . }}-conf
|
||||
namespace: {{ .Release.Namespace }}
|
||||
type: Opaque
|
||||
stringData:
|
||||
dendrite.yaml: |
|
||||
{{ toYaml ( mustMergeOverwrite .Values.dendrite_config ( fromYaml (include "override.config" .) ) .Values.dendrite_config ) | nindent 4 }}
|
26
helm/dendrite/templates/servicemonitor.yaml
Normal file
26
helm/dendrite/templates/servicemonitor.yaml
Normal file
|
@ -0,0 +1,26 @@
|
|||
{{- if and
|
||||
(and .Values.prometheus.servicemonitor.enabled .Values.dendrite_config.global.metrics.enabled )
|
||||
( .Capabilities.APIVersions.Has "monitoring.coreos.com/v1" )
|
||||
}}
|
||||
---
|
||||
apiVersion: monitoring.coreos.com/v1
|
||||
kind: ServiceMonitor
|
||||
metadata:
|
||||
name: {{ include "dendrite.fullname" . }}
|
||||
labels:
|
||||
{{- include "dendrite.labels" . | nindent 4 }}
|
||||
{{- toYaml .Values.prometheus.servicemonitor.labels | nindent 4 }}
|
||||
spec:
|
||||
endpoints:
|
||||
- port: http
|
||||
basicAuth:
|
||||
username:
|
||||
name: {{ include "dendrite.fullname" . }}-metrics-basic-auth
|
||||
key: "user"
|
||||
password:
|
||||
name: {{ include "dendrite.fullname" . }}-metrics-basic-auth
|
||||
key: "password"
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "dendrite.selectorLabels" . | nindent 6 }}
|
||||
{{- end }}
|
|
@ -348,3 +348,26 @@ ingress:
|
|||
service:
|
||||
type: ClusterIP
|
||||
port: 8008
|
||||
|
||||
prometheus:
|
||||
servicemonitor:
|
||||
# -- Enable ServiceMonitor for Prometheus-Operator for scrape metric-endpoint
|
||||
enabled: false
|
||||
# -- Extra Labels on ServiceMonitor for selector of Prometheus Instance
|
||||
labels: {}
|
||||
rules:
|
||||
# -- Enable PrometheusRules for Prometheus-Operator for setup alerting
|
||||
enabled: false
|
||||
# -- Extra Labels on PrometheusRules for selector of Prometheus Instance
|
||||
labels: {}
|
||||
# -- additional alertrules (no default alertrules are provided)
|
||||
additionalRules: []
|
||||
|
||||
grafana:
|
||||
dashboards:
|
||||
enabled: false
|
||||
# -- Extra Labels on ConfigMap for selector of grafana sidecar
|
||||
labels:
|
||||
grafana_dashboard: "1"
|
||||
# -- Extra Annotations on ConfigMap additional config in grafana sidecar
|
||||
annotations: {}
|
||||
|
|
Loading…
Reference in a new issue