diff --git a/jsonnet/prometheus/prometheus-k8s-service-monitor-alertmanager.libsonnet b/jsonnet/alertmanager/alertmanager-main-service-monitor.libsonnet
similarity index 100%
rename from jsonnet/prometheus/prometheus-k8s-service-monitor-alertmanager.libsonnet
rename to jsonnet/alertmanager/alertmanager-main-service-monitor.libsonnet
diff --git a/jsonnet/alertmanager/alertmanager.libsonnet b/jsonnet/alertmanager/alertmanager.libsonnet
index ef837abaa58167935257da4f3930e179a4f04fc8..ec3954c37a2b0ab6b2380eac84baaf22310b2525 100644
--- a/jsonnet/alertmanager/alertmanager.libsonnet
+++ b/jsonnet/alertmanager/alertmanager.libsonnet
@@ -2,5 +2,6 @@
     config:: import "alertmanager-main-secret.libsonnet",
     serviceAccount:: import "alertmanager-main-service-account.libsonnet",
     service:: import "alertmanager-main-service.libsonnet",
+    serviceMonitor:: import "alertmanager-main-service-monitor.libsonnet",
     alertmanager:: import "alertmanager-main.libsonnet",
 }
diff --git a/jsonnet/kube-prometheus.libsonnet b/jsonnet/kube-prometheus.libsonnet
index 44ee06a5dfd41b0c2bd49b8b2be81d508914cb43..148640567013b025a2db7cecf1da7855f4b7d476 100644
--- a/jsonnet/kube-prometheus.libsonnet
+++ b/jsonnet/kube-prometheus.libsonnet
@@ -35,6 +35,7 @@ local ruleFiles = {
             "alertmanager-main/alertmanager-main-secret.yaml":          alertmanager.config.new(namespace, alertmanagerConfig),
             "alertmanager-main/alertmanager-main-service-account.yaml": alertmanager.serviceAccount.new(namespace),
             "alertmanager-main/alertmanager-main-service.yaml":         alertmanager.service.new(namespace),
+            "alertmanager-main/alertmanager-main-service-monitor.yaml": alertmanager.serviceMonitor.new(namespace),
             "alertmanager-main/alertmanager-main.yaml":                 alertmanager.alertmanager.new(namespace),
 
             "kube-state-metrics/kube-state-metrics-cluster-role-binding.yaml": ksm.clusterRoleBinding.new(namespace),
@@ -44,17 +45,20 @@ local ruleFiles = {
             "kube-state-metrics/kube-state-metrics-role.yaml":                 ksm.role.new(namespace),
             "kube-state-metrics/kube-state-metrics-service-account.yaml":      ksm.serviceAccount.new(namespace),
             "kube-state-metrics/kube-state-metrics-service.yaml":              ksm.service.new(namespace),
+            "kube-state-metrics/kube-state-metrics-service-monitor.yaml":      ksm.serviceMonitor.new(namespace),
 
             "node-exporter/node-exporter-cluster-role-binding.yaml": nodeExporter.clusterRoleBinding.new(namespace),
             "node-exporter/node-exporter-cluster-role.yaml":         nodeExporter.clusterRole.new(),
             "node-exporter/node-exporter-daemonset.yaml":            nodeExporter.daemonset.new(namespace),
             "node-exporter/node-exporter-service-account.yaml":      nodeExporter.serviceAccount.new(namespace),
             "node-exporter/node-exporter-service.yaml":              nodeExporter.service.new(namespace),
+            "node-exporter/node-exporter-service-monitor.yaml":      nodeExporter.serviceMonitor.new(namespace),
 
             "prometheus-operator/prometheus-operator-cluster-role-binding.yaml": po.clusterRoleBinding.new(namespace),
             "prometheus-operator/prometheus-operator-cluster-role.yaml":         po.clusterRole.new(),
             "prometheus-operator/prometheus-operator-deployment.yaml":           po.deployment.new(namespace),
             "prometheus-operator/prometheus-operator-service.yaml":              po.service.new(namespace),
+            "prometheus-operator/prometheus-operator-service-monitor.yaml":      po.serviceMonitor.new(namespace),
             "prometheus-operator/prometheus-operator-service-account.yaml":      po.serviceAccount.new(namespace),
 
             "prometheus-k8s/prometheus-k8s-cluster-role-binding.yaml":                    prometheus.clusterRoleBinding.new(namespace),
@@ -71,15 +75,11 @@ local ruleFiles = {
             "prometheus-k8s/prometheus-k8s-role-namespace.yaml":                          prometheus.roleNamespace.new(namespace),
             "prometheus-k8s/prometheus-k8s-role-kube-system.yaml":                        prometheus.roleKubeSystem.new(),
             "prometheus-k8s/prometheus-k8s-role-default.yaml":                            prometheus.roleDefault.new(),
-            "prometheus-k8s/prometheus-k8s-service-monitor-alertmanager.yaml":            prometheus.serviceMonitorAlertmanager.new(namespace),
             "prometheus-k8s/prometheus-k8s-service-monitor-apiserver.yaml":               prometheus.serviceMonitorApiserver.new(namespace),
             "prometheus-k8s/prometheus-k8s-service-monitor-coredns.yaml":                 prometheus.serviceMonitorCoreDNS.new(namespace),
             "prometheus-k8s/prometheus-k8s-service-monitor-kube-controller-manager.yaml": prometheus.serviceMonitorControllerManager.new(namespace),
             "prometheus-k8s/prometheus-k8s-service-monitor-kube-scheduler.yaml":          prometheus.serviceMonitorScheduler.new(namespace),
-            "prometheus-k8s/prometheus-k8s-service-monitor-kube-state-metrics.yaml":      prometheus.serviceMonitorKubeStateMetrics.new(namespace),
             "prometheus-k8s/prometheus-k8s-service-monitor-kubelet.yaml":                 prometheus.serviceMonitorKubelet.new(namespace),
-            "prometheus-k8s/prometheus-k8s-service-monitor-node-exporter.yaml":           prometheus.serviceMonitorNodeExporter.new(namespace),
-            "prometheus-k8s/prometheus-k8s-service-monitor-prometheus-operator.yaml":     prometheus.serviceMonitorPrometheusOperator.new(namespace),
             "prometheus-k8s/prometheus-k8s-service-monitor-prometheus.yaml":              prometheus.serviceMonitorPrometheus.new(namespace),
         }
 }
diff --git a/jsonnet/prometheus/prometheus-k8s-service-monitor-kube-state-metrics.libsonnet b/jsonnet/kube-state-metrics/kube-state-metrics-service-monitor.libsonnet
similarity index 100%
rename from jsonnet/prometheus/prometheus-k8s-service-monitor-kube-state-metrics.libsonnet
rename to jsonnet/kube-state-metrics/kube-state-metrics-service-monitor.libsonnet
diff --git a/jsonnet/kube-state-metrics/kube-state-metrics.libsonnet b/jsonnet/kube-state-metrics/kube-state-metrics.libsonnet
index 3f9b8ba272432aebe05b57928fb0c99a5aafe746..d82765f66db77546305d1dab9e00ec3b600795de 100644
--- a/jsonnet/kube-state-metrics/kube-state-metrics.libsonnet
+++ b/jsonnet/kube-state-metrics/kube-state-metrics.libsonnet
@@ -6,4 +6,5 @@
     role:: import "kube-state-metrics-role.libsonnet",
     serviceAccount:: import "kube-state-metrics-service-account.libsonnet",
     service:: import "kube-state-metrics-service.libsonnet",
+    serviceMonitor:: import "kube-state-metrics-service-monitor.libsonnet",
 }
diff --git a/jsonnet/prometheus/prometheus-k8s-service-monitor-node-exporter.libsonnet b/jsonnet/node-exporter/node-exporter-service-monitor.libsonnet
similarity index 100%
rename from jsonnet/prometheus/prometheus-k8s-service-monitor-node-exporter.libsonnet
rename to jsonnet/node-exporter/node-exporter-service-monitor.libsonnet
diff --git a/jsonnet/node-exporter/node-exporter.libsonnet b/jsonnet/node-exporter/node-exporter.libsonnet
index 57e67911c336f85f4eb74d5ee09e9fd0b0f5d00b..5438f0014215ac0cf819d89cf98c1fb13ed4514f 100644
--- a/jsonnet/node-exporter/node-exporter.libsonnet
+++ b/jsonnet/node-exporter/node-exporter.libsonnet
@@ -4,4 +4,5 @@
     daemonset:: import "node-exporter-daemonset.libsonnet",
     serviceAccount:: import "node-exporter-service-account.libsonnet",
     service:: import "node-exporter-service.libsonnet",
+    serviceMonitor:: import "node-exporter-service-monitor.libsonnet",
 }
diff --git a/jsonnet/prometheus/prometheus-k8s-service-monitor-prometheus-operator.libsonnet b/jsonnet/prometheus-operator/prometheus-operator-service-monitor.libsonnet
similarity index 100%
rename from jsonnet/prometheus/prometheus-k8s-service-monitor-prometheus-operator.libsonnet
rename to jsonnet/prometheus-operator/prometheus-operator-service-monitor.libsonnet
diff --git a/jsonnet/prometheus-operator/prometheus-operator.libsonnet b/jsonnet/prometheus-operator/prometheus-operator.libsonnet
index 849acbbfd2ee122bba530b7c4eeb58e020058890..3659250d091f8a66eef66203f24d7424dd36e731 100644
--- a/jsonnet/prometheus-operator/prometheus-operator.libsonnet
+++ b/jsonnet/prometheus-operator/prometheus-operator.libsonnet
@@ -1,7 +1,8 @@
 {
-  clusterRoleBinding:: import "prometheus-operator-cluster-role-binding.libsonnet",
-  clusterRole:: import "prometheus-operator-cluster-role.libsonnet",
-  deployment:: import "prometheus-operator-deployment.libsonnet",
-  serviceAccount:: import "prometheus-operator-service-account.libsonnet",
-  service:: import "prometheus-operator-service.libsonnet",
+    clusterRoleBinding:: import "prometheus-operator-cluster-role-binding.libsonnet",
+    clusterRole:: import "prometheus-operator-cluster-role.libsonnet",
+    deployment:: import "prometheus-operator-deployment.libsonnet",
+    serviceAccount:: import "prometheus-operator-service-account.libsonnet",
+    service:: import "prometheus-operator-service.libsonnet",
+    serviceMonitor:: import "prometheus-operator-service-monitor.libsonnet",
 }
diff --git a/jsonnet/prometheus/prometheus.libsonnet b/jsonnet/prometheus/prometheus.libsonnet
index 99fb9f541ab5a6b8f7ccb72b6c1af96c3da48f0b..1ba4f55d887441142329ecd5ac11c3d5b39ee74c 100644
--- a/jsonnet/prometheus/prometheus.libsonnet
+++ b/jsonnet/prometheus/prometheus.libsonnet
@@ -11,15 +11,11 @@
     roleDefault:: import "prometheus-k8s-role-default.libsonnet",
     rules:: import "prometheus-k8s-rules.libsonnet",
     serviceAccount:: import "prometheus-k8s-service-account.libsonnet",
-    serviceMonitorAlertmanager:: import "prometheus-k8s-service-monitor-alertmanager.libsonnet",
     serviceMonitorApiserver:: import "prometheus-k8s-service-monitor-apiserver.libsonnet",
     serviceMonitorCoreDNS:: import "prometheus-k8s-service-monitor-coredns.libsonnet",
     serviceMonitorControllerManager:: import "prometheus-k8s-service-monitor-kube-controller-manager.libsonnet",
     serviceMonitorScheduler:: import "prometheus-k8s-service-monitor-kube-scheduler.libsonnet",
-    serviceMonitorKubeStateMetrics:: import "prometheus-k8s-service-monitor-kube-state-metrics.libsonnet",
     serviceMonitorKubelet:: import "prometheus-k8s-service-monitor-kubelet.libsonnet",
-    serviceMonitorNodeExporter:: import "prometheus-k8s-service-monitor-node-exporter.libsonnet",
-    serviceMonitorPrometheusOperator:: import "prometheus-k8s-service-monitor-prometheus-operator.libsonnet",
     serviceMonitorPrometheus:: import "prometheus-k8s-service-monitor-prometheus.libsonnet",
     service:: import "prometheus-k8s-service.libsonnet",
     prometheus:: import "prometheus-k8s.libsonnet",
diff --git a/manifests/prometheus-k8s/prometheus-k8s-service-monitor-alertmanager.yaml b/manifests/alertmanager-main/alertmanager-main-service-monitor.yaml
similarity index 100%
rename from manifests/prometheus-k8s/prometheus-k8s-service-monitor-alertmanager.yaml
rename to manifests/alertmanager-main/alertmanager-main-service-monitor.yaml
diff --git a/manifests/prometheus-k8s/prometheus-k8s-service-monitor-kube-state-metrics.yaml b/manifests/kube-state-metrics/kube-state-metrics-service-monitor.yaml
similarity index 100%
rename from manifests/prometheus-k8s/prometheus-k8s-service-monitor-kube-state-metrics.yaml
rename to manifests/kube-state-metrics/kube-state-metrics-service-monitor.yaml
diff --git a/manifests/prometheus-k8s/prometheus-k8s-service-monitor-node-exporter.yaml b/manifests/node-exporter/node-exporter-service-monitor.yaml
similarity index 100%
rename from manifests/prometheus-k8s/prometheus-k8s-service-monitor-node-exporter.yaml
rename to manifests/node-exporter/node-exporter-service-monitor.yaml
diff --git a/manifests/prometheus-k8s/prometheus-k8s-service-monitor-prometheus-operator.yaml b/manifests/prometheus-operator/prometheus-operator-service-monitor.yaml
similarity index 100%
rename from manifests/prometheus-k8s/prometheus-k8s-service-monitor-prometheus-operator.yaml
rename to manifests/prometheus-operator/prometheus-operator-service-monitor.yaml