Support services definition
diff --git a/metadata/service/support.yml b/metadata/service/support.yml
new file mode 100644
index 0000000..0e2e398
--- /dev/null
+++ b/metadata/service/support.yml
@@ -0,0 +1,11 @@
+parameters:
+  salt:
+    _support:
+      collectd:
+        enabled: true
+      heka:
+        enabled: true
+      sensu:
+        enabled: true
+      sphinx:
+        enabled: true
diff --git a/nova/files/collectd.conf b/nova/files/collectd_libvirt.conf
similarity index 98%
rename from nova/files/collectd.conf
rename to nova/files/collectd_libvirt.conf
index 03806b2..e88266b 100644
--- a/nova/files/collectd.conf
+++ b/nova/files/collectd_libvirt.conf
@@ -1,6 +1,4 @@
-
 LoadPlugin libvirt
-
 <Plugin "libvirt">
   Connection "qemu:///system"
   RefreshInterval 60
diff --git a/nova/meta/collectd.yml b/nova/meta/collectd.yml
new file mode 100644
index 0000000..df5b0fe
--- /dev/null
+++ b/nova/meta/collectd.yml
@@ -0,0 +1,5 @@
+plugin:
+  nova_compute_libvirt:
+    plugin: interface
+    interval: 60
+    template: nova/files/collectd_libvirt.conf
\ No newline at end of file
diff --git a/nova/meta/heka.yml b/nova/meta/heka.yml
new file mode 100644
index 0000000..9e847fd
--- /dev/null
+++ b/nova/meta/heka.yml
@@ -0,0 +1,54 @@
+input:
+  {%- if pillar.nova.compute is defined %}
+  nova_compute:
+    engine: logstreamer
+    log_directory: /var/log/nova
+    file_match: nova-compute\.log\.?(?P<Index>\d+)?(.gz)?
+    priority: ["^Index"]
+    decoder: multidecoder_openstack
+  libvirtd:
+    engine: logstreamer
+    log_directory: /var/log/libvirt
+    file_match: libvirtd\.log\.?(?P<Index>\d+)?(.gz)?
+    priority: ['^Index']
+    decoder: multidecoder_libvirtd
+  {%- endif %}
+  {%- if pillar.nova.controller is defined %}
+  nova_compute:
+    engine: logstreamer
+    log_directory: /var/log/nova
+    file_match: nova-api\.log\.?(?P<Index>\d+)?(.gz)?
+    priority: ["^Index"]
+    decoder: multidecoder_openstack
+  {%- endif %}
+decoder:
+  openstack:
+    engine: multidecoder
+    subs: [ 'Payloadregex_OpenStackLog','Payloadregex_OpenStackLogTrace' ]
+    cascade_strategy: first-wins
+    log_sub_errors: "false"
+  OpenStackLog:
+    engine: payloadregex
+    match_regex: ^(?P<timestamp>\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2}.\d{3})\s(?P<pid>\d+)\s(?P<severity>\w+)\s(?P<programname>\D+)\s\[(?P<id>.+)\]\s(?P<payload>.*)
+    timestamp_layout: "2015-10-06 11:34:37.243"
+  OpenStackLogTrace:
+    engine: payloadregex
+    match_regex: ^(?P<timestamp>\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2}.\d{3})\s(?P<pid>\d+)\s(?P<severity>TRACE)\s(?P<programname>.\S+)\s(?P<payload>.*)
+    timestamp_layout: "2015-10-06 11:34:37.243"
+  openstacksandbox:
+    engine: sandbox
+    file_name: "/etc/heka/plugins.d/decoders/openstack.lua"
+    module_directory: "/etc/heka/plugins.d/common;/usr/share/heka/lua_modules"
+  libvirtd:
+    engine: multidecoder
+    subs: [ 'Payloadregex_libvirtcommon', 'Payloadregex_libvirtaudit' ]
+    cascade_strategy: first-wins
+    log_sub_errors: "false"
+  libvirtcommon:
+    engine: payloadregex
+    match_regex: ^(?P<timestamp>\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2}.\d{3}\+\d{4}):\s+(?P<pid>\d+):\s+(?P<severity>\w+)\s+:\s+(?P<qemutrace>\w+:\d+)\s+:\s+(?P<payload>.*)
+    timestamp_layout: "2015-09-01 15:56:14.675+0000"
+  libvirtaudit:
+    engine: payloadregex
+    match_regex: ^(?P<timestamp>\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2}.\d{3}\+\d{4}):\s+(?P<pid>\d+):\s+(?P<severity>\w+)\s+:\s+(?P<message>.+):\s(?P<payload>.+)
+    timestamp_layout: "2015-09-01 15:56:14.675+0000"
diff --git a/nova/meta/sensu.yml b/nova/meta/sensu.yml
new file mode 100644
index 0000000..d5e1df0
--- /dev/null
+++ b/nova/meta/sensu.yml
@@ -0,0 +1,75 @@
+check:
+  local_nova_api_proc:
+    command: "PATH=$PATH:/usr/lib64/nagios/plugins:/usr/lib/nagios/plugins check_procs -C nova-api -u nova -c 1:30"
+    interval: 60
+    occurrences: 1
+    subscribers:
+    - local-nova-controller
+  local_nova_scheduler_proc:
+    command: "PATH=$PATH:/usr/lib64/nagios/plugins:/usr/lib/nagios/plugins check_procs -C nova-scheduler -u nova -c 1:4"
+    interval: 60
+    occurrences: 1
+    subscribers:
+    - local-nova-controller
+  local_nova_novncproxy_proc:
+    command: "PATH=$PATH:/usr/lib64/nagios/plugins:/usr/lib/nagios/plugins check_procs -C nova-novncproxy -u nova -c 1:5"
+    interval: 60
+    occurrences: 2
+    subscribers:
+    - local-nova-controller
+  local_nova_cert_proc:
+    command: "PATH=$PATH:/usr/lib64/nagios/plugins:/usr/lib/nagios/plugins check_procs -C nova-cert -u nova -c 1:4"
+    interval: 60
+    occurrences: 1
+    subscribers:
+    - local-nova-controller
+  local_nova_conductor_proc:
+    command: "PATH=$PATH:/usr/lib64/nagios/plugins:/usr/lib/nagios/plugins check_procs -C nova-conductor -u nova -c 1:10"
+    interval: 60
+    occurrences: 1
+    subscribers:
+    - local-nova-controller
+  local_nova_consoleauth_proc:
+    command: "PATH=$PATH:/usr/lib64/nagios/plugins:/usr/lib/nagios/plugins check_procs -C nova-consoleaut -u nova -c 1:1"
+    interval: 60
+    occurrences: 1
+    subscribers:
+    - local-nova-controller
+  #local_nova_api_rabbitmq_logs:
+  #  command: "PATH=$PATH:/etc/sensu/plugins check_log.sh -p /var/log/nova/nova-api.log -l 10 -r 'Queue not found' -c 5"
+  #  interval: 60
+  #  occurrences: 1
+  #  subscribers:
+  #  - local-nova-controller
+  local_nova_compute_proc:
+    command: "PATH=$PATH:/usr/lib64/nagios/plugins:/usr/lib/nagios/plugins check_procs -C nova-compute -u nova -c 1:10"
+    interval: 60
+    occurrences: 1
+    asset: asset01
+    customer: cloudlab
+    subscribers:
+    - local-nova-compute
+  local_linux_storage_nova_instances_usage:
+    command: "PATH=$PATH:/usr/lib64/nagios/plugins:/usr/lib/nagios/plugins check_disk -w 15% -c 5% -p /var/lib/nova/instances"
+    interval: 60
+    occurrences: 1
+    subscribers:
+    - local-nova-compute
+  remote_openstack_nova_instance:
+    command: "PATH=$PATH:/usr/local/bin oschecks-check_nova_instance --auth_url='http://:::openstack.host:::::::openstack.port:::/v2.0' --username :::openstack.user::: --password :::openstack.password::: --tenant :::openstack.tenant:::"
+    interval: 300
+    occurrences: 1
+    subscribers:
+    - remote-network
+  remote_openstack_nova_api:
+    command: "PATH=$PATH:/usr/local/bin oschecks-check_nova_api --os-auth-url 'http://:::openstack.host:::::::openstack.port:::/v2.0' --os-username :::openstack.user::: --os-password :::openstack.password::: --os-tenant-name :::openstack.tenant:::"
+    interval: 60
+    occurrences: 1
+    subscribers:
+    - remote-network
+  remote_nova_services:
+    command: "PATH=$PATH:/etc/sensu/plugins check_nova_services.sh -u :::openstack.user::: -p :::openstack.password::: -t :::openstack.tenant::: -h 'http://:::openstack.host:::::::openstack.port:::/v2.0'"
+    interval: 60
+    occurrences: 1
+    subscribers:
+    - remote-network
\ No newline at end of file
diff --git a/nova/meta/sphinx.yml b/nova/meta/sphinx.yml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/nova/meta/sphinx.yml