diff --git a/opencontrail/meta/prometheus.yml b/opencontrail/meta/prometheus.yml
index c53f9c4..ed997a5 100644
--- a/opencontrail/meta/prometheus.yml
+++ b/opencontrail/meta/prometheus.yml
@@ -31,7 +31,7 @@
 
   {%- if database.get('enabled', False) %}
     {%- set database_processes = (
-        'zookeeper-server', 'kafka-server', 'cassandra-server',
+        'kafka-server', 'cassandra-server',
         'contrail-nodemgr-database', 'contrail-supervisord-database',
         ) %}
   {%- endif %}
@@ -59,9 +59,9 @@
     enabled: true
 {%- if packages is defined %}
     packages:
-    {% for pkg in packages %}
+    {%- for pkg in packages %}
     - {{ pkg }}
-    {% endfor %}
+    {%- endfor %}
 {%- endif %}
 {%- if template is defined %}
     template:  {{ template }}
@@ -90,7 +90,7 @@
     {%- if control_processes is defined %}
       {%- for contrail_api in control_apis %}
         {%- set words = contrail_api.split('.') %}
-    {% for word in words %}{%- if word != 'api' %}{{ word | capitalize }}{% endif %}{% endfor %}APIDown:
+    {% for word in words %}{% if word != 'api' %}{{ word | capitalize }}{% endif %}{% endfor %}APIDown:
       if: >-
         http_response_status{service=~"{{ contrail_api }}"} == 0
 {%- raw %}
@@ -113,13 +113,15 @@
         severity: down
         service: {{ contrail_process }}
       annotations:
-        summary: '{{ contrail_process }} service is down'
-        description: '{{ contrail_process }} service is down on node {% raw %}{{ $labels.host }}{% endraw %}'
+{%- raw %}
+        summary: '{{ $labels.service }} service is down'
+        description: '{{ $labels.service }} service is down on node {{ $labels.host }}'
+{%- endraw %}
       {%- endfor %}
 {%- raw %}
     ContrailBGPSessionsNoneUp:
       if: >-
-        max(contrail_bgp_session_up_count) == 0
+        max(contrail_bgp_session_up_count) by (host) == 0
       for: 2m
       labels:
         severity: warning
@@ -129,7 +131,7 @@
         description: 'There are no active BGP sessions on node {{ $labels.host }}'
     ContrailBGPSessionsSomeDown:
       if: >-
-        min(contrail_bgp_session_down_count) > 0
+        min(contrail_bgp_session_down_count) by (host) > 0
       for: 2m
       labels:
         severity: warning
@@ -139,7 +141,7 @@
         description: 'There are inactive BGP sessions on node {{ $labels.host }}'
     ContrailBGPSessionsNone:
       if: >-
-        max(contrail_bgp_session_count) == 0
+        max(contrail_bgp_session_count) by (host) == 0
       for: 2m
       labels:
         severity: warning
@@ -149,7 +151,7 @@
         description: 'There are no BGP sessions on node {{ $labels.host }}'
     ContrailXMPPSessionsNoneUp:
       if: >-
-        max(contrail_xmpp_session_up_count) == 0
+        max(contrail_xmpp_session_up_count) by (host) == 0
       for: 2m
       labels:
         severity: warning
@@ -159,7 +161,7 @@
         description: 'There are no active XMPP sessions on node {{ $labels.host }}'
     ContrailXMPPSessionsSomeDown:
       if: >-
-        min(contrail_xmpp_session_down_count) > 0
+        min(contrail_xmpp_session_down_count) by (host) > 0
       for: 2m
       labels:
         severity: warning
@@ -169,7 +171,7 @@
         description: 'There are inactive XMPP sessions on node {{ $labels.host }}'
     ContrailXMPPSessionsNone:
       if: >-
-        max(contrail_xmpp_session_count) == 0
+        max(contrail_xmpp_session_count) by (host) == 0
       for: 2m
       labels:
         severity: warning
@@ -181,7 +183,7 @@
       if: >-
 {%- endraw %}
     {%- set xmpp_toohigh_threshold = monitoring.xmpp_sessions_too_high_threshold %}
-        min(contrail_xmpp_session_count) >= {{ xmpp_toohigh_threshold }}
+        min(contrail_xmpp_session_count) by (host) >= {{ xmpp_toohigh_threshold }}
 {%- raw %}
       for: 2m
       labels:
@@ -189,7 +191,7 @@
         service: contrail-control
       annotations:
         summary: 'Too many XMPP sessions'
-        description: 'There are too many XMPP sessions on node {{ $labels.host }} (current value={{ $value }}, threshold={%- endraw %}{{ xmpp_toohigh_threshold }})'
+        description: 'There are too many XMPP sessions on node {{ $labels.host }} (current value={{ $value }}, threshold={% endraw %}{{ xmpp_toohigh_threshold }})'
     ContrailXMPPSessionsTooManyVariations:
       if: >-
     {%- set xmpp_variation_threshold = monitoring.xmpp_sessions_variation_threshold %}
@@ -200,13 +202,13 @@
         service: contrail-control
       annotations:
         summary: 'Number of XMPP sessions changed between checks is too high'
-        description: 'There are too many XMPP sessions changes on node {{ $labels.host }} (current value={{ $value }}, threshold={%- endraw %}{{ xmpp_variation_threshold }})'
+        description: 'There are too many XMPP sessions changes on node {{ $labels.host }} (current value={{ $value }}, threshold={% endraw %}{{ xmpp_variation_threshold }})'
     {%- endif %}
 
     {%- if collector_processes is defined %}
       {%- for contrail_api in collector_apis %}
         {%- set words = contrail_api.split('.') %}
-    {% for word in words %}{%- if word != 'api' %}{{ word | capitalize }}{% endif %}{% endfor %}APIDown:
+    {% for word in words %}{% if word != 'api' %}{{ word | capitalize }}{% endif %}{% endfor %}APIDown:
       if: >-
         http_response_status{service=~"{{ contrail_api }}"} == 0
 {%- raw %}
@@ -229,8 +231,10 @@
         severity: down
         service: {{ contrail_process }}
       annotations:
-        summary: '{{ contrail_process }} service is down'
-        description: '{{ contrail_process }} service is down on node {% raw %}{{ $labels.host }}{% endraw %}'
+{%- raw %}
+        summary: '{{ $labels.service }} service is down'
+        description: '{{ $labels.service }} service is down on node {{ $labels.host }}'
+{%- endraw %}
       {%- endfor %}
     {%- endif %}
 
@@ -238,7 +242,7 @@
 {%- raw %}
     ContrailVrouterXMPPSessionsNone:
       if: >-
-        max(contrail_vrouter_xmpp) == 0
+        max(contrail_vrouter_xmpp) by (host) == 0
       for: 2m
       labels:
         severity: warning
@@ -250,7 +254,7 @@
       if: >-
 {%- endraw %}
     {%- set vrouter_xmpp_toohigh_threshold = monitoring.vrouter_xmpp_sessions_too_high_threshold %}
-        min(contrail_vrouter_xmpp) >= {{ vrouter_xmpp_toohigh_threshold }}
+        min(contrail_vrouter_xmpp) by (host) >= {{ vrouter_xmpp_toohigh_threshold }}
 {%- raw %}
       for: 2m
       labels:
@@ -273,7 +277,7 @@
 {%- raw %}
     ContrailVrouterDNSXMPPSessionsNone:
       if: >-
-        max(contrail_vrouter_dns_xmpp) == 0
+        max(contrail_vrouter_dns_xmpp) by (host) == 0
       for: 2m
       labels:
         severity: warning
@@ -285,7 +289,7 @@
       if: >-
 {%- endraw %}
     {%- set vrouter_dns_xmpp_toohigh_threshold = monitoring.vrouter_dns_xmpp_sessions_too_high_threshold %}
-        min(contrail_vrouter_dns_xmpp) >= {{ vrouter_dns_xmpp_toohigh_threshold }}
+        min(contrail_vrouter_dns_xmpp) by (host) >= {{ vrouter_dns_xmpp_toohigh_threshold }}
 {%- raw %}
       for: 2m
       labels:
@@ -308,7 +312,7 @@
     ContrailVrouterLLSSessionsTooMany:
       if: >-
     {%- set vrouter_lls_toohigh_threshold = monitoring.vrouter_lls_too_high_threshold %}
-        min(contrail_vrouter_lls) >= {{ vrouter_lls_toohigh_threshold }}
+        min(contrail_vrouter_lls) by (host) >= {{ vrouter_lls_toohigh_threshold }}
 {%- raw %}
       for: 2m
       labels:
@@ -331,7 +335,7 @@
     ContrailFlowsActiveTooMany:
       if: >-
     {%- set vrouter_flows_active_toohigh_threshold = monitoring.vrouter_flows_active_too_high_threshold %}
-        min(contrail_vrouter_flows_active) >= {{ vrouter_flows_active_toohigh_threshold }}
+        min(contrail_vrouter_flows_active) by (host) >= {{ vrouter_flows_active_toohigh_threshold }}
 {%- raw %}
       for: 2m
       labels:
@@ -343,7 +347,7 @@
     ContrailFlowsDiscardTooMany:
       if: >-
     {%- set vrouter_flows_discard_toohigh_threshold = monitoring.vrouter_flows_discard_too_high_threshold %}
-        min(contrail_vrouter_flows_discard) >= {{ vrouter_flows_discard_toohigh_threshold }}
+        min(contrail_vrouter_flows_discard) by (host) >= {{ vrouter_flows_discard_toohigh_threshold }}
 {%- raw %}
       for: 2m
       labels:
@@ -355,7 +359,7 @@
     ContrailFlowsDropTooMany:
       if: >-
     {%- set vrouter_flows_flow_action_drop_toohigh_threshold = monitoring.vrouter_flows_flow_action_drop_too_high_threshold %}
-        min(contrail_vrouter_flows_flow_action_drop) >= {{ vrouter_flows_flow_action_drop_toohigh_threshold }}
+        min(contrail_vrouter_flows_flow_action_drop) by (host) >= {{ vrouter_flows_flow_action_drop_toohigh_threshold }}
 {%- raw %}
       for: 2m
       labels:
@@ -367,7 +371,7 @@
     ContrailFlowsFragErrTooMany:
       if: >-
     {%- set vrouter_flows_frag_err_toohigh_threshold = monitoring.vrouter_flows_frag_err_too_high_threshold %}
-        min(contrail_vrouter_flows_frag_err) >= {{ vrouter_flows_frag_err_toohigh_threshold }}
+        min(contrail_vrouter_flows_frag_err) by (host) >= {{ vrouter_flows_frag_err_toohigh_threshold }}
 {%- raw %}
       for: 2m
       labels:
@@ -379,7 +383,7 @@
     ContrailFlowsInvalidNHTooMany:
       if: >-
     {%- set vrouter_flows_invalid_nh_toohigh_threshold = monitoring.vrouter_flows_invalid_nh_too_high_threshold %}
-        min(contrail_vrouter_flows_invalid_nh) >= {{ vrouter_flows_invalid_nh_toohigh_threshold }}
+        min(contrail_vrouter_flows_invalid_nh) by (host) >= {{ vrouter_flows_invalid_nh_toohigh_threshold }}
 {%- raw %}
       for: 2m
       labels:
@@ -391,7 +395,7 @@
     ContrailFlowsInvalidITFTooMany:
       if: >-
     {%- set vrouter_flows_composite_invalid_interface_toohigh_threshold = monitoring.vrouter_flows_composite_invalid_interface_too_high_threshold %}
-        min(contrail_vrouter_flows_composite_invalid_interface) >= {{ vrouter_flows_composite_invalid_interface_toohigh_threshold }}
+        min(contrail_vrouter_flows_composite_invalid_interface) by (host) >= {{ vrouter_flows_composite_invalid_interface_toohigh_threshold }}
 {%- raw %}
       for: 2m
       labels:
@@ -403,7 +407,7 @@
     ContrailFlowsInvalidLabelTooMany:
       if: >-
     {%- set vrouter_flows_invalid_label_toohigh_threshold = monitoring.vrouter_flows_invalid_label_too_high_threshold %}
-        min(contrail_vrouter_flows_invalid_label) >= {{ vrouter_flows_invalid_label_toohigh_threshold }}
+        min(contrail_vrouter_flows_invalid_label) by (host) >= {{ vrouter_flows_invalid_label_toohigh_threshold }}
 {%- raw %}
       for: 2m
       labels:
@@ -415,7 +419,7 @@
     ContrailFlowsQueueLimitExceededTooMany:
       if: >-
     {%- set vrouter_flows_flow_queue_limit_exceeded_toohigh_threshold = monitoring.vrouter_flows_flow_queue_limit_exceeded_too_high_threshold %}
-        min(contrail_vrouter_flows_flow_queue_limit_exceeded) >= {{ vrouter_flows_flow_queue_limit_exceeded_toohigh_threshold }}
+        min(contrail_vrouter_flows_flow_queue_limit_exceeded) by (host) >= {{ vrouter_flows_flow_queue_limit_exceeded_toohigh_threshold }}
 {%- raw %}
       for: 2m
       labels:
@@ -427,7 +431,7 @@
     ContrailFlowsTableFullTooMany:
       if: >-
     {%- set vrouter_flows_flow_table_full_toohigh_threshold = monitoring.vrouter_flows_flow_table_full_too_high_threshold %}
-        min(contrail_vrouter_flows_flow_table_full) >= {{ vrouter_flows_flow_table_full_toohigh_threshold }}
+        min(contrail_vrouter_flows_flow_table_full) by (host) >= {{ vrouter_flows_flow_table_full_toohigh_threshold }}
 {%- raw %}
       for: 2m
       labels:
@@ -438,7 +442,7 @@
         description: 'There are too many vRouter flows with table full on node {{ $labels.host }} (current value={{ $value }}, threshold={%- endraw %}{{ vrouter_flows_flow_table_full_toohigh_threshold }})'
       {%- for contrail_api in compute_apis %}
         {%- set words = contrail_api.split('.') %}
-    {% for word in words %}{%- if word != 'api' %}{{ word | capitalize }}{% endif %}{% endfor %}APIDown:
+    {% for word in words %}{% if word != 'api' %}{{ word | capitalize }}{% endif %}{% endfor %}APIDown:
       if: >-
         http_response_status{service=~"{{ contrail_api }}"} == 0
 {%- raw %}
@@ -461,8 +465,10 @@
         severity: down
         service: {{ contrail_process }}
       annotations:
-        summary: '{{ contrail_process }} service is down'
-        description: '{{ contrail_process }} service is down on node {% raw %}{{ $labels.host }}{% endraw %}'
+{%- raw %}
+        summary: '{{ $labels.service }} service is down'
+        description: '{{ $labels.service }} service is down on node {{ $labels.host }}'
+{%- endraw %}
       {%- endfor %}
     {%- endif %}
 
@@ -476,8 +482,10 @@
         severity: down
         service: {{ contrail_process }}
       annotations:
-        summary: '{{ contrail_process }} service is down'
-        description: '{{ contrail_process }} service is down on node {% raw %}{{ $labels.host }}{% endraw %}'
+{%- raw %}
+        summary: '{{ $labels.service }} service is down'
+        description: '{{ $labels.service }} service is down on node {{ $labels.host }}'
+{%- endraw %}
       {%- endfor %}
     {%- endif %}
 
@@ -491,10 +499,26 @@
         severity: down
         service: {{ contrail_process }}
       annotations:
-        summary: '{{ contrail_process }} service is down'
-        description: '{{ contrail_process }} service is down on node {% raw %}{{ $labels.host }}{% endraw %}'
+{%- raw %}
+        summary: '{{ $labels.service }} service is down'
+        description: '{{ $labels.service }} service is down on node { $labels.host }}'
+{%- endraw %}
       {%- endfor %}
     {%- endif %}
+
+    {%- if database.get('enabled', False) %}
+    ZookeeperDown:
+      if: >-
+        zookeeper_up != 1
+      for: 2m
+      labels:
+        severity: warning
+        service: zookeeper
+      annotations:
+        summary: 'Zookeeper service down'
+        description: 'Zookeeper service is down on node {{ $labels.host }}.'
+    {%- endif %}
+
     {%- if exporters is defined %}
       {%- include "prometheus/_exporters_config.sls" %}
     {%- endif %}
