Skip to content

Commit be89d50

Browse files
authored
Merge pull request #62 from aslafy-z/feat/dashboard-labels
feat: allow deploying dashboard and alerts on existing instances
2 parents 4365bd8 + 1984b14 commit be89d50

24 files changed

+466
-345
lines changed

README.md

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Logs will be scraped from all pods in the Kubernetes cluster.
2222

2323
```bash
2424
helm repo add coder-observability https://helm.coder.com/observability
25-
helm upgrade --install coder-observability coder-observability/coder-observability --version 0.4.3 --namespace coder-observability --create-namespace
25+
helm upgrade --install coder-observability coder-observability/coder-observability --version 0.5.0 --namespace coder-observability --create-namespace
2626
```
2727

2828
## Requirements
@@ -311,6 +311,8 @@ values which are defined [here](https://github.com/grafana/helm-charts/tree/main
311311

312312
| Key | Type | Default | Description |
313313
|-----|------|---------|-------------|
314+
| global.alerts.enabled | bool | `true` | enable or disable alerting |
315+
| global.alerts.kind | string | `"configmap"` | the container resource kind in which alerts should be created; valid values are "prometheusrule" or "configmap" |
314316
| global.coder.alerts | object | `{"coderd":{"groups":{"CPU":{"delay":"10m","enabled":true,"period":"10m","thresholds":{"critical":0.9,"warning":0.8}},"IneligiblePrebuilds":{"delay":"10m","enabled":true,"thresholds":{"notify":1}},"Memory":{"delay":"10m","enabled":true,"thresholds":{"critical":0.9,"warning":0.8}},"Replicas":{"delay":"5m","enabled":true,"thresholds":{"critical":1,"notify":3,"warning":2}},"Restarts":{"delay":"1m","enabled":true,"period":"10m","thresholds":{"critical":3,"notify":1,"warning":2}},"UnprovisionedPrebuiltWorkspaces":{"delay":"10m","enabled":true,"thresholds":{"warn":1}},"WorkspaceBuildFailures":{"delay":"10m","enabled":true,"period":"10m","thresholds":{"critical":10,"notify":2,"warning":5}}}},"enterprise":{"groups":{"Licences":{"delay":"1m","enabled":true,"thresholds":{"critical":1,"warning":0.9}}}},"provisionerd":{"groups":{"Replicas":{"delay":"5m","enabled":true,"thresholds":{"critical":1,"notify":3,"warning":2}}}}}` | alerts for the various aspects of Coder |
315317
| global.coder.coderdSelector | string | `"pod=~`coder.*`, pod!~`.*provisioner.*`"` | series selector for Prometheus/Loki to locate provisioner pods. ensure this uses backticks for quotes! |
316318
| global.coder.controlPlaneNamespace | string | `"coder"` | the namespace into which the control plane has been deployed. |
@@ -319,7 +321,8 @@ values which are defined [here](https://github.com/grafana/helm-charts/tree/main
319321
| global.coder.provisionerdSelector | string | `"pod=~`coder-provisioner.*`"` | series selector for Prometheus/Loki to locate provisioner pods. https://coder.com/docs/v2/latest/admin/provisioners TODO: rename container label in provisioner helm chart to be "provisioner" not "coder" ensure this uses backticks for quotes! |
320322
| global.coder.scrapeMetrics | string | `nil` | use this to scrape metrics from a standalone (set of) coder deployment(s) if using kubernetes, rather add an annotation "prometheus.io/scrape=true" and coder will get automatically scraped; set this value to null and configure coderdSelector to target your coder pods |
321323
| global.coder.workspacesSelector | string | `"namespace=`coder-workspaces`"` | the namespace into which any external provisioners have been deployed. |
322-
| global.dashboards | object | `{"queryTimeout":900,"refresh":"30s","timerange":"12h"}` | settings for bundled dashboards |
324+
| global.dashboards.enabled | bool | `true` | enable or disable the creation of configmaps for dashboards |
325+
| global.dashboards.labels | string | `nil` | labels to apply to configmaps created for dashboards |
323326
| global.dashboards.queryTimeout | int | `900` | how long until a query in Grafana will timeout after |
324327
| global.dashboards.refresh | string | `"30s"` | how often dashboards should refresh |
325328
| global.dashboards.timerange | string | `"12h"` | how far back dashboards should look |
@@ -358,7 +361,7 @@ values which are defined [here](https://github.com/grafana/helm-charts/tree/main
358361
| grafana."grafana.ini"."auth.anonymous".org_name | string | `"Main Org."` | |
359362
| grafana."grafana.ini"."auth.anonymous".org_role | string | `"Admin"` | |
360363
| grafana."grafana.ini".analytics.reporting_enabled | bool | `false` | |
361-
| grafana."grafana.ini".dashboards.default_home_dashboard_path | string | `"/var/lib/grafana/dashboards/coder/0/status.json"` | |
364+
| grafana."grafana.ini".dashboards.default_home_dashboard_path | string | `"/var/lib/grafana/dashboards/coder/0/coder-status.json"` | |
362365
| grafana."grafana.ini".dataproxy.timeout | string | `"{{ $.Values.global.dashboards.queryTimeout }}"` | |
363366
| grafana."grafana.ini".feature_toggles.autoMigrateOldPanels | bool | `true` | |
364367
| grafana."grafana.ini".users.allow_sign_up | bool | `false` | |
@@ -442,29 +445,35 @@ values which are defined [here](https://github.com/grafana/helm-charts/tree/main
442445
| grafana.deploymentStrategy.type | string | `"Recreate"` | |
443446
| grafana.enabled | bool | `true` | |
444447
| grafana.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION | bool | `true` | |
445-
| grafana.extraConfigmapMounts[0].configMap | string | `"dashboards-status"` | |
448+
| grafana.extraConfigmapMounts[0].configMap | string | `"coder-dashboard-status"` | |
446449
| grafana.extraConfigmapMounts[0].mountPath | string | `"/var/lib/grafana/dashboards/coder/0"` | |
447-
| grafana.extraConfigmapMounts[0].name | string | `"dashboards-status"` | |
450+
| grafana.extraConfigmapMounts[0].name | string | `"coder-dashboard-status"` | |
451+
| grafana.extraConfigmapMounts[0].optional | bool | `true` | |
448452
| grafana.extraConfigmapMounts[0].readOnly | bool | `false` | |
449-
| grafana.extraConfigmapMounts[1].configMap | string | `"dashboards-coderd"` | |
453+
| grafana.extraConfigmapMounts[1].configMap | string | `"coder-dashboard-coderd"` | |
450454
| grafana.extraConfigmapMounts[1].mountPath | string | `"/var/lib/grafana/dashboards/coder/1"` | |
451-
| grafana.extraConfigmapMounts[1].name | string | `"dashboards-coderd"` | |
455+
| grafana.extraConfigmapMounts[1].name | string | `"coder-dashboard-coderd"` | |
456+
| grafana.extraConfigmapMounts[1].optional | bool | `true` | |
452457
| grafana.extraConfigmapMounts[1].readOnly | bool | `false` | |
453-
| grafana.extraConfigmapMounts[2].configMap | string | `"dashboards-provisionerd"` | |
458+
| grafana.extraConfigmapMounts[2].configMap | string | `"coder-dashboard-provisionerd"` | |
454459
| grafana.extraConfigmapMounts[2].mountPath | string | `"/var/lib/grafana/dashboards/coder/2"` | |
455-
| grafana.extraConfigmapMounts[2].name | string | `"dashboards-provisionerd"` | |
460+
| grafana.extraConfigmapMounts[2].name | string | `"coder-dashboard-provisionerd"` | |
461+
| grafana.extraConfigmapMounts[2].optional | bool | `true` | |
456462
| grafana.extraConfigmapMounts[2].readOnly | bool | `false` | |
457-
| grafana.extraConfigmapMounts[3].configMap | string | `"dashboards-workspaces"` | |
463+
| grafana.extraConfigmapMounts[3].configMap | string | `"coder-dashboard-workspaces"` | |
458464
| grafana.extraConfigmapMounts[3].mountPath | string | `"/var/lib/grafana/dashboards/coder/3"` | |
459-
| grafana.extraConfigmapMounts[3].name | string | `"dashboards-workspaces"` | |
465+
| grafana.extraConfigmapMounts[3].name | string | `"coder-dashboard-workspaces"` | |
466+
| grafana.extraConfigmapMounts[3].optional | bool | `true` | |
460467
| grafana.extraConfigmapMounts[3].readOnly | bool | `false` | |
461-
| grafana.extraConfigmapMounts[4].configMap | string | `"dashboards-workspace-detail"` | |
468+
| grafana.extraConfigmapMounts[4].configMap | string | `"coder-dashboard-workspace-detail"` | |
462469
| grafana.extraConfigmapMounts[4].mountPath | string | `"/var/lib/grafana/dashboards/coder/4"` | |
463-
| grafana.extraConfigmapMounts[4].name | string | `"dashboards-workspace-detail"` | |
470+
| grafana.extraConfigmapMounts[4].name | string | `"coder-dashboard-workspace-detail"` | |
471+
| grafana.extraConfigmapMounts[4].optional | bool | `true` | |
464472
| grafana.extraConfigmapMounts[4].readOnly | bool | `false` | |
465-
| grafana.extraConfigmapMounts[5].configMap | string | `"dashboards-prebuilds"` | |
473+
| grafana.extraConfigmapMounts[5].configMap | string | `"coder-dashboard-prebuilds"` | |
466474
| grafana.extraConfigmapMounts[5].mountPath | string | `"/var/lib/grafana/dashboards/coder/5"` | |
467-
| grafana.extraConfigmapMounts[5].name | string | `"dashboards-prebuilds"` | |
475+
| grafana.extraConfigmapMounts[5].name | string | `"coder-dashboard-prebuilds"` | |
476+
| grafana.extraConfigmapMounts[5].optional | bool | `true` | |
468477
| grafana.extraConfigmapMounts[5].readOnly | bool | `false` | |
469478
| grafana.fullnameOverride | string | `"grafana"` | |
470479
| grafana.image.tag | string | `"10.4.19"` | |
@@ -542,9 +551,10 @@ values which are defined [here](https://github.com/grafana/helm-charts/tree/main
542551
| prometheus.configmapReload.prometheus.containerPort | int | `9091` | |
543552
| prometheus.configmapReload.prometheus.extraArgs.log-level | string | `"all"` | |
544553
| prometheus.configmapReload.prometheus.extraArgs.watch-interval | string | `"15s"` | |
545-
| prometheus.configmapReload.prometheus.extraConfigmapMounts[0].configMap | string | `"metrics-alerts"` | |
554+
| prometheus.configmapReload.prometheus.extraConfigmapMounts[0].configMap | string | `"coder-metrics-alerts"` | |
546555
| prometheus.configmapReload.prometheus.extraConfigmapMounts[0].mountPath | string | `"/etc/config/alerts"` | |
547556
| prometheus.configmapReload.prometheus.extraConfigmapMounts[0].name | string | `"alerts"` | |
557+
| prometheus.configmapReload.prometheus.extraConfigmapMounts[0].optional | bool | `true` | |
548558
| prometheus.configmapReload.prometheus.extraConfigmapMounts[0].readonly | bool | `true` | |
549559
| prometheus.enabled | bool | `true` | |
550560
| prometheus.kube-state-metrics.enabled | bool | `true` | |
@@ -555,9 +565,10 @@ values which are defined [here](https://github.com/grafana/helm-charts/tree/main
555565
| prometheus.prometheus-node-exporter.podAnnotations."prometheus.io/scrape" | string | `"true"` | |
556566
| prometheus.prometheus-pushgateway.enabled | bool | `false` | |
557567
| prometheus.server.extraArgs."log.level" | string | `"debug"` | |
558-
| prometheus.server.extraConfigmapMounts[0].configMap | string | `"metrics-alerts"` | |
568+
| prometheus.server.extraConfigmapMounts[0].configMap | string | `"coder-metrics-alerts"` | |
559569
| prometheus.server.extraConfigmapMounts[0].mountPath | string | `"/etc/config/alerts"` | |
560570
| prometheus.server.extraConfigmapMounts[0].name | string | `"alerts"` | |
571+
| prometheus.server.extraConfigmapMounts[0].optional | bool | `true` | |
561572
| prometheus.server.extraConfigmapMounts[0].readonly | bool | `true` | |
562573
| prometheus.server.extraFlags[0] | string | `"web.enable-lifecycle"` | |
563574
| prometheus.server.extraFlags[1] | string | `"enable-feature=remote-write-receiver"` | |
@@ -582,6 +593,7 @@ values which are defined [here](https://github.com/grafana/helm-charts/tree/main
582593
| pyroscope.pyroscope.replicaCount | int | `1` | |
583594
| pyroscope.pyroscope.service.port | int | `4040` | |
584595
| pyroscope.pyroscope.service.type | string | `"ClusterIP"` | |
596+
| runbookViewer.enabled | bool | `true` | enable or disable the runbook viewer |
585597
| runbookViewer.image | string | `"dannyben/madness"` | |
586598
| sqlExporter.enabled | bool | `true` | |
587599
| sqlExporter.image | string | `"burningalchemist/sql_exporter"` | |

coder-observability/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apiVersion: v2
22
name: coder-observability
33
description: Gain insights into your Coder deployment
44
type: application
5-
version: 0.4.3
5+
version: 0.5.0
66
dependencies:
77
- name: pyroscope
88
condition: pyroscope.enabled

coder-observability/templates/_helpers.tpl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,13 @@ envFrom:
9999
{{/* Build a runbook URL */}}
100100
{{- define "runbook-url" -}}
101101
{{ $outer := . }}
102+
{{- if .Values.runbookViewer.enabled -}}
102103
{{- with .Values.global -}}
103104
{{- .externalScheme }}://runbook-viewer.{{ $outer.Release.Namespace }}.{{ .externalZone }}/{{- $outer.service }}#{{- $outer.alert | lower }}
104105
{{- end }}
106+
{{- else -}}
107+
https://github.com/coder/observability/blob/main/coder-observability/runbooks/{{- $outer.service }}.md#{{- $outer.alert | lower }}
108+
{{- end }}
105109
{{- end }}
106110

107111
{{- define "coderd-selector" -}} {{- printf "%s, namespace=`%s`" .Values.global.coder.coderdSelector .Values.global.coder.controlPlaneNamespace -}} {{- end }}
@@ -121,4 +125,4 @@ envFrom:
121125
{{- define "grafana-agent-job" -}} {{- printf "%s/%s/%s" .Release.Namespace (index .Values "grafana-agent").fullnameOverride "grafana-agent" -}} {{- end }}
122126

123127
{{- define "dashboard-range" -}} {{ .Values.global.dashboards.timerange }} {{- end }}
124-
{{- define "dashboard-refresh" -}} {{ .Values.global.dashboards.refresh }} {{- end }}
128+
{{- define "dashboard-refresh" -}} {{ .Values.global.dashboards.refresh }} {{- end }}

0 commit comments

Comments
 (0)