diff --git a/src/main/java/com/googlesource/gerrit/plugins/metricsreporters/GerritGraphiteReporter.java b/src/main/java/com/googlesource/gerrit/plugins/metricsreporters/GerritGraphiteReporter.java
index 59796cf..c220597 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/metricsreporters/GerritGraphiteReporter.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/metricsreporters/GerritGraphiteReporter.java
@@ -14,6 +14,7 @@
 package com.googlesource.gerrit.plugins.metricsreporters;
 
 import static com.codahale.metrics.MetricRegistry.name;
+import static java.util.stream.Collectors.toList;
 
 import com.codahale.metrics.MetricFilter;
 import com.codahale.metrics.MetricRegistry;
@@ -28,7 +29,11 @@
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.net.UnknownHostException;
+import java.util.Arrays;
+import java.util.List;
 import java.util.concurrent.TimeUnit;
+import java.util.function.Predicate;
+import java.util.regex.Pattern;
 import org.eclipse.jgit.lib.Config;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -43,6 +48,7 @@
   private static final String KEY_PORT = "port";
   private static final String KEY_PREFIX = "prefix";
   private static final String KEY_RATE = "rate";
+  private static final String KEY_EXCLUDE = "excludeMetrics";
   private static final int DEFAULT_PORT = 2003;
   private static final String DEFAULT_PREFIX = "gerrit";
   private static final TimeUnit DEFAULT_RATE_UNIT = TimeUnit.SECONDS;
@@ -57,6 +63,9 @@
     Config config = configFactory.getGlobalPluginConfig(pluginName);
     String host = config.getString(SECTION_GRAPHITE, null, KEY_HOST);
 
+    MetricFilter exclusionFilter =
+        buildExclusionFilter(config.getStringList(SECTION_GRAPHITE, null, KEY_EXCLUDE));
+
     if (host != null) {
       int port;
       try {
@@ -100,7 +109,7 @@
               .convertRatesTo(TimeUnit.MINUTES)
               .convertDurationsTo(TimeUnit.MILLISECONDS)
               .prefixedWith(prefix)
-              .filter(MetricFilter.ALL)
+              .filter(exclusionFilter)
               .build(new Graphite(new InetSocketAddress(host, port)));
     } else {
       log.warn("No hostname configured; not reporting to Graphite");
@@ -109,6 +118,14 @@
     }
   }
 
+  private MetricFilter buildExclusionFilter(String[] exclusionList) {
+    final List<Pattern> excludedMetricPatterns =
+        Arrays.stream(exclusionList).map(Pattern::compile).collect(toList());
+    Predicate<String> filter =
+        s -> excludedMetricPatterns.stream().anyMatch(e -> e.matcher(s).matches());
+    return (s, metric) -> !filter.test(s);
+  }
+
   @Override
   public void start() {
     if (graphiteReporter != null) {
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md
index b1f8e71..a4fabed 100644
--- a/src/main/resources/Documentation/config.md
+++ b/src/main/resources/Documentation/config.md
@@ -23,3 +23,28 @@
 	units such as 'm', 's', 'ms', etc, but will be converted
 	to seconds. The lowest supported rate is `1 s`.
 	Defaults to `60 s`.
+
+graphite.excludeMetrics
+:	Regex pattern used to exclude metrics from the report.
+
+	The matching is done against the Gerrit metrics names as documented on
+	['Metrics'](@URL@Documentation/metrics.html). The pattern matching is done
+	internally using `regex.Matcher.matches()` and can match anywhere (not
+    necessarly starting at the beginning of the metric name)
+
+    By default no metric is excluded.
+
+	For examples:
+
+	To exclude all metrics matching `cache` at some place in their key, use:
+    `excludeMetrics = cache.*`
+
+    To exclude multiple metrics:
+	```
+    [graphite]
+        excludeMetrics = ^http/server/rest_api/.*
+        excludeMetrics = ^license/cla_check_count
+        excludeMetrics = ^plugin/latency/.*
+        excludeMetrics = ^reviewer_suggestion/.*
+        excludeMetrics = ^sequence/next_id_latency.*
+    ```
