diff --git a/charts/distributed-loki/Chart.yaml b/charts/distributed-loki/Chart.yaml
index 2b522c1..8a186c5 100644
--- a/charts/distributed-loki/Chart.yaml
+++ b/charts/distributed-loki/Chart.yaml
@@ -3,5 +3,5 @@ name: loki-distributed
 description: A Helm chart for Kubernetes
 type: application
 
-version: 0.0.10
+version: 0.0.11
 appVersion: 1.4.1
diff --git a/charts/distributed-loki/templates/consul/consul-servicemonitor.yaml b/charts/distributed-loki/templates/consul/consul-servicemonitor.yaml
new file mode 100644
index 0000000..9d69a83
--- /dev/null
+++ b/charts/distributed-loki/templates/consul/consul-servicemonitor.yaml
@@ -0,0 +1,33 @@
+{{- if .Values.serviceMonitor.enabled }}
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  name: {{ include "loki-helm.consul" . }}
+  labels: {{- include "loki-helm.labels" . | nindent 4 }}
+    app.kubernetes.io/component: consul
+    {{- if .Values.serviceMonitor.additionalLabels }}
+{{ toYaml .Values.serviceMonitor.additionalLabels | indent 4 }}
+    {{- end }}
+spec:
+  selector:
+    matchLabels: {{- include "loki-helm.selectorLabels" . | nindent 6 }}
+      app.kubernetes.io/component: consul
+  namespaceSelector:
+    matchNames:
+      - {{ .Release.Namespace | quote }}
+  endpoints:
+  - port: statsd-exporter-http-metrics
+    {{- if .Values.serviceMonitor.interval }}
+    interval: {{ .Values.serviceMonitor.interval }}
+    {{- end }}
+    {{- if .Values.serviceMonitor.scrapeTimeout }}
+    scrapeTimeout: {{ .Values.serviceMonitor.scrapeTimeout }}
+    {{- end }}
+  - port: consul-exporter-http-metrics
+    {{- if .Values.serviceMonitor.interval }}
+    interval: {{ .Values.serviceMonitor.interval }}
+    {{- end }}
+    {{- if .Values.serviceMonitor.scrapeTimeout }}
+    scrapeTimeout: {{ .Values.serviceMonitor.scrapeTimeout }}
+    {{- end }}
+{{- end }}
diff --git a/charts/distributed-loki/templates/distributor/distributor-servicemonitor.yaml b/charts/distributed-loki/templates/distributor/distributor-servicemonitor.yaml
new file mode 100644
index 0000000..70fd0a3
--- /dev/null
+++ b/charts/distributed-loki/templates/distributor/distributor-servicemonitor.yaml
@@ -0,0 +1,26 @@
+{{- if .Values.serviceMonitor.enabled }}
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  name: {{ include "loki-helm.distributor" . }}
+  labels: {{- include "loki-helm.labels" . | nindent 4 }}
+    app.kubernetes.io/component: distributor
+    {{- if .Values.serviceMonitor.additionalLabels }}
+{{ toYaml .Values.serviceMonitor.additionalLabels | indent 4 }}
+    {{- end }}
+spec:
+  selector:
+    matchLabels: {{- include "loki-helm.selectorLabels" . | nindent 6 }}
+      app.kubernetes.io/component: distributor
+  namespaceSelector:
+    matchNames:
+      - {{ .Release.Namespace | quote }}
+  endpoints:
+  - port: distributor-http-metrics
+    {{- if .Values.serviceMonitor.interval }}
+    interval: {{ .Values.serviceMonitor.interval }}
+    {{- end }}
+    {{- if .Values.serviceMonitor.scrapeTimeout }}
+    scrapeTimeout: {{ .Values.serviceMonitor.scrapeTimeout }}
+    {{- end }}
+{{- end }}
diff --git a/charts/distributed-loki/templates/ingester/ingester-servicemonitor.yaml b/charts/distributed-loki/templates/ingester/ingester-servicemonitor.yaml
new file mode 100644
index 0000000..c8a2376
--- /dev/null
+++ b/charts/distributed-loki/templates/ingester/ingester-servicemonitor.yaml
@@ -0,0 +1,26 @@
+{{- if .Values.serviceMonitor.enabled }}
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  name: {{ include "loki-helm.ingester" . }}
+  labels: {{- include "loki-helm.labels" . | nindent 4 }}
+    app.kubernetes.io/component: ingester
+    {{- if .Values.serviceMonitor.additionalLabels }}
+{{ toYaml .Values.serviceMonitor.additionalLabels | indent 4 }}
+    {{- end }}
+spec:
+  selector:
+    matchLabels: {{- include "loki-helm.selectorLabels" . | nindent 6 }}
+      app.kubernetes.io/component: ingester
+  namespaceSelector:
+    matchNames:
+      - {{ .Release.Namespace | quote }}
+  endpoints:
+  - port: ingester-http-metrics
+    {{- if .Values.serviceMonitor.interval }}
+    interval: {{ .Values.serviceMonitor.interval }}
+    {{- end }}
+    {{- if .Values.serviceMonitor.scrapeTimeout }}
+    scrapeTimeout: {{ .Values.serviceMonitor.scrapeTimeout }}
+    {{- end }}
+{{- end }}
diff --git a/charts/distributed-loki/templates/memcached-frontend/memcached-frontend-servicemonitor.yaml b/charts/distributed-loki/templates/memcached-frontend/memcached-frontend-servicemonitor.yaml
new file mode 100644
index 0000000..d6ffd0b
--- /dev/null
+++ b/charts/distributed-loki/templates/memcached-frontend/memcached-frontend-servicemonitor.yaml
@@ -0,0 +1,26 @@
+{{- if .Values.serviceMonitor.enabled }}
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  name: {{ include "loki-helm.memcached-frontend" . }}
+  labels: {{- include "loki-helm.labels" . | nindent 4 }}
+    app.kubernetes.io/component: memcached-frontend
+    {{- if .Values.serviceMonitor.additionalLabels }}
+{{ toYaml .Values.serviceMonitor.additionalLabels | indent 4 }}
+    {{- end }}
+spec:
+  selector:
+    matchLabels: {{- include "loki-helm.selectorLabels" . | nindent 6 }}
+      app.kubernetes.io/component: memcached-frontend
+  namespaceSelector:
+    matchNames:
+      - {{ .Release.Namespace | quote }}
+  endpoints:
+  - port: exporter-http-metrics
+    {{- if .Values.serviceMonitor.interval }}
+    interval: {{ .Values.serviceMonitor.interval }}
+    {{- end }}
+    {{- if .Values.serviceMonitor.scrapeTimeout }}
+    scrapeTimeout: {{ .Values.serviceMonitor.scrapeTimeout }}
+    {{- end }}
+{{- end }}
diff --git a/charts/distributed-loki/templates/memcached-index-queries/memcached-index-queries-servicemonitor.yaml b/charts/distributed-loki/templates/memcached-index-queries/memcached-index-queries-servicemonitor.yaml
new file mode 100644
index 0000000..7713fa4
--- /dev/null
+++ b/charts/distributed-loki/templates/memcached-index-queries/memcached-index-queries-servicemonitor.yaml
@@ -0,0 +1,26 @@
+{{- if .Values.serviceMonitor.enabled }}
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  name: {{ include "loki-helm.memcached-index-queries" . }}
+  labels: {{- include "loki-helm.labels" . | nindent 4 }}
+    app.kubernetes.io/component: memcached-index-queries
+    {{- if .Values.serviceMonitor.additionalLabels }}
+{{ toYaml .Values.serviceMonitor.additionalLabels | indent 4 }}
+    {{- end }}
+spec:
+  selector:
+    matchLabels: {{- include "loki-helm.selectorLabels" . | nindent 6 }}
+      app.kubernetes.io/component: memcached-index-queries
+  namespaceSelector:
+    matchNames:
+      - {{ .Release.Namespace | quote }}
+  endpoints:
+  - port: exporter-http-metrics
+    {{- if .Values.serviceMonitor.interval }}
+    interval: {{ .Values.serviceMonitor.interval }}
+    {{- end }}
+    {{- if .Values.serviceMonitor.scrapeTimeout }}
+    scrapeTimeout: {{ .Values.serviceMonitor.scrapeTimeout }}
+    {{- end }}
+{{- end }}
diff --git a/charts/distributed-loki/templates/memcached-index-writes/memcached-index-writes-servicemonitor.yaml b/charts/distributed-loki/templates/memcached-index-writes/memcached-index-writes-servicemonitor.yaml
new file mode 100644
index 0000000..574b613
--- /dev/null
+++ b/charts/distributed-loki/templates/memcached-index-writes/memcached-index-writes-servicemonitor.yaml
@@ -0,0 +1,26 @@
+{{- if .Values.serviceMonitor.enabled }}
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  name: {{ include "loki-helm.memcached-index-writes" . }}
+  labels: {{- include "loki-helm.labels" . | nindent 4 }}
+    app.kubernetes.io/component: memcached-index-writes
+    {{- if .Values.serviceMonitor.additionalLabels }}
+{{ toYaml .Values.serviceMonitor.additionalLabels | indent 4 }}
+    {{- end }}
+spec:
+  selector:
+    matchLabels: {{- include "loki-helm.selectorLabels" . | nindent 6 }}
+      app.kubernetes.io/component: memcached-index-writes
+  namespaceSelector:
+    matchNames:
+      - {{ .Release.Namespace | quote }}
+  endpoints:
+  - port: exporter-http-metrics
+    {{- if .Values.serviceMonitor.interval }}
+    interval: {{ .Values.serviceMonitor.interval }}
+    {{- end }}
+    {{- if .Values.serviceMonitor.scrapeTimeout }}
+    scrapeTimeout: {{ .Values.serviceMonitor.scrapeTimeout }}
+    {{- end }}
+{{- end }}
diff --git a/charts/distributed-loki/templates/memcached/memcached-servicemonitor.yaml b/charts/distributed-loki/templates/memcached/memcached-servicemonitor.yaml
new file mode 100644
index 0000000..9401a6e
--- /dev/null
+++ b/charts/distributed-loki/templates/memcached/memcached-servicemonitor.yaml
@@ -0,0 +1,26 @@
+{{- if .Values.serviceMonitor.enabled }}
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  name: {{ include "loki-helm.memcached" . }}
+  labels: {{- include "loki-helm.labels" . | nindent 4 }}
+    app.kubernetes.io/component: memcached
+    {{- if .Values.serviceMonitor.additionalLabels }}
+{{ toYaml .Values.serviceMonitor.additionalLabels | indent 4 }}
+    {{- end }}
+spec:
+  selector:
+    matchLabels: {{- include "loki-helm.selectorLabels" . | nindent 6 }}
+      app.kubernetes.io/component: memcached
+  namespaceSelector:
+    matchNames:
+      - {{ .Release.Namespace | quote }}
+  endpoints:
+  - port: exporter-http-metrics
+    {{- if .Values.serviceMonitor.interval }}
+    interval: {{ .Values.serviceMonitor.interval }}
+    {{- end }}
+    {{- if .Values.serviceMonitor.scrapeTimeout }}
+    scrapeTimeout: {{ .Values.serviceMonitor.scrapeTimeout }}
+    {{- end }}
+{{- end }}
diff --git a/charts/distributed-loki/templates/querier-frontend/querier-frontend-servicemonitor.yaml b/charts/distributed-loki/templates/querier-frontend/querier-frontend-servicemonitor.yaml
new file mode 100644
index 0000000..8b72c7e
--- /dev/null
+++ b/charts/distributed-loki/templates/querier-frontend/querier-frontend-servicemonitor.yaml
@@ -0,0 +1,26 @@
+{{- if .Values.serviceMonitor.enabled }}
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  name: {{ include "loki-helm.querier-frontend" . }}
+  labels: {{- include "loki-helm.labels" . | nindent 4 }}
+    app.kubernetes.io/component: querier-frontend
+    {{- if .Values.serviceMonitor.additionalLabels }}
+{{ toYaml .Values.serviceMonitor.additionalLabels | indent 4 }}
+    {{- end }}
+spec:
+  selector:
+    matchLabels: {{- include "loki-helm.selectorLabels" . | nindent 6 }}
+      app.kubernetes.io/component: querier-frontend
+  namespaceSelector:
+    matchNames:
+      - {{ .Release.Namespace | quote }}
+  endpoints:
+  - port: querier-frontend-http-metrics
+    {{- if .Values.serviceMonitor.interval }}
+    interval: {{ .Values.serviceMonitor.interval }}
+    {{- end }}
+    {{- if .Values.serviceMonitor.scrapeTimeout }}
+    scrapeTimeout: {{ .Values.serviceMonitor.scrapeTimeout }}
+    {{- end }}
+{{- end }}
diff --git a/charts/distributed-loki/templates/querier/querier-servicemonitor.yaml b/charts/distributed-loki/templates/querier/querier-servicemonitor.yaml
new file mode 100644
index 0000000..2c45fa4
--- /dev/null
+++ b/charts/distributed-loki/templates/querier/querier-servicemonitor.yaml
@@ -0,0 +1,26 @@
+{{- if .Values.serviceMonitor.enabled }}
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  name: {{ include "loki-helm.querier" . }}
+  labels: {{- include "loki-helm.labels" . | nindent 4 }}
+    app.kubernetes.io/component: querier
+    {{- if .Values.serviceMonitor.additionalLabels }}
+{{ toYaml .Values.serviceMonitor.additionalLabels | indent 4 }}
+    {{- end }}
+spec:
+  selector:
+    matchLabels: {{- include "loki-helm.selectorLabels" . | nindent 6 }}
+      app.kubernetes.io/component: querier
+  namespaceSelector:
+    matchNames:
+      - {{ .Release.Namespace | quote }}
+  endpoints:
+  - port: querier-http-metrics
+    {{- if .Values.serviceMonitor.interval }}
+    interval: {{ .Values.serviceMonitor.interval }}
+    {{- end }}
+    {{- if .Values.serviceMonitor.scrapeTimeout }}
+    scrapeTimeout: {{ .Values.serviceMonitor.scrapeTimeout }}
+    {{- end }}
+{{- end }}
diff --git a/charts/distributed-loki/templates/table-manager/table-manager-servicemonitor.yaml b/charts/distributed-loki/templates/table-manager/table-manager-servicemonitor.yaml
new file mode 100644
index 0000000..a66090e
--- /dev/null
+++ b/charts/distributed-loki/templates/table-manager/table-manager-servicemonitor.yaml
@@ -0,0 +1,26 @@
+{{- if .Values.serviceMonitor.enabled }}
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  name: {{ include "loki-helm.table-manager" . }}
+  labels: {{- include "loki-helm.labels" . | nindent 4 }}
+    app.kubernetes.io/component: table-manager
+    {{- if .Values.serviceMonitor.additionalLabels }}
+{{ toYaml .Values.serviceMonitor.additionalLabels | indent 4 }}
+    {{- end }}
+spec:
+  selector:
+    matchLabels: {{- include "loki-helm.selectorLabels" . | nindent 6 }}
+      app.kubernetes.io/component: table-manager
+  namespaceSelector:
+    matchNames:
+      - {{ .Release.Namespace | quote }}
+  endpoints:
+  - port: table-manager-http-metrics
+    {{- if .Values.serviceMonitor.interval }}
+    interval: {{ .Values.serviceMonitor.interval }}
+    {{- end }}
+    {{- if .Values.serviceMonitor.scrapeTimeout }}
+    scrapeTimeout: {{ .Values.serviceMonitor.scrapeTimeout }}
+    {{- end }}
+{{- end }}
diff --git a/charts/distributed-loki/values.yaml b/charts/distributed-loki/values.yaml
index 3f9fbe8..5a00cf2 100644
--- a/charts/distributed-loki/values.yaml
+++ b/charts/distributed-loki/values.yaml
@@ -202,3 +202,13 @@ storage:
     storeUrl: loki-cassandra.monitoring.svc
     # storage.config.bucketName -- Name of your gcs bucket.
     bucketName: loki_distributed
+
+serviceMonitor:
+  # serviceMonitor.enabled -- Enable service monitors for Loki deployment.
+  enabled: false
+  # serviceMonitor.interval -- Set interval scraping the targets.
+  interval: ""
+  # serviceMonitor.additionalLabels -- Set additional labels for the service monitor.
+  additionalLabels: {}
+  # serviceMonitor.scrapeTimeout -- Set time out for scraping.
+  # scrapeTimeout: 10s