diff --git a/manifests/monitoring/grafana/datasources.yaml b/manifests/monitoring/grafana/datasources.yaml
deleted file mode 100644
index f3961d19ce096e90a8f9c7d53f9db9d97cc70940..0000000000000000000000000000000000000000
--- a/manifests/monitoring/grafana/datasources.yaml
+++ /dev/null
@@ -1,18 +0,0 @@
-apiVersion: v1
-kind: ConfigMap
-metadata:
-  name: grafana-datasources
-  namespace: flux-system
-data:
-  datasources.yaml: |-
-    apiVersion: 1
-    deleteDatasources:
-      - name: prometheus
-    datasources:
-    - name: prometheus
-      type: prometheus
-      access: proxy
-      url: http://prometheus:9090
-      isDefault: true
-      editable: true
-      version: 1
diff --git a/manifests/monitoring/grafana/deployment.yaml b/manifests/monitoring/grafana/deployment.yaml
deleted file mode 100644
index d53d66b663e37f90f6346bd0bb3e79f443948d92..0000000000000000000000000000000000000000
--- a/manifests/monitoring/grafana/deployment.yaml
+++ /dev/null
@@ -1,60 +0,0 @@
-apiVersion: apps/v1
-kind: Deployment
-metadata:
-  name: grafana
-  labels:
-    app: grafana
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      app: grafana
-  template:
-    metadata:
-      labels:
-        app: grafana
-      annotations:
-        prometheus.io/scrape: 'false'
-    spec:
-      containers:
-        - name: grafana
-          image: "grafana/grafana:7.5.4"
-          imagePullPolicy: IfNotPresent
-          ports:
-            - name: http
-              containerPort: 3000
-              protocol: TCP
-          env:
-            - name: GF_PATHS_PROVISIONING
-              value: /etc/grafana/provisioning/
-            - name: GF_AUTH_BASIC_ENABLED
-              value: "false"
-            - name: GF_AUTH_ANONYMOUS_ENABLED
-              value: "true"
-            - name: GF_AUTH_ANONYMOUS_ORG_ROLE
-              value: Admin
-            - name: GF_USERS_DEFAULT_THEME
-              value: "light"
-          volumeMounts:
-            - name: grafana
-              mountPath: /var/lib/grafana
-            - name: dashboards
-              mountPath: /etc/grafana/dashboards
-            - name: datasources
-              mountPath: /etc/grafana/provisioning/datasources
-            - name: providers
-              mountPath: /etc/grafana/provisioning/dashboards
-          resources:
-            {}
-      volumes:
-        - name: grafana
-          emptyDir: {}
-        - name: dashboards
-          configMap:
-            name: grafana-dashboards
-        - name: providers
-          configMap:
-            name: grafana-providers
-        - name: datasources
-          configMap:
-            name: grafana-datasources
diff --git a/manifests/monitoring/grafana/kustomization.yaml b/manifests/monitoring/grafana/kustomization.yaml
deleted file mode 100644
index 13e0356a11c1a11e675c3f0e1f5f5180213e05a9..0000000000000000000000000000000000000000
--- a/manifests/monitoring/grafana/kustomization.yaml
+++ /dev/null
@@ -1,14 +0,0 @@
-apiVersion: kustomize.config.k8s.io/v1beta1
-kind: Kustomization
-namespace: flux-system
-resources:
-  - service.yaml
-  - deployment.yaml
-  - providers.yaml
-  - datasources.yaml
-configMapGenerator:
-  - name: grafana-dashboards
-    files:
-      - dashboards/control-plane.json
-      - dashboards/cluster.json
-
diff --git a/manifests/monitoring/grafana/providers.yaml b/manifests/monitoring/grafana/providers.yaml
deleted file mode 100644
index 4f5e23c9e4f259076c856476f701f24e7e6e9f57..0000000000000000000000000000000000000000
--- a/manifests/monitoring/grafana/providers.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
-apiVersion: v1
-kind: ConfigMap
-metadata:
-  name: grafana-providers
-  namespace: flux-system
-data:
-  providers.yaml: |+
-    apiVersion: 1
-    providers:
-    - name: 'default'
-      orgId: 1
-      folder: ''
-      type: file
-      disableDeletion: false
-      editable: true
-      options:
-        path: /etc/grafana/dashboards
diff --git a/manifests/monitoring/grafana/service.yaml b/manifests/monitoring/grafana/service.yaml
deleted file mode 100644
index 87968d71ab3d5e87cbc82df8420f8ee1a0e05e31..0000000000000000000000000000000000000000
--- a/manifests/monitoring/grafana/service.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-apiVersion: v1
-kind: Service
-metadata:
-  name: grafana
-  namespace: flux-system
-  labels:
-    app: grafana
-spec:
-  type: ClusterIP
-  ports:
-    - port: 3000
-      targetPort: http
-      protocol: TCP
-      name: http
-  selector:
-    app: grafana
diff --git a/manifests/monitoring/kube-prometheus-stack/namespace.yaml b/manifests/monitoring/kube-prometheus-stack/namespace.yaml
index d32523606f28187cc65fbb56387a78011a1e9425..78abcfce7a90412eb06be50eb37665560f9cadd1 100644
--- a/manifests/monitoring/kube-prometheus-stack/namespace.yaml
+++ b/manifests/monitoring/kube-prometheus-stack/namespace.yaml
@@ -2,3 +2,5 @@ apiVersion: v1
 kind: Namespace
 metadata:
   name: monitoring
+  labels:
+    app.kubernetes.io/component: monitoring
diff --git a/manifests/monitoring/kube-prometheus-stack/release.yaml b/manifests/monitoring/kube-prometheus-stack/release.yaml
index d59854339fa9d870cce66dcad042eda38add7895..13aa495273ceb959a550c1946d86137f2f07b3ff 100644
--- a/manifests/monitoring/kube-prometheus-stack/release.yaml
+++ b/manifests/monitoring/kube-prometheus-stack/release.yaml
@@ -6,25 +6,28 @@ spec:
   interval: 5m
   chart:
     spec:
-      version: 34.7.0
+      version: "35.x"
       chart: kube-prometheus-stack
       sourceRef:
         kind: HelmRepository
         name: prometheus-community
-      interval: 1m
+      interval: 60m
   install:
     crds: Create
   upgrade:
     crds: CreateReplace
+  # https://github.com/prometheus-community/helm-charts/blob/main/charts/kube-prometheus-stack/values.yaml
   values:
     alertmanager:
       enabled: false
-    grafana:
-      sidecar:
-        dashboards:
-          searchNamespace: ALL
     prometheus:
       prometheusSpec:
+        retention: 24h
+        resources:
+          requests:
+            cpu: 200m
+            memory: 200Mi
+        podMonitorNamespaceSelector: {}
         podMonitorSelector:
           matchLabels:
-            app.kubernetes.io/part-of: flux
+            app.kubernetes.io/component: monitoring
diff --git a/manifests/monitoring/kube-prometheus-stack/repository.yaml b/manifests/monitoring/kube-prometheus-stack/repository.yaml
index 258f40876accf7e160c349bc1d14552e54c4f387..49355b530041ee46039f6306e37c7e62482627b2 100644
--- a/manifests/monitoring/kube-prometheus-stack/repository.yaml
+++ b/manifests/monitoring/kube-prometheus-stack/repository.yaml
@@ -1,7 +1,7 @@
-apiVersion: source.toolkit.fluxcd.io/v1beta1
+apiVersion: source.toolkit.fluxcd.io/v1beta2
 kind: HelmRepository
 metadata:
   name: prometheus-community
 spec:
-  interval: 1m
+  interval: 120m
   url: https://prometheus-community.github.io/helm-charts
diff --git a/manifests/monitoring/kustomization.yaml b/manifests/monitoring/kustomization.yaml
deleted file mode 100644
index b93baa2d392696b271f6bc81c501998acd486d39..0000000000000000000000000000000000000000
--- a/manifests/monitoring/kustomization.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-apiVersion: kustomize.config.k8s.io/v1beta1
-kind: Kustomization
-namespace: flux-system
-resources:
-- prometheus
-- grafana
diff --git a/manifests/monitoring/grafana/dashboards/cluster.json b/manifests/monitoring/monitoring-config/dashboards/cluster.json
similarity index 98%
rename from manifests/monitoring/grafana/dashboards/cluster.json
rename to manifests/monitoring/monitoring-config/dashboards/cluster.json
index d9960b7b7e44dc377027adfc54d8cce6ea4ecd84..1d493586735270540328e06cf427a1c13ef66584 100644
--- a/manifests/monitoring/grafana/dashboards/cluster.json
+++ b/manifests/monitoring/monitoring-config/dashboards/cluster.json
@@ -9,6 +9,23 @@
         "iconColor": "rgba(0, 211, 255, 1)",
         "name": "Annotations & Alerts",
         "type": "dashboard"
+      },
+      {
+        "datasource": {
+          "type": "datasource",
+          "uid": "grafana"
+        },
+        "enable": true,
+        "iconColor": "red",
+        "name": "flux events",
+        "target": {
+          "limit": 100,
+          "matchAny": false,
+          "tags": [
+            "flux"
+          ],
+          "type": "tags"
+        }
       }
     ]
   },
diff --git a/manifests/monitoring/grafana/dashboards/control-plane.json b/manifests/monitoring/monitoring-config/dashboards/control-plane.json
similarity index 98%
rename from manifests/monitoring/grafana/dashboards/control-plane.json
rename to manifests/monitoring/monitoring-config/dashboards/control-plane.json
index 3eff4d5743cdb37ac7344355a174fbcdd06a19a8..3f03d300da614aa7768294d5bed575a941cae3a0 100644
--- a/manifests/monitoring/grafana/dashboards/control-plane.json
+++ b/manifests/monitoring/monitoring-config/dashboards/control-plane.json
@@ -15,6 +15,23 @@
           "type": "dashboard"
         },
         "type": "dashboard"
+      },
+      {
+        "datasource": {
+          "type": "datasource",
+          "uid": "grafana"
+        },
+        "enable": true,
+        "iconColor": "red",
+        "name": "flux events",
+        "target": {
+          "limit": 100,
+          "matchAny": false,
+          "tags": [
+            "flux"
+          ],
+          "type": "tags"
+        }
       }
     ]
   },
diff --git a/manifests/monitoring/monitoring-config/kustomization.yaml b/manifests/monitoring/monitoring-config/kustomization.yaml
index 11467e337f3d5e1fd72ef6143da6d16e4ba27d30..9f036a5743ed454b4641bbb6adf6864ce227ecf6 100644
--- a/manifests/monitoring/monitoring-config/kustomization.yaml
+++ b/manifests/monitoring/monitoring-config/kustomization.yaml
@@ -6,8 +6,10 @@ resources:
 configMapGenerator:
   - name: flux-grafana-dashboards
     files:
-      - ../grafana/dashboards/control-plane.json
-      - ../grafana/dashboards/cluster.json
+      - dashboards/control-plane.json
+      - dashboards/cluster.json
     options:
       labels:
         grafana_dashboard: "1"
+        app.kubernetes.io/part-of: flux
+        app.kubernetes.io/component: monitoring
diff --git a/manifests/monitoring/monitoring-config/podmonitor.yaml b/manifests/monitoring/monitoring-config/podmonitor.yaml
index 7838272a4a42eab203450abca5cdbd0c97809f65..d375e0d97047819448e4d5faffaac9fe5bc66042 100644
--- a/manifests/monitoring/monitoring-config/podmonitor.yaml
+++ b/manifests/monitoring/monitoring-config/podmonitor.yaml
@@ -5,6 +5,7 @@ metadata:
   namespace: flux-system
   labels:
     app.kubernetes.io/part-of: flux
+    app.kubernetes.io/component: monitoring
 spec:
   namespaceSelector:
     matchNames:
diff --git a/manifests/monitoring/prometheus/account.yaml b/manifests/monitoring/prometheus/account.yaml
deleted file mode 100644
index e475c19605e49a4ace7c1c8d2e89f8e8649a3bd0..0000000000000000000000000000000000000000
--- a/manifests/monitoring/prometheus/account.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-apiVersion: v1
-kind: ServiceAccount
-metadata:
-  name: prometheus
-  namespace: flux-system
diff --git a/manifests/monitoring/prometheus/deployment.yaml b/manifests/monitoring/prometheus/deployment.yaml
deleted file mode 100644
index 293a935380066141c7990f97044977981dec3841..0000000000000000000000000000000000000000
--- a/manifests/monitoring/prometheus/deployment.yaml
+++ /dev/null
@@ -1,52 +0,0 @@
-apiVersion: apps/v1
-kind: Deployment
-metadata:
-  name: prometheus
-  namespace: flux-system
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      app: prometheus
-  template:
-    metadata:
-      labels:
-        app: prometheus
-      annotations:
-        appmesh.k8s.aws/sidecarInjectorWebhook: disabled
-        sidecar.istio.io/inject: "false"
-    spec:
-      serviceAccountName: prometheus
-      containers:
-          - name: prometheus
-            image: prom/prometheus:v2.26.0
-            imagePullPolicy: IfNotPresent
-            args:
-              - '--storage.tsdb.retention=2h'
-              - '--config.file=/etc/prometheus/prometheus.yml'
-            ports:
-              - containerPort: 9090
-                name: http
-            livenessProbe:
-              httpGet:
-                path: /-/healthy
-                port: 9090
-            readinessProbe:
-              httpGet:
-                path: /-/ready
-                port: 9090
-            resources:
-              requests:
-                cpu: 10m
-                memory: 128Mi
-            volumeMounts:
-              - name: config-volume
-                mountPath: /etc/prometheus
-              - name: data-volume
-                mountPath: /prometheus/data
-      volumes:
-        - name: config-volume
-          configMap:
-            name: prometheus
-        - name: data-volume
-          emptyDir: {}
\ No newline at end of file
diff --git a/manifests/monitoring/prometheus/kustomization.yaml b/manifests/monitoring/prometheus/kustomization.yaml
deleted file mode 100644
index b3377956f69a931d77d2ced5b5c6f90ec3402682..0000000000000000000000000000000000000000
--- a/manifests/monitoring/prometheus/kustomization.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-apiVersion: kustomize.config.k8s.io/v1beta1
-kind: Kustomization
-namespace: flux-system
-resources:
-  - account.yaml
-  - rbac.yaml
-  - service.yaml
-  - deployment.yaml
-configMapGenerator:
-  - name: prometheus
-    files:
-      - prometheus.yml
diff --git a/manifests/monitoring/prometheus/prometheus.yml b/manifests/monitoring/prometheus/prometheus.yml
deleted file mode 100644
index 93f35c0985bdcfd342150dd1731e6015f2afb9d9..0000000000000000000000000000000000000000
--- a/manifests/monitoring/prometheus/prometheus.yml
+++ /dev/null
@@ -1,52 +0,0 @@
-global:
-  scrape_interval: 10s
-scrape_configs:
-
-# Kubernetes API
-- job_name: kubernetes-apiserver
-  kubernetes_sd_configs:
-  - role: endpoints
-    namespaces:
-      names:
-      - default
-  scheme: https
-  tls_config:
-    ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
-    insecure_skip_verify: true
-  bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
-  relabel_configs:
-  - source_labels: [__meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
-    action: keep
-    regex: kubernetes;https
-
-# Kubernetes pods
-- job_name: kubernetes-pods
-  kubernetes_sd_configs:
-  - role: pod
-  relabel_configs:
-  - action: keep
-    regex: true
-    source_labels:
-    - __meta_kubernetes_pod_annotation_prometheus_io_scrape
-  - action: replace
-    regex: (.+)
-    source_labels:
-    - __meta_kubernetes_pod_annotation_prometheus_io_path
-    target_label: __metrics_path__
-  - action: replace
-    regex: ([^:]+)(?::\d+)?;(\d+)
-    replacement: $1:$2
-    source_labels:
-    - __address__
-    - __meta_kubernetes_pod_annotation_prometheus_io_port
-    target_label: __address__
-  - action: labelmap
-    regex: __meta_kubernetes_pod_label_(.+)
-  - action: replace
-    source_labels:
-    - __meta_kubernetes_namespace
-    target_label: namespace
-  - action: replace
-    source_labels:
-    - __meta_kubernetes_pod_name
-    target_label: pod
diff --git a/manifests/monitoring/prometheus/rbac.yaml b/manifests/monitoring/prometheus/rbac.yaml
deleted file mode 100644
index 926a6d8396703c5710dccbefba2c495e3730b9e3..0000000000000000000000000000000000000000
--- a/manifests/monitoring/prometheus/rbac.yaml
+++ /dev/null
@@ -1,32 +0,0 @@
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRole
-metadata:
-  name: prometheus-flux-system
-rules:
-  - apiGroups: [""]
-    resources:
-      - nodes
-      - services
-      - endpoints
-      - pods
-      - nodes/proxy
-    verbs: ["get", "list", "watch"]
-  - apiGroups: [""]
-    resources:
-      - configmaps
-    verbs: ["get"]
-  - nonResourceURLs: ["/metrics"]
-    verbs: ["get"]
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: ClusterRoleBinding
-metadata:
-  name: prometheus-flux-system
-roleRef:
-  apiGroup: rbac.authorization.k8s.io
-  kind: ClusterRole
-  name: prometheus-flux-system
-subjects:
-- kind: ServiceAccount
-  name: prometheus
-  namespace: flux-system
diff --git a/manifests/monitoring/prometheus/service.yaml b/manifests/monitoring/prometheus/service.yaml
deleted file mode 100644
index 143cd9b410909abcfbc172fe51c152500789b329..0000000000000000000000000000000000000000
--- a/manifests/monitoring/prometheus/service.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-apiVersion: v1
-kind: Service
-metadata:
-  name: prometheus
-  namespace: flux-system
-spec:
-  selector:
-    app: prometheus
-  ports:
-    - name: http
-      protocol: TCP
-      port: 9090
\ No newline at end of file