From eb4035921caa8f2d4d114433736000b717742c40 Mon Sep 17 00:00:00 2001 From: Stefan Reimer Date: Fri, 24 Sep 2021 17:51:20 +0200 Subject: [PATCH] feat: Add Prometheus Grafana support to uptime-kuma --- charts/uptime-kuma/Chart.yaml | 2 +- charts/uptime-kuma/README.md | 5 +- charts/uptime-kuma/dashboards.yaml | 8 +++ .../templates/grafana-dashboards.yaml | 15 +++++ .../uptime-kuma/templates/servicemonitor.yaml | 63 +++++++++++++++++++ charts/uptime-kuma/update.sh | 3 + charts/uptime-kuma/values.yaml | 6 ++ 7 files changed, 99 insertions(+), 3 deletions(-) create mode 100644 charts/uptime-kuma/dashboards.yaml create mode 100644 charts/uptime-kuma/templates/grafana-dashboards.yaml create mode 100644 charts/uptime-kuma/templates/servicemonitor.yaml create mode 100755 charts/uptime-kuma/update.sh diff --git a/charts/uptime-kuma/Chart.yaml b/charts/uptime-kuma/Chart.yaml index f31bed4..4642112 100644 --- a/charts/uptime-kuma/Chart.yaml +++ b/charts/uptime-kuma/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: uptime-kuma description: Chart for deploying uptime-kuma type: application -version: 0.1.0 +version: 0.1.3 appVersion: 1.6.3 home: https://kubezero.com icon: https://cdn.zero-downtime.net/assets/kubezero/logo-small-64.png diff --git a/charts/uptime-kuma/README.md b/charts/uptime-kuma/README.md index cf2b7b7..5c37c6a 100644 --- a/charts/uptime-kuma/README.md +++ b/charts/uptime-kuma/README.md @@ -1,6 +1,6 @@ # uptime-kuma -![Version: 0.1.0](https://img.shields.io/badge/Version-0.1.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.6.3](https://img.shields.io/badge/AppVersion-1.6.3-informational?style=flat-square) +![Version: 0.1.3](https://img.shields.io/badge/Version-0.1.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.6.3](https://img.shields.io/badge/AppVersion-1.6.3-informational?style=flat-square) Chart for deploying uptime-kuma @@ -26,11 +26,12 @@ Kubernetes: `>= 1.18.0` |-----|------|---------|-------------| | fullnameOverride | string | `""` | override the full name of the uptime-kuma chart | | image | string | `"louislam/uptime-kuma"` | | -| istio.enabled | bool | `true` | | +| istio.enabled | bool | `false` | | | istio.gateway | string | `"istio-ingress/private-ingressgateway"` | | | istio.url | string | `"uptime.example.com"` | | | nameOverride | string | `""` | override the name of the uptime-kuma chart | | service.port | int | `3001` | The port to be used by the uptime-kuma service | +| serviceMonitor.enabled | bool | `false` | | | version | string | `"1.6.3-alpine"` | | ## Resources diff --git a/charts/uptime-kuma/dashboards.yaml b/charts/uptime-kuma/dashboards.yaml new file mode 100644 index 0000000..52e90b0 --- /dev/null +++ b/charts/uptime-kuma/dashboards.yaml @@ -0,0 +1,8 @@ +configmap: grafana-dashboards +gzip: true +folder: Metrics +condition: '.Values.serviceMonitor.enabled' +dashboards: +- name: Uptime + url: https://grafana.com/api/dashboards/14847/revisions/2/download + tags: [] diff --git a/charts/uptime-kuma/templates/grafana-dashboards.yaml b/charts/uptime-kuma/templates/grafana-dashboards.yaml new file mode 100644 index 0000000..083bc49 --- /dev/null +++ b/charts/uptime-kuma/templates/grafana-dashboards.yaml @@ -0,0 +1,15 @@ +{{- if .Values.serviceMonitor.enabled }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ printf "%s-%s" (include "kubezero-lib.fullname" $) "grafana-dashboards" | trunc 63 | trimSuffix "-" }} + namespace: {{ .Release.Namespace }} + labels: + grafana_dashboard: "1" + {{- include "kubezero-lib.labels" . | nindent 4 }} + annotations: + k8s-sidecar-target-directory: Metrics +binaryData: + Uptime.json.gz: + H4sIAAAAAAAC/+1ZW2/bNhR+96/gOGBoALewml7SvXlJOgTL0iBJ22FDEdASbbOhSJWkEruG//sOqRsl0U7QbVga5MWGzqHIc//OEVcDhPDlJRNZbjT+Gf31aVhQFP2SM0UdDSgIrdwv8Mwyo0DFM0WmRBA8rBgsCZIFSd36X7uMa6o0k8Ly9p5FzyLsGOth+LiMCMq7h2lDTP+k8xbVO+YbTjAspZoqBpbonXMBPNRl9o+D38KqRAgJogHXmrU4H3OmTW3kRirgTHLGzZHdKRo21IQYomWuYifCqZIpNXOaNxLAGirIhFu+UTn16HOWBKgslmJfcqnshmo2IU9GQ/Q8iuDn5cshinb8rSvdx40u6Cc05lSZlgiGqBk1tZollbOUWWI0Gg19ekpMPB+LJbCmhGvaYhoya0KzoZZeS4ieTyRRCa65a1+OTcvW7v/ToFyOacJMx2p4Jqg5smEQvdh78bogKZLNL6TkhmXAcGoUoSJyzt0TZ+LKyyUXVoE8ajmyetlxpozyZF+KKZu1DIgTOiU5N7pr1rj0nk+0VpXO3djMIZHnkicaewvWHQ9kGRMz7YViNyDLlTJrR3CLOQqSPRGxogkehlYwkdBFZdIe19CFDRx88O7jCe4tWPffwdGtoswUpWK7MNFWYd6fBkQZ3CJaHZLXhOe0vYH/cifcGx9u9DOZaMlzQzsqQZWkWd+xKOS/W21TSl1E7G2qbjsgHAf19nujwTa7fhqEOH7iSyjECupdkYmDzgLQjyWnsm1MPLcHe3vcwPMb77kTntjWq1Fva1cNXtSPoXwpzPB76bcJia9mSubCt0hRaaolRFHiMz/n2rDpsmLHVBiq/AUSUEkUBdq9nxvps8H6eUzfBVMZx4TH/XjBnGhzIs0JOB5vjFNXu7RDvxbd+VVX9T1cqousWnVptQ2sDj1rZzyfMfGh20vU/AKI2uq0tKULmmacqB4wOl7mgjWVghmpLm2/kWvUVo1Z24N+faU5nVGRvJUK8M1yVytU7WRxFK3X7fWKTh3c4LEHZoOOmaElMbzoc5ih6NyJ5OlbVhfXGgX7nUfg+RbgOfzj9Ojs8ODeYM+H8fHRwYOFn1vQ4Z+Cz63oFt1T9Ime3w1+Xj7CzwOEnximrEumL0EbltwTELo4Pkf7IBebspjcczzKCKfG0KcxxJJm8WZQiiG+ZdrfiCyYPiYT2jdzyTzlJKYphH4g6ouhnqgxZzNRrulgDk4UuTk3y8K0MEj2iumUcf4uIzEzy8DrkLSJTbwqZoXs72A/ArxVAe3qWAlN4YUv67k3zL9mX3spFqjNTrEjG7CZ5HWNsESicGDpR5aYeR8QcSYh6s/ZV+oXvAp0oIrQA6aNYpO8PGK1CQrLo7fKDOh3c2oP1Jtcq2HSt9VJh+1jMyC+glYnJImtv1mRdD2rpr4zt8rYoHQVQ6tNm8npdDP2b+7QHofSu7YFLUPlwn32wqnG/+uwuhfuFp5v7xbqqnAXmE7JouvqlIleWt8FzBOmARnrLqP4PNdakfnldiKNLdphcK8rV0uHKkg1xDenfbxb/7s4rvP0SYW9kDkZWJpe2i/Mq/UOmizREx+Yd+4JwJ+VgiL7uTsA7N4X8u9s3HzQI86Ph+Nf9nbfbDtid/SfzlCvRt/LELWhLL56HKIe6hCVkKWGEpwSJmxHdj9HqbNKPnQA4m4dqeo7Rh3P4a3GlLvFDZWuZoqEqCu3U/taDZxkDWj89rS+mmwuyWytb/jTYoqAxvTmaTQv5QOoLWm49VrG4iuq6thwtK+2o62s3NjhfWaZ6Lc8LfIF58Vd7P7J3uHT6z9flwo0N61uMADU0LFiWZUuY1Tf+SEjke3fkZlTZPEIWdHdE13ElHNIM+SdijIlP9PY/FAcBG600GA33R0Btqz/Bj5/AfA2HwAA +{{- end }} diff --git a/charts/uptime-kuma/templates/servicemonitor.yaml b/charts/uptime-kuma/templates/servicemonitor.yaml new file mode 100644 index 0000000..8b53529 --- /dev/null +++ b/charts/uptime-kuma/templates/servicemonitor.yaml @@ -0,0 +1,63 @@ +{{- if .Values.serviceMonitor.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ include "kubezero-lib.fullname" . }} + {{- with .Values.serviceMonitor.namespace }} + namespace: {{ . }} + {{- end }} + labels: + {{- include "kubezero-lib.labels" . | nindent 4 }} +spec: + jobLabel: {{ .Values.serviceMonitor.jobLabel | default .Release.Name }} + endpoints: + - port: http + path: /metrics + {{- with .Values.serviceMonitor.interval }} + interval: {{ . }} + {{- end }} + {{- with .Values.serviceMonitor.scrapeTimeout }} + scrapeTimeout: {{ . }} + {{- end }} + {{- if .Values.serviceMonitor.metricRelabelings }} + metricRelabelings: + {{ tpl (toYaml .Values.serviceMonitor.metricRelabelings | indent 6) . }} + {{- end }} + {{- if .Values.serviceMonitor.relabelings }} + relabelings: + {{ toYaml .Values.serviceMonitor.relabelings | indent 6 }} + {{- end }} + {{- if .Values.serviceMonitor.basicAuth }} + basicAuth: + password: + name: {{ include "kubezero-lib.fullname" . }}-servicemonitor-basic-auth + key: password + username: + name: {{ include "kubezero-lib.fullname" . }}-servicemonitor-basic-auth + key: username + {{- end }} + {{- if .Values.serviceMonitor.namespaceSelector }} + namespaceSelector: + {{ toYaml .Values.serviceMonitor.namespaceSelector | indent 4 -}} + {{ else }} + namespaceSelector: + matchNames: + - {{ .Release.Namespace }} + {{- end }} + selector: + matchLabels: + {{- include "kubezero-lib.selectorLabels" . | nindent 6 }} +--- + +{{- if .Values.serviceMonitor.basicAuth }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "kubezero-lib.fullname" . }}-servicemonitor-basic-auth +data: + password: {{ .Values.serviceMonitor.basicAuth.password | b64enc }} + username: {{ .Values.serviceMonitor.basicAuth.username | b64enc }} +type: Opaque +{{- end }} + +{{- end }} diff --git a/charts/uptime-kuma/update.sh b/charts/uptime-kuma/update.sh new file mode 100755 index 0000000..9c03529 --- /dev/null +++ b/charts/uptime-kuma/update.sh @@ -0,0 +1,3 @@ +#!/bin/bash -ex + +../kubezero-metrics/sync_grafana_dashboards.py dashboards.yaml templates/grafana-dashboards.yaml diff --git a/charts/uptime-kuma/values.yaml b/charts/uptime-kuma/values.yaml index dd9d676..a4a65a6 100644 --- a/charts/uptime-kuma/values.yaml +++ b/charts/uptime-kuma/values.yaml @@ -30,3 +30,9 @@ istio: enabled: false gateway: istio-ingress/private-ingressgateway url: uptime.example.com + +serviceMonitor: + enabled: false +# basicAuth: +# username: uptime +# password: check