From 9625a8cf845a01a1165071d0b3758f6a6a1e7bfb Mon Sep 17 00:00:00 2001 From: evdo Date: Fri, 20 Jun 2025 14:19:33 +0200 Subject: [PATCH] feat(observability): added dashboards for ingress, victoria-logs, argocd. Added grafana-operator --- .../observability/grafana-operator.yaml | 26 +++++++++++++++ .../grafana-operator/manifests/argocd.yaml | 9 ++++++ .../grafana-operator/manifests/grafana.yaml | 14 ++++++++ .../manifests/ingress-nginx.yaml | 9 ++++++ .../manifests/victoria-logs.yaml | 9 ++++++ .../victoria-k8s-stack/values.yaml | 32 ++++++++++++++----- 6 files changed, 91 insertions(+), 8 deletions(-) create mode 100644 template/stacks/observability/grafana-operator.yaml create mode 100644 template/stacks/observability/grafana-operator/manifests/argocd.yaml create mode 100644 template/stacks/observability/grafana-operator/manifests/grafana.yaml create mode 100644 template/stacks/observability/grafana-operator/manifests/ingress-nginx.yaml create mode 100644 template/stacks/observability/grafana-operator/manifests/victoria-logs.yaml diff --git a/template/stacks/observability/grafana-operator.yaml b/template/stacks/observability/grafana-operator.yaml new file mode 100644 index 0000000..d9f1372 --- /dev/null +++ b/template/stacks/observability/grafana-operator.yaml @@ -0,0 +1,26 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: grafana-operator + namespace: argocd + labels: + env: dev +spec: + project: default + syncPolicy: + automated: + selfHeal: true + syncOptions: + - CreateNamespace=true + - ServerSideApply=true + destination: + name: in-cluster + namespace: observability + sources: + - chart: grafana-operator + repoURL: ghcr.io/grafana/helm-charts + targetRevision: v5.18.0 + releaseName: grafana-operator + - repoURL: https://{{{ .Env.CLIENT_REPO_DOMAIN }}}/{{{ .Env.CLIENT_REPO_ORG_NAME }}} + targetRevision: HEAD + path: "{{{ .Env.CLIENT_REPO_ID }}}/{{{ .Env.DOMAIN }}}/stacks/observability/grafana-operator/manifests" diff --git a/template/stacks/observability/grafana-operator/manifests/argocd.yaml b/template/stacks/observability/grafana-operator/manifests/argocd.yaml new file mode 100644 index 0000000..b348ff7 --- /dev/null +++ b/template/stacks/observability/grafana-operator/manifests/argocd.yaml @@ -0,0 +1,9 @@ +apiVersion: grafana.integreatly.org/v1beta1 +kind: GrafanaDashboard +metadata: + name: argocd +spec: + instanceSelector: + matchLabels: + dashboards: "grafana" + url: "https://raw.githubusercontent.com/argoproj/argo-cd/refs/heads/master/examples/dashboard.json" diff --git a/template/stacks/observability/grafana-operator/manifests/grafana.yaml b/template/stacks/observability/grafana-operator/manifests/grafana.yaml new file mode 100644 index 0000000..2f92152 --- /dev/null +++ b/template/stacks/observability/grafana-operator/manifests/grafana.yaml @@ -0,0 +1,14 @@ +apiVersion: grafana.integreatly.org/v1beta1 +kind: Grafana +metadata: + name: grafana + labels: + dashboards: "grafana" +spec: + persistentVolumeClaim: + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi diff --git a/template/stacks/observability/grafana-operator/manifests/ingress-nginx.yaml b/template/stacks/observability/grafana-operator/manifests/ingress-nginx.yaml new file mode 100644 index 0000000..c13d6a2 --- /dev/null +++ b/template/stacks/observability/grafana-operator/manifests/ingress-nginx.yaml @@ -0,0 +1,9 @@ +apiVersion: grafana.integreatly.org/v1beta1 +kind: GrafanaDashboard +metadata: + name: ingress-nginx +spec: + instanceSelector: + matchLabels: + dashboards: "grafana" + url: "https://raw.githubusercontent.com/adinhodovic/ingress-nginx-mixin/refs/heads/main/dashboards_out/ingress-nginx-overview.json" diff --git a/template/stacks/observability/grafana-operator/manifests/victoria-logs.yaml b/template/stacks/observability/grafana-operator/manifests/victoria-logs.yaml new file mode 100644 index 0000000..4018fbd --- /dev/null +++ b/template/stacks/observability/grafana-operator/manifests/victoria-logs.yaml @@ -0,0 +1,9 @@ +apiVersion: grafana.integreatly.org/v1beta1 +kind: GrafanaDashboard +metadata: + name: victoria-logs +spec: + instanceSelector: + matchLabels: + dashboards: "grafana" + url: "https://raw.githubusercontent.com/VictoriaMetrics/VictoriaMetrics/refs/heads/master/dashboards/vm/victorialogs.json" diff --git a/template/stacks/observability/victoria-k8s-stack/values.yaml b/template/stacks/observability/victoria-k8s-stack/values.yaml index 75daf04..d717918 100644 --- a/template/stacks/observability/victoria-k8s-stack/values.yaml +++ b/template/stacks/observability/victoria-k8s-stack/values.yaml @@ -50,7 +50,7 @@ defaultDashboards: annotations: {} grafanaOperator: # -- Create dashboards as CRDs (requires grafana-operator to be installed) - enabled: false + enabled: true spec: instanceSelector: matchLabels: @@ -763,9 +763,9 @@ vmauth: annotations: nginx.ingress.kubernetes.io/force-ssl-redirect: "true" cert-manager.io/cluster-issuer: main - host: o12y.{{{ .Env.DOMAIN }}} + host: o12y.observability.think-ahead.cloud tlsHosts: - - o12y.{{{ .Env.DOMAIN }}} + - o12y.observability.think-ahead.cloud tlsSecretName: vmauth-tls-secret unauthorizedUserAccessSpec: {} selectAllByDefault: true @@ -826,9 +826,14 @@ vmagent: defaultDatasources: grafanaOperator: # -- Create datasources as CRDs (requires grafana-operator to be installed) - enabled: false + enabled: true annotations: {} spec: + plugins: + - name: victoriametrics-metrics-datasource + version: 0.16.0 + - name: victoriametrics-logs-datasource + version: 0.17.0 instanceSelector: matchLabels: dashboards: grafana @@ -869,7 +874,7 @@ defaultDatasources: # -- Grafana dependency chart configuration. For possible values refer [here](https://github.com/grafana/helm-charts/tree/main/charts/grafana#configuration) grafana: - enabled: true + enabled: false # all values for grafana helm chart can be specified here persistence: enabled: true @@ -895,15 +900,26 @@ grafana: enabled: true multicluster: false + # dashboards: + # default: + # victoria-logs: + # url: "https://raw.githubusercontent.com/VictoriaMetrics/VictoriaMetrics/refs/heads/master/dashboards/vm/victorialogs.json" + # victoria-logs-explorer: + # url: "https://grafana.com/api/dashboards/22759/revisions/6/download" + # ingress-nginx: + # url: "https://raw.githubusercontent.com/adinhodovic/ingress-nginx-mixin/refs/heads/main/dashboards_out/ingress-nginx-overview.json" + # argocd: + # url: "https://raw.githubusercontent.com/argoproj/argo-cd/refs/heads/master/examples/dashboard.json" + # -- Create datasource configmap even if grafana deployment has been disabled - forceDeployDatasource: false + forceDeployDatasource: true # Uncomment the block below, if you want to enable VictoriaMetrics Datasource in Grafana: # Note that Grafana will need internet access to install the datasource plugin. plugins: - - victoriametrics-metrics-datasource - - victoriametrics-logs-datasource + - victoriametrics-metrics-datasource + - victoriametrics-logs-datasource ingress: enabled: false