Add alarms
diff --git a/haproxy/meta/heka.yml b/haproxy/meta/heka.yml
new file mode 100644
index 0000000..d58bb9b
--- /dev/null
+++ b/haproxy/meta/heka.yml
@@ -0,0 +1,1099 @@
+{%- from "haproxy/map.jinja" import proxy with context %}
+{%- if proxy.enabled and proxy.listen is defined %}
+
+metric_collector:
+  trigger:
+{%- if proxy.listen.glance_registry is defined %}
+    glance_registry_api_backends_all_down:
+      description: 'All API backends are down for glance-registry-api'
+      severity: down
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: glance-registry-api
+          state: up
+        relational_operator: '=='
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+    glance_registry_api_backends_majority_down:
+      description: 'Less than 50% of backends are up for glance-registry-api'
+      severity: critical
+      rules:
+      - metric: haproxy_backend_servers_percent
+        field:
+          backend: glance-registry-api
+          state: up
+        relational_operator: '<='
+        threshold: 50
+        window: 60
+        periods: 0
+        function: last
+    glance_registry_api_backends_one_down:
+      description: 'At least one API backend is down for glance-registry-api'
+      severity: warning
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: glance-registry-api
+          state: down
+        relational_operator: '>'
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+{%- endif %}
+{%- if proxy.listen.nova_openstack_api is defined %}
+    nova_api_backends_all_down:
+      description: 'All API backends are down for nova-api'
+      severity: down
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: nova-api
+          state: up
+        relational_operator: '=='
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+    nova_api_backends_majority_down:
+      description: 'Less than 50% of backends are up for nova-api'
+      severity: critical
+      rules:
+      - metric: haproxy_backend_servers_percent
+        field:
+          backend: nova-api
+          state: up
+        relational_operator: '<='
+        threshold: 50
+        window: 60
+        periods: 0
+        function: last
+    nova_api_backends_one_down:
+      description: 'At least one API backend is down for nova-api'
+      severity: warning
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: nova-api
+          state: down
+        relational_operator: '>'
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+    nova_api_http_errors:
+      description: 'Too many 5xx HTTP errors have been detected on nova-api'
+      severity: warning
+      rules:
+      - metric: haproxy_backend_response_5xx
+        field:
+          backend: nova-api
+        relational_operator: '>'
+        threshold: 0
+        window: 60
+        periods: 1
+        function: diff
+{%- endif %}
+{%- if proxy.listen.cinder_api is defined %}
+    cinder_api_backends_all_down:
+      description: 'All API backends are down for cinder-api'
+      severity: down
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: cinder-api
+          state: up
+        relational_operator: '=='
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+    cinder_api_backends_majority_down:
+      description: 'Less than 50% of backends are up for cinder-api'
+      severity: critical
+      rules:
+      - metric: haproxy_backend_servers_percent
+        field:
+          backend: cinder-api
+          state: up
+        relational_operator: '<='
+        threshold: 50
+        window: 60
+        periods: 0
+        function: last
+    cinder_api_backends_one_down:
+      description: 'At least one API backend is down for cinder-api'
+      severity: warning
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: cinder-api
+          state: down
+        relational_operator: '>'
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+    cinder_api_http_errors:
+      description: 'Too many 5xx HTTP errors have been detected on cinder-api'
+      severity: warning
+      rules:
+      - metric: haproxy_backend_response_5xx
+        field:
+          backend: cinder-api
+        relational_operator: '>'
+        threshold: 0
+        window: 60
+        periods: 1
+        function: diff
+{%- endif %}
+{%- if proxy.listen.heat_api_cfn is defined %}
+    heat_cfn_api_backends_all_down:
+      description: 'All API backends are down for heat-cfn-api'
+      severity: down
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: heat-cfn-api
+          state: up
+        relational_operator: '=='
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+    heat_cfn_api_backends_majority_down:
+      description: 'Less than 50% of backends are up for heat-cfn-api'
+      severity: critical
+      rules:
+      - metric: haproxy_backend_servers_percent
+        field:
+          backend: heat-cfn-api
+          state: up
+        relational_operator: '<='
+        threshold: 50
+        window: 60
+        periods: 0
+        function: last
+    heat_cfn_api_backends_one_down:
+      description: 'At least one API backend is down for heat-cfn-api'
+      severity: warning
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: heat-cfn-api
+          state: down
+        relational_operator: '>'
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+{%- endif %}
+{%- if proxy.listen.horizon_web is defined %}
+    horizon_web_api_backends_all_down:
+      description: 'All API backends are down for horizon-web'
+      severity: down
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: 'horizon-web || horizon-https'
+          state: up
+        relational_operator: '=='
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+    horizon_web_api_backends_majority_down:
+      description: 'Less than 50% of backends are up for horizon-web'
+      severity: critical
+      rules:
+      - metric: haproxy_backend_servers_percent
+        field:
+          backend: 'horizon-web || horizon-https'
+          state: up
+        relational_operator: '<='
+        threshold: 50
+        window: 60
+        periods: 0
+        function: last
+    horizon_web_api_backends_one_down:
+      description: 'At least one API backend is down for horizon-web'
+      severity: warning
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: 'horizon-web || horizon-https'
+          state: down
+        relational_operator: '>'
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+    horizon_web_api_http_errors:
+      description: 'Too many 5xx HTTP errors have been detected on horizon-web-api'
+      severity: warning
+      rules:
+      - metric: haproxy_backend_response_5xx
+        field:
+          backend: 'horizon-web || horizon-https'
+        relational_operator: '>'
+        threshold: 0
+        window: 60
+        periods: 1
+        function: diff
+{%- endif %}
+{%- if proxy.listen.nova_novncproxy_websocket is defined %}
+    nova_novncproxy_websocket_api_backends_all_down:
+      description: 'All API backends are down for nova-novncproxy-websocket'
+      severity: down
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: nova-novncproxy-websocket
+          state: up
+        relational_operator: '=='
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+    nova_novncproxy_websocket_api_backends_majority_down:
+      description: 'Less than 50% of backends are up for nova-novncproxy-websocket'
+      severity: critical
+      rules:
+      - metric: haproxy_backend_servers_percent
+        field:
+          backend: nova-novncproxy-websocket
+          state: up
+        relational_operator: '<='
+        threshold: 50
+        window: 60
+        periods: 0
+        function: last
+    nova_novncproxy_websocket_api_backends_one_down:
+      description: 'At least one API backend is down for nova-novncproxy-websocket'
+      severity: warning
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: nova-novncproxy-websocket
+          state: down
+        relational_operator: '>'
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+{%- endif %}
+{%- if proxy.listen.heat_api is defined %}
+    heat_api_backends_all_down:
+      description: 'All API backends are down for heat-api'
+      severity: down
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: heat-api
+          state: up
+        relational_operator: '=='
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+    heat_api_backends_majority_down:
+      description: 'Less than 50% of backends are up for heat-api'
+      severity: critical
+      rules:
+      - metric: haproxy_backend_servers_percent
+        field:
+          backend: heat-api
+          state: up
+        relational_operator: '<='
+        threshold: 50
+        window: 60
+        periods: 0
+        function: last
+    heat_api_backends_one_down:
+      description: 'At least one API backend is down for heat-api'
+      severity: warning
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: heat-api
+          state: down
+        relational_operator: '>'
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+    heat_api_http_errors:
+      description: 'Too many 5xx HTTP errors have been detected on heat-api'
+      severity: warning
+      rules:
+      - metric: haproxy_backend_response_5xx
+        field:
+          backend: heat-api
+        relational_operator: '>'
+        threshold: 0
+        window: 60
+        periods: 1
+        function: diff
+{%- endif %}
+{%- if proxy.listen.keystone_public is defined %}
+    keystone_public_api_backends_all_down:
+      description: 'All API backends are down for keystone-public-api'
+      severity: down
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: keystone-public-api
+          state: up
+        relational_operator: '=='
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+    keystone_public_api_backends_majority_down:
+      description: 'Less than 50% of backends are up for keystone-public-api'
+      severity: critical
+      rules:
+      - metric: haproxy_backend_servers_percent
+        field:
+          backend: keystone-public-api
+          state: up
+        relational_operator: '<='
+        threshold: 50
+        window: 60
+        periods: 0
+        function: last
+    keystone_public_api_backends_one_down:
+      description: 'At least one API backend is down for keystone-public-api'
+      severity: warning
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: keystone-public-api
+          state: down
+        relational_operator: '>'
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+    keystone_public_api_http_errors:
+      description: 'Too many 5xx HTTP errors have been detected on keystone-public-api'
+      severity: warning
+      rules:
+      - metric: haproxy_backend_response_5xx
+        field:
+          backend: keystone-public-api
+        relational_operator: '>'
+        threshold: 0
+        window: 60
+        periods: 1
+        function: diff
+{%- endif %}
+{%- if proxy.listen.heat_api_cloudwatch is defined %}
+    heat_cloudwatch_api_backends_all_down:
+      description: 'All API backends are down for heat-cloudwatch-api'
+      severity: down
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: heat-cloudwatch-api
+          state: up
+        relational_operator: '=='
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+    heat_cloudwatch_api_backends_majority_down:
+      description: 'Less than 50% of backends are up for heat-cloudwatch-api'
+      severity: critical
+      rules:
+      - metric: haproxy_backend_servers_percent
+        field:
+          backend: heat-cloudwatch-api
+          state: up
+        relational_operator: '<='
+        threshold: 50
+        window: 60
+        periods: 0
+        function: last
+    heat_cloudwatch_api_backends_one_down:
+      description: 'At least one API backend is down for heat-cloudwatch-api'
+      severity: warning
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: heat-cloudwatch-api
+          state: down
+        relational_operator: '>'
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+{%- endif %}
+{%- if proxy.listen.nova_metadata is defined %}
+    nova_metadata_api_backends_all_down:
+      description: 'All API backends are down for nova-metadata-api'
+      severity: down
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: nova-metadata-api
+          state: up
+        relational_operator: '=='
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+    nova_metadata_api_backends_majority_down:
+      description: 'Less than 50% of backends are up for nova-metadata-api'
+      severity: critical
+      rules:
+      - metric: haproxy_backend_servers_percent
+        field:
+          backend: nova-metadata-api
+          state: up
+        relational_operator: '<='
+        threshold: 50
+        window: 60
+        periods: 0
+        function: last
+    nova_metadata_api_backends_one_down:
+      description: 'At least one API backend is down for nova-metadata-api'
+      severity: warning
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: nova-metadata-api
+          state: down
+        relational_operator: '>'
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+{%- endif %}
+{%- if proxy.listen.mysql_cluster is defined %}
+    mysqld_tcp_api_backends_all_down:
+      description: 'All API backends are down for mysqld-tcp'
+      severity: down
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: mysqld-tcp
+          state: up
+        relational_operator: '=='
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+    mysqld_tcp_api_backends_majority_down:
+      description: 'Less than 50% of backends are up for mysqld-tcp'
+      severity: critical
+      rules:
+      - metric: haproxy_backend_servers_percent
+        field:
+          backend: mysqld-tcp
+          state: up
+        relational_operator: '<='
+        threshold: 50
+        window: 60
+        periods: 0
+        function: last
+    mysqld_tcp_api_backends_one_down:
+      description: 'At least one API backend is down for mysqld-tcp'
+      severity: warning
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: mysqld-tcp
+          state: down
+        relational_operator: '>'
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+{%- endif %}
+{%- if proxy.listen.keystone_admin is defined %}
+    keystone_admin_api_backends_all_down:
+      description: 'All API backends are down for keystone-admin-api'
+      severity: down
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: keystone-admin-api
+          state: up
+        relational_operator: '=='
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+    keystone_admin_api_backends_majority_down:
+      description: 'Less than 50% of backends are up for keystone-admin-api'
+      severity: critical
+      rules:
+      - metric: haproxy_backend_servers_percent
+        field:
+          backend: keystone-admin-api
+          state: up
+        relational_operator: '<='
+        threshold: 50
+        window: 60
+        periods: 0
+        function: last
+    keystone_admin_api_backends_one_down:
+      description: 'At least one API backend is down for keystone-admin-api'
+      severity: warning
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: keystone-admin-api
+          state: down
+        relational_operator: '>'
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+    keystone_admin_api_http_errors:
+      description: 'Too many 5xx HTTP errors have been detected on keystone-admin-api'
+      severity: warning
+      rules:
+      - metric: haproxy_backend_response_5xx
+        field:
+          backend: keystone-admin-api
+        relational_operator: '>'
+        threshold: 0
+        window: 60
+        periods: 1
+        function: diff
+{%- endif %}
+{%- if proxy.listen.glance_api is defined %}
+    glance_api_backends_all_down:
+      description: 'All API backends are down for glance-api'
+      severity: down
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: glance-api
+          state: up
+        relational_operator: '=='
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+    glance_api_backends_majority_down:
+      description: 'Less than 50% of backends are up for glance-api'
+      severity: critical
+      rules:
+      - metric: haproxy_backend_servers_percent
+        field:
+          backend: glance-api
+          state: up
+        relational_operator: '<='
+        threshold: 50
+        window: 60
+        periods: 0
+        function: last
+    glance_api_backends_one_down:
+      description: 'At least one API backend is down for glance-api'
+      severity: warning
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: glance-api
+          state: down
+        relational_operator: '>'
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+    glance_api_http_errors:
+      description: 'Too many 5xx HTTP errors have been detected on glance-api'
+      severity: warning
+      rules:
+      - metric: haproxy_backend_response_5xx
+        field:
+          backend: glance-api
+        relational_operator: '>'
+        threshold: 0
+        window: 60
+        periods: 1
+        function: diff
+{%- endif %}
+{%- if proxy.listen.neutron_api is defined %}
+    neutron_api_backends_all_down:
+      description: 'All API backends are down for neutron-api'
+      severity: down
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: neutron-api
+          state: up
+        relational_operator: '=='
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+    neutron_api_backends_majority_down:
+      description: 'Less than 50% of backends are up for neutron-api'
+      severity: critical
+      rules:
+      - metric: haproxy_backend_servers_percent
+        field:
+          backend: neutron-api
+          state: up
+        relational_operator: '<='
+        threshold: 50
+        window: 60
+        periods: 0
+        function: last
+    neutron_api_backends_one_down:
+      description: 'At least one API backend is down for neutron-api'
+      severity: warning
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: neutron-api
+          state: down
+        relational_operator: '>'
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+    neutron_api_http_errors:
+      description: 'Too many 5xx HTTP errors have been detected on neutron-api'
+      severity: warning
+      rules:
+      - metric: haproxy_backend_response_5xx
+        field:
+          backend: neutron-api
+        relational_operator: '>'
+        threshold: 0
+        window: 60
+        periods: 1
+        function: diff
+{%- endif %}
+{%- if proxy.listen.swift_api is defined %}
+    swift_api_backends_all_down:
+      description: 'All API backends are down for swift-api'
+      severity: down
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: 'swift-api || object-storage'
+          state: up
+        relational_operator: '=='
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+    swift_api_backends_majority_down:
+      description: 'Less than 50% of backends are up for swift-api'
+      severity: critical
+      rules:
+      - metric: haproxy_backend_servers_percent
+        field:
+          backend: 'swift-api || object-storage'
+          state: up
+        relational_operator: '<='
+        threshold: 50
+        window: 60
+        periods: 0
+        function: last
+    swift_api_backends_one_down:
+      description: 'At least one API backend is down for swift-api'
+      severity: warning
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: 'swift-api || object-storage'
+          state: down
+        relational_operator: '>'
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+    swift_api_http_errors:
+      description: 'Too many 5xx HTTP errors have been detected on swift-api'
+      severity: warning
+      rules:
+      - metric: haproxy_backend_response_5xx
+        field:
+          backend: 'swift-api || object-storage'
+        relational_operator: '>'
+        threshold: 0
+        window: 60
+        periods: 1
+        function: diff
+{%- endif %}
+{%- if proxy.listen.ceilometer_api is defined %}
+    ceilometer_api_backends_all_down:
+      description: 'All API backends are down for ceilometer-api'
+      severity: down
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: ceilometer-api
+          state: up
+        relational_operator: '=='
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+    ceilometer_api_backends_majority_down:
+      description: 'Less than 50% of backends are up for ceilometer-api'
+      severity: critical
+      rules:
+      - metric: haproxy_backend_servers_percent
+        field:
+          backend: ceilometer-api
+          state: up
+        relational_operator: '<='
+        threshold: 50
+        window: 60
+        periods: 0
+        function: last
+    ceilometer_api_backends_one_down:
+      description: 'At least one API backend is down for ceilometer-api'
+      severity: warning
+      rules:
+      - metric: haproxy_backend_servers
+        field:
+          backend: ceilometer-api
+          state: down
+        relational_operator: '>'
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+{%- endif %}
+    haproxy_check:
+      description: 'HAProxy cannot be checked'
+      severity: down
+      rules:
+      - metric: haproxy_check
+        relational_operator: '=='
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+  alarm:
+{%- if proxy.listen.glance_registry is defined %}
+    glance_registry_api_backends:
+      triggers:
+      - glance_registry_api_backends_all_down
+      - glance_registry_api_backends_majority_down
+      - glance_registry_api_backends_one_down
+{%- endif %}
+{%- if proxy.listen.glance_api is defined %}
+    glance_api_backends:
+      triggers:
+      - glance_api_backends_all_down
+      - glance_api_backends_majority_down
+      - glance_api_backends_one_down
+      dimension:
+        service: glance-api
+    glance_api_http_errors:
+      triggers:
+      - glance_api_http_errors
+      dimension:
+        service: glance-api
+{%- endif %}
+{%- if proxy.listen.nova_openstack_api is defined %}
+    nova_api_backends:
+      triggers:
+      - nova_api_backends_all_down
+      - nova_api_backends_majority_down
+      - nova_api_backends_one_down
+      dimension:
+        service: nova-api
+    nova_api_http_errors:
+      triggers:
+      - nova_api_http_errors
+      dimension:
+        service: nova-api
+{%- endif %}
+{%- if proxy.listen.cinder_api is defined %}
+    cinder_api_backends:
+      triggers:
+      - cinder_api_backends_all_down
+      - cinder_api_backends_majority_down
+      - cinder_api_backends_one_down
+      dimension:
+        service: cinder-api
+    cinder_api_http_errors:
+      triggers:
+      - cinder_api_http_errors
+      dimension:
+        service: cinder-api
+{%- endif %}
+{%- if proxy.listen.heat_api_cfn is defined %}
+    heat_cfn_api_backends:
+      triggers:
+      - heat_cfn_api_backends_all_down
+      - heat_cfn_api_backends_majority_down
+      - heat_cfn_api_backends_one_down
+{%- endif %}
+{%- if proxy.listen.heat_api is defined %}
+    heat_api_backends:
+      triggers:
+      - heat_api_backends_all_down
+      - heat_api_backends_majority_down
+      - heat_api_backends_one_down
+      dimension:
+        service: heat-api
+    heat_api_http_errors:
+      triggers:
+      - heat_api_http_errors
+      dimension:
+        service: heat-api
+{%- endif %}
+{%- if proxy.listen.horizon_web is defined %}
+    horizon_web_api_backends:
+      triggers:
+      - horizon_web_api_backends_all_down
+      - horizon_web_api_backends_majority_down
+      - horizon_web_api_backends_one_down
+      dimension:
+        service: horizon-web-api
+    horizon_web_api_http_errors:
+      triggers:
+      - horizon_web_api_http_errors
+      dimension:
+        service: horizon-web-api
+{%- endif %}
+{%- if proxy.listen.nova_novncproxy_websocket is defined %}
+    nova_novncproxy_websocket_api_backends:
+      triggers:
+      - nova_novncproxy_websocket_api_backends_all_down
+      - nova_novncproxy_websocket_api_backends_majority_down
+      - nova_novncproxy_websocket_api_backends_one_down
+{%- endif %}
+{%- if proxy.listen.keystone_public is defined %}
+    keystone_public_api_backends:
+      triggers:
+      - keystone_public_api_backends_all_down
+      - keystone_public_api_backends_majority_down
+      - keystone_public_api_backends_one_down
+      dimension:
+        service: keystone-public-api
+    keystone_public_api_http_errors:
+      triggers:
+      - keystone_public_api_http_errors
+      dimension:
+        service: keystone-public-api
+{%- endif %}
+{%- if proxy.listen.heat_api_cloudwatch is defined %}
+    heat_cloudwatch_api_backends:
+      triggers:
+      - heat_cloudwatch_api_backends_all_down
+      - heat_cloudwatch_api_backends_majority_down
+      - heat_cloudwatch_api_backends_one_down
+{%- endif %}
+{%- if proxy.listen.nova_metadata is defined %}
+    nova_metadata_api_backends:
+      triggers:
+      - nova_metadata_api_backends_all_down
+      - nova_metadata_api_backends_majority_down
+      - nova_metadata_api_backends_one_down
+{%- endif %}
+{%- if proxy.listen.mysql_cluster is defined %}
+    mysqld_tcp_backends:
+      triggers:
+      - mysqld_tcp_api_backends_all_down
+      - mysqld_tcp_api_backends_majority_down
+      - mysqld_tcp_api_backends_one_down
+{%- endif %}
+{%- if proxy.listen.keystone_admin is defined %}
+    keystone_admin_api_backends:
+      triggers:
+      - keystone_admin_api_backends_all_down
+      - keystone_admin_api_backends_majority_down
+      - keystone_admin_api_backends_one_down
+      dimension:
+        service: keystone-admin-api
+    keystone_admin_api_http_errors:
+      triggers:
+      - keystone_admin_api_http_errors
+      dimension:
+        service: keystone-admin-api
+{%- endif %}
+{%- if proxy.listen.neutron_api is defined %}
+    neutron_api_backends:
+      triggers:
+      - neutron_api_backends_all_down
+      - neutron_api_backends_majority_down
+      - neutron_api_backends_one_down
+      dimension:
+        service: neutron-api
+    neutron_api_http_errors:
+      triggers:
+      - neutron_api_http_errors
+      dimension:
+        service: neutron-api
+{%- endif %}
+{%- if proxy.listen.swift_api is defined %}
+    swift_api_backends:
+      triggers:
+      - swift_api_backends_all_down
+      - swift_api_backends_majority_down
+      - swift_api_backends_one_down
+      dimension:
+        service: swift-api
+    swift_api_http_errors:
+      triggers:
+      - swift_api_http_errors
+      dimension:
+        service: swift-api
+{%- endif %}
+{%- if proxy.listen.ceilometer_api is defined %}
+    ceilometer_api_backends:
+      triggers:
+      - ceilometer_api_backends_all_down
+      - ceilometer_api_backends_majority_down
+      - ceilometer_api_backends_one_down
+    haproxy_check:
+      triggers:
+      - haproxy_check
+{%- endif %}
+aggregator:
+  alarm_cluster:
+{%- if proxy.listen.glance_registry is defined %}
+    glance_registry_api:
+      policy: highest_severity
+      match:
+        member: glance_registry_api_backends
+      members:
+      - glance_registry_api_backends
+{%- endif %}
+{%- if proxy.listen.glance_api is defined %}
+    glance_api:
+      policy: highest_severity
+      match:
+        service: glance-api
+      members:
+      - glance_api_backends
+      - glance_api_http_errors
+{%- endif %}
+{%- if proxy.listen.nova_openstack_api is defined %}
+    nova_api:
+      policy: highest_severity
+      match:
+        service: nova-api
+      members:
+      - nova_api_backends
+      - nova_api_http_errors
+{%- endif %}
+{%- if proxy.listen.cinder_api is defined %}
+    cinder_api:
+      policy: highest_severity
+      match:
+        service: cinder-api
+      members:
+      - cinder_api_backends
+      - cinder_api_http_errors
+{%- endif %}
+{%- if proxy.listen.heat_api_cfn is defined %}
+    heat_cfn_api:
+      policy: highest_severity
+      match:
+        member: heat_cfn_api_backends
+      members:
+      - heat_cfn_api_backends
+{%- endif %}
+{%- if proxy.listen.heat_api is defined %}
+    heat_api:
+      policy: highest_severity
+      match:
+        service: heat-api
+      members:
+      - heat_api_backends
+      - heat_api_http_errors
+{%- endif %}
+{%- if proxy.listen.horizon_web is defined %}
+    horizon_web_api:
+      policy: highest_severity
+      match:
+        service: horizon-web-api
+      members:
+      - horizon_web_api_backends
+      - horizon_web_api_http_errors
+{%- endif %}
+{%- if proxy.listen.nova_novncproxy_websocket is defined %}
+    nova_novncproxy_websocket_api:
+      policy: highest_severity
+      match:
+        member: nova_novncproxy_websocket_api_backends
+      members:
+      - nova_novncproxy_websocket_api_backends
+{%- endif %}
+{%- if proxy.listen.keystone_public is defined %}
+    keystone_public_api:
+      policy: highest_severity
+      match:
+        service: keystone-public-api
+      members:
+      - keystone_public_api_backends
+      - keystone_public_api_http_errors
+{%- endif %}
+{%- if proxy.listen.heat_api_cloudwatch is defined %}
+    heat_cloudwatch_api:
+      policy: highest_severity
+      match:
+        member: heat_cloudwatch_api_backends
+      members:
+      - heat_cloudwatch_api_backends
+{%- endif %}
+{%- if proxy.listen.nova_metadata is defined %}
+    nova_metadata_api:
+      policy: highest_severity
+      match:
+        member: nova_metadata_api_backends
+      members:
+      - nova_metadata_api_backends
+{%- endif %}
+{%- if proxy.listen.mysql_cluster is defined %}
+    mysqld_tcp:
+      policy: highest_severity
+      match:
+        member: mysqld_tcp_backends
+      members:
+      - mysqld_tcp_backends
+{%- endif %}
+{%- if proxy.listen.keystone_admin is defined %}
+    keystone_admin_api:
+      policy: highest_severity
+      match:
+        service: keystone-admin-api
+      members:
+      - keystone_admin_api_backends
+      - keystone_admin_api_http_errors
+{%- endif %}
+{%- if proxy.listen.neutron_api is defined %}
+    neutron_api:
+      policy: highest_severity
+      match:
+        service: neutron-api
+      members:
+      - neutron_api_backends
+      - neutron_api_http_errors
+{%- endif %}
+{%- if proxy.listen.swift_api is defined %}
+    swift_api:
+      policy: highest_severity
+      match:
+        service: swift-api
+      members:
+      - swift_api_backends
+      - swift_api_http_errors
+{%- endif %}
+{%- if proxy.listen.ceilometer_api is defined %}
+    ceilometer_api:
+      policy: highest_severity
+      match:
+        member: ceilometer_api_backends
+      members:
+      - ceilometer_api_backends
+{%- endif %}
+
+{%- endif %}
diff --git a/metadata/service/support.yml b/metadata/service/support.yml
index 5376c55..cb08c53 100644
--- a/metadata/service/support.yml
+++ b/metadata/service/support.yml
@@ -4,7 +4,7 @@
       collectd:
         enabled: true
       heka:
-        enabled: false
+        enabled: true
       sensu:
         enabled: true
       sphinx: