Monitor Apache service

Change-Id: Id31a7028138f37f2f491cf3df87349e58a14774d
diff --git a/apache/files/collectd_apache.conf b/apache/files/collectd_apache.conf
index 6521604..9b56951 100644
--- a/apache/files/collectd_apache.conf
+++ b/apache/files/collectd_apache.conf
@@ -1,9 +1,6 @@
-{%- from "apache/map.jinja" import server with context %}
 LoadPlugin "apache"
 <Plugin "apache">
-   <Instance "apache80">
+   <Instance "localhost">
        URL "http://127.0.0.1/server-status?auto"
-#       User "collectd"
-#       Password "hoh2Coo6"
    </Instance>
 </Plugin>
diff --git a/apache/files/collectd_apache_check.conf b/apache/files/collectd_apache_check.conf
new file mode 100644
index 0000000..9974921
--- /dev/null
+++ b/apache/files/collectd_apache_check.conf
@@ -0,0 +1,5 @@
+Import "collectd_apache_check"
+
+<Module "collectd_apache_check">
+  Url "http://127.0.0.1/server-status?auto"
+</Module>
diff --git a/apache/meta/collectd.yml b/apache/meta/collectd.yml
index e8620a8..2d3018f 100644
--- a/apache/meta/collectd.yml
+++ b/apache/meta/collectd.yml
@@ -1,5 +1,9 @@
-plugin:
+{%- from "apache/map.jinja" import server with context %}
+{%- if server.get('enabled', False) %}
+local_plugin:
   apache_server_status:
-    plugin: apache
-    interval: 60
-    template: apache/files/collectd_apache.conf
\ No newline at end of file
+    template: apache/files/collectd_apache.conf
+  collectd_apache_check:
+    plugin: python
+    template: apache/files/collectd_apache_check.conf
+{%- endif %}
diff --git a/apache/meta/heka.yml b/apache/meta/heka.yml
index ebc3b42..e488815 100644
--- a/apache/meta/heka.yml
+++ b/apache/meta/heka.yml
@@ -31,3 +31,75 @@
 {%- endfor %}
 
 {%- endif %}
+{%- if server.get('enabled', False) %}
+metric_collector:
+  trigger:
+    apache_check:
+      description: 'Apache service cannot be checked'
+      severity: down
+      rules:
+      - metric: apache_check
+        relational_operator: '=='
+        threshold: 0
+        window: 60
+        periods: 0
+        function: last
+    apache_idle_workers:
+      description: 'There is no Apache idle workers available'
+      severity: warning
+      rules:
+      - metric: apache_idle_workers
+        relational_operator: '=='
+        threshold: 0
+        window: 60
+        periods: 0
+        function: min
+  alarm:
+    apache_check:
+      alerting: enabled
+      triggers:
+      - apache_check
+      dimension:
+        service: apache-check
+    apache_idle_workers:
+      alerting: enabled
+      triggers:
+      - apache_idle_workers
+      dimension:
+        service: apache-idle-workers
+aggregator:
+  alarm_cluster:
+    apache_check:
+      policy: availability_of_members
+      alerting: enabled
+      match:
+        service: apache-check
+      group_by: hostname
+      members:
+      - apache_check
+      dimension:
+        service: apache
+        nagios_host: 01-service-clusters
+    apache_idle_workers:
+      policy: availability_of_members
+      alerting: enabled
+      match:
+        service: apache-idle-workers
+      group_by: hostname
+      members:
+      - apache_idle_workers
+      dimension:
+        service: apache
+        nagios_host: 01-service-clusters
+    apache:
+      policy: highest_severity
+      alerting: enabled_with_notification
+      match:
+        service: apache
+      members:
+      - apache_check
+      - apache_idle_workers
+      dimension:
+        cluster_name: apache
+        nagios_host: 00-top-clusters
+{%- endif %}