diff --git a/config.yaml b/config.yaml
index a486c4ea83cf8e84832b058362165567912fa810..5cf2da3bb580f7b7e3649089990b77dc302c25cc 100644
--- a/config.yaml
+++ b/config.yaml
@@ -255,3 +255,16 @@ options:
     description: |
       When set the content is written to /etc/ceilometer/pipeline.yaml, by
       default the package's file is used.
+  polling-interval:
+    type: int
+    default: 300
+    description: |
+      Number of seconds between Ceilometer central agent pollster collections.
+      This setting only takes effect from Queens onwards.
+  enable-all-pollsters:
+    type: boolean
+    default: False
+    description: |
+      From Pike onwards, the default ceilometer pollster collection runs a
+      limited set of pollsters.  Enable this to run all the available pollsters.
+      This setting only takes effect from Queens onwards.
diff --git a/lib/ceilometer_contexts.py b/lib/ceilometer_contexts.py
index 9023c92be4b8273339f6eedb8cd9f57dc7cdb84b..01f73bd7416c3e6a00648a811fe862ea242b6f80 100644
--- a/lib/ceilometer_contexts.py
+++ b/lib/ceilometer_contexts.py
@@ -106,6 +106,8 @@ class CeilometerContext(OSContextGenerator):
             'metering_secret': get_shared_secret(),
             'metering_time_to_live': int(config('metering-time-to-live')),
             'event_time_to_live': int(config('event-time-to-live')),
+            'polling_interval': int(config('polling-interval')),
+            'enable_all_pollsters': config('enable-all-pollsters'),
         }
         return ctxt
 
diff --git a/lib/ceilometer_utils.py b/lib/ceilometer_utils.py
index e9a12f9aa218492b90313291e2e207451303834e..838ffe87de7ebf825f5738afb81cb0ea29e38843 100644
--- a/lib/ceilometer_utils.py
+++ b/lib/ceilometer_utils.py
@@ -71,6 +71,7 @@ HAPROXY_CONF = '/etc/haproxy/haproxy.cfg'
 CEILOMETER_CONF_DIR = "/etc/ceilometer"
 CEILOMETER_CONF = "%s/ceilometer.conf" % CEILOMETER_CONF_DIR
 CEILOMETER_PIPELINE_YAML = "%s/pipeline.yaml" % CEILOMETER_CONF_DIR
+POLLING_CONF = "%s/polling.yaml" % CEILOMETER_CONF_DIR
 CEILOMETER_API_SYSTEMD_CONF = (
     '/etc/systemd/system/ceilometer-api.service.d/override.conf'
 )
@@ -160,6 +161,11 @@ QUEENS_CONFIG_FILES = OrderedDict([
             AMQPListenersContext(ssl_dir=CEILOMETER_CONF_DIR)],
         'services': QUEENS_SERVICES
     }),
+    (POLLING_CONF, {
+        'hook_contexts': [
+            CeilometerContext()],
+        'services': QUEENS_SERVICES
+    }),
 ])
 
 CONFIG_FILES = OrderedDict([
diff --git a/templates/polling.yaml b/templates/polling.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..5fb8d730b9a592dce666d5e3da40e0e071d97355
--- /dev/null
+++ b/templates/polling.yaml
@@ -0,0 +1,31 @@
+---
+sources:
+  - name: juju_pollsters
+    interval: {{ polling_interval }}
+    meters:
+{%- if enable_all_pollsters %}
+      - "*"
+{%- else %}
+      - cpu
+      - cpu_l3_cache
+      - memory.usage
+      - network.incoming.bytes
+      - network.incoming.packets
+      - network.outgoing.bytes
+      - network.outgoing.packets
+      - disk.device.read.bytes
+      - disk.device.read.requests
+      - disk.device.write.bytes
+      - disk.device.write.requests
+      - hardware.cpu.util
+      - hardware.memory.used
+      - hardware.memory.total
+      - hardware.memory.buffer
+      - hardware.memory.cached
+      - hardware.memory.swap.avail
+      - hardware.memory.swap.total
+      - hardware.system_stats.io.outgoing.blocks
+      - hardware.system_stats.io.incoming.blocks
+      - hardware.network.ip.incoming.datagrams
+      - hardware.network.ip.outgoing.datagrams
+{%- endif %}
diff --git a/unit_tests/test_ceilometer_contexts.py b/unit_tests/test_ceilometer_contexts.py
index d9c41ae2b07bb8f5cf16881aa77297db76a3b03c..e70a65eb12946b9ecdc5fb578e2a17cc43312ce1 100644
--- a/unit_tests/test_ceilometer_contexts.py
+++ b/unit_tests/test_ceilometer_contexts.py
@@ -131,6 +131,8 @@ class CeilometerContextsTest(CharmTestCase):
             'metering_secret': 'mysecret',
             'metering_time_to_live': -1,
             'event_time_to_live': -1,
+            'polling_interval': 300,
+            'enable_all_pollsters': False,
         })
 
     @patch.object(utils, 'get_shared_secret')
@@ -144,10 +146,40 @@ class CeilometerContextsTest(CharmTestCase):
             'metering_secret': 'mysecret',
             'metering_time_to_live': 7776000,
             'event_time_to_live': 7776000,
+            'polling_interval': 300,
+            'enable_all_pollsters': False,
         })
         self.assertTrue(type(context['metering_time_to_live']) is int)
         self.assertTrue(type(context['event_time_to_live']) is int)
 
+    @patch.object(utils, 'get_shared_secret')
+    def test_ceilometer_context_enable_all_pollsters(self, secret):
+        secret.return_value = 'mysecret'
+        self.test_config.set('enable-all-pollsters', True)
+        context = contexts.CeilometerContext()()
+        self.assertEqual(context, {
+            'port': 8777,
+            'metering_secret': 'mysecret',
+            'metering_time_to_live': -1,
+            'event_time_to_live': -1,
+            'polling_interval': 300,
+            'enable_all_pollsters': True,
+        })
+
+    @patch.object(utils, 'get_shared_secret')
+    def test_ceilometer_context_polling_interval(self, secret):
+        secret.return_value = 'mysecret'
+        self.test_config.set('polling-interval', 900)
+        context = contexts.CeilometerContext()()
+        self.assertEqual(context, {
+            'port': 8777,
+            'metering_secret': 'mysecret',
+            'metering_time_to_live': -1,
+            'event_time_to_live': -1,
+            'polling_interval': 900,
+            'enable_all_pollsters': False,
+        })
+
     def test_ceilometer_service_context(self):
         self.relation_ids.return_value = ['ceilometer-service:0']
         self.related_units.return_value = ['ceilometer/0']
diff --git a/unit_tests/test_ceilometer_utils.py b/unit_tests/test_ceilometer_utils.py
index 70b09228d9b0d2d88357cf9e94ac5fde1ca6106a..26b6d49bf1bd31b31b8d51b06aa0ae9b1334f7a8 100644
--- a/unit_tests/test_ceilometer_utils.py
+++ b/unit_tests/test_ceilometer_utils.py
@@ -176,6 +176,9 @@ class CeilometerUtilsTest(CharmTestCase):
             {'/etc/ceilometer/ceilometer.conf': [
                 'ceilometer-agent-central',
                 'ceilometer-agent-notification'],
+             '/etc/ceilometer/polling.yaml': [
+                'ceilometer-agent-central',
+                'ceilometer-agent-notification'],
              }
         )