mirror of
https://github.com/1f349/dendrite.git
synced 2024-11-09 22:42:58 +00: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
|
apiVersion: v2
|
||||||
name: dendrite
|
name: dendrite
|
||||||
version: "0.11.1"
|
version: "0.11.2"
|
||||||
appVersion: "0.11.1"
|
appVersion: "0.11.1"
|
||||||
description: Dendrite Matrix Homeserver
|
description: Dendrite Matrix Homeserver
|
||||||
type: application
|
type: application
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# dendrite
|
# 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
|
Dendrite Matrix Homeserver
|
||||||
|
|
||||||
Status: **NOT PRODUCTION READY**
|
Status: **NOT PRODUCTION READY**
|
||||||
@ -146,3 +146,35 @@ Create a folder `appservices` and place your configurations in there. The confi
|
|||||||
| ingress.tls | list | `[]` | |
|
| ingress.tls | list | `[]` | |
|
||||||
| service.type | string | `"ClusterIP"` | |
|
| service.type | string | `"ClusterIP"` | |
|
||||||
| service.port | int | `8008` | |
|
| 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.sourcesSection" . }}
|
||||||
{{ template "chart.requirementsSection" . }}
|
{{ template "chart.requirementsSection" . }}
|
||||||
{{ template "chart.valuesSection" . }}
|
{{ template "chart.valuesSection" . }}
|
||||||
|
{{ template "chart.monitoringSection" . }}
|
||||||
{{ template "helm-docs.versionFooter" . }}
|
{{ template "helm-docs.versionFooter" . }}
|
@ -11,3 +11,8 @@ dendrite_config:
|
|||||||
|
|
||||||
ingress:
|
ingress:
|
||||||
enabled: true
|
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
|
apiVersion: v1
|
||||||
kind: Secret
|
kind: Secret
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "dendrite.fullname" . }}-appservices-conf
|
name: {{ include "dendrite.fullname" . }}-appservices-conf
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
type: Opaque
|
type: Opaque
|
||||||
data:
|
data:
|
||||||
{{ (.Files.Glob "appservices/*").AsSecrets | indent 2 }}
|
{{ (.Files.Glob "appservices/*").AsSecrets | indent 2 }}
|
||||||
{{ end }}
|
{{- end }}
|
||||||
{{ if and .Values.signing_key.create (not .Values.signing_key.existingSecret) }}
|
|
||||||
|
{{- if and .Values.signing_key.create (not .Values.signing_key.existingSecret) }}
|
||||||
---
|
---
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: Secret
|
kind: Secret
|
||||||
@ -17,17 +17,29 @@ metadata:
|
|||||||
annotations:
|
annotations:
|
||||||
helm.sh/resource-policy: keep
|
helm.sh/resource-policy: keep
|
||||||
name: {{ include "dendrite.fullname" . }}-signing-key
|
name: {{ include "dendrite.fullname" . }}-signing-key
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
type: Opaque
|
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
|
apiVersion: v1
|
||||||
kind: Secret
|
kind: Secret
|
||||||
type: Opaque
|
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "dendrite.fullname" . }}-conf
|
name: {{ include "dendrite.fullname" . }}-conf
|
||||||
namespace: {{ .Release.Namespace }}
|
type: Opaque
|
||||||
stringData:
|
stringData:
|
||||||
dendrite.yaml: |
|
dendrite.yaml: |
|
||||||
{{ toYaml ( mustMergeOverwrite .Values.dendrite_config ( fromYaml (include "override.config" .) ) .Values.dendrite_config ) | nindent 4 }}
|
{{ 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:
|
service:
|
||||||
type: ClusterIP
|
type: ClusterIP
|
||||||
port: 8008
|
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 New Issue
Block a user