Add cluster alarms for GlusterFS servers
diff --git a/glusterfs/meta/heka.yml b/glusterfs/meta/heka.yml
index 4f72e54..161825a 100644
--- a/glusterfs/meta/heka.yml
+++ b/glusterfs/meta/heka.yml
@@ -1,3 +1,8 @@
+{% from "glusterfs/map.jinja" import client with context %}
+{% from "glusterfs/map.jinja" import server with context %}
+{% set server_enabled = server.get('enabled', False) %}
+{% set client_enabled = client.get('enabled', False) %}
+{%- if server_enabled or client_enabled %}
 log_collector:
   decoder:
     glusterfs:
@@ -6,9 +11,7 @@
       module_dir: /usr/share/lma_collector/common;/usr/share/heka/lua_modules
       adjust_timezone: true
   input:
-{% if pillar.glusterfs.server is defined %}
-{% from "glusterfs/map.jinja" import server with context %}
-{%- if server.get('enabled', False) %}
+{%- if server_enabled %}
     glusterd:
       engine: logstreamer
       log_directory: "/var/log"
@@ -31,11 +34,8 @@
       decoder: "glusterfs_decoder"
       splitter: "glusterfs_splitter"
 {%- endif %}
-{%- endif %}
-{% if pillar.glusterfs.client is defined %}
-{% from "glusterfs/map.jinja" import client with context %}
-{%- if client.get('enabled', False) and client.volumes is defined %}
-{%- for name, volume in client.volumes.iteritems() %}
+{%- if client_enabled %}
+{%- for name, volume in client.get('volumes', {}).iteritems() %}
     gluster_volume_{{name}}:
       engine: logstreamer
       log_directory: "/var/log"
@@ -45,9 +45,43 @@
       splitter: "glusterfs_splitter"
 {%- endfor %}
 {%- endif %}
-{%- endif %}
   splitter:
     glusterfs:
       engine: regex
       delimiter: '\n(\\[[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{6}\\])'
       delimiter_eol: false
+{%- endif %}
+{%- if server_enabled %}
+metric_collector:
+  trigger:
+    glusterfs_check:
+      description: 'GlusterFS service cannot be checked'
+      severity: down
+      rules:
+      - metric: glusterfs_check
+        relational_operator: '=='
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+  alarm:
+    glusterfs_check:
+      alerting: enabled
+      triggers:
+      - glusterfs_check
+      dimension:
+        service: glusterfs
+aggregator:
+  alarm_cluster:
+    glusterfs:
+      policy: availability_of_members
+      alerting: enabled_with_notification
+      match:
+        service: glusterfs
+      group_by: hostname
+      members:
+      - glusterfs_check
+      dimension:
+        cluster_name: glusterfs
+        nagios_host: 00-top-clusters
+{%- endif %}