diff --git a/ansible/roles/common/tasks/config.yml b/ansible/roles/common/tasks/config.yml
index 2eb838f753f9cd754217a4e71953b1dc533dbd23..040c09c289b0a0ba96bf227228617eeeef70acb8 100644
--- a/ansible/roles/common/tasks/config.yml
+++ b/ansible/roles/common/tasks/config.yml
@@ -79,6 +79,12 @@
   notify:
     - Restart fluentd container
 
+- name: Determine whether logs should be forwarded directly to Elasticsearch
+  set_fact:
+    log_direct_to_elasticsearch: "{{ ( enable_elasticsearch | bool or
+                ( elasticsearch_address != kolla_internal_vip_address )) and
+                not enable_monasca | bool }}"
+
 - name: Copying over fluentd output config files
   template:
     src: "conf/output/{{ item.name }}.conf.j2"
@@ -93,8 +99,25 @@
     - name: "00-local"
       enabled: true
     - name: "01-es"
-      enabled: "{{ enable_elasticsearch | bool or
-                ( elasticsearch_address != kolla_internal_vip_address ) }}"
+      enabled: "{{ log_direct_to_elasticsearch }}"
+    - name: "02-monasca"
+      enabled: "{{ enable_monasca | bool }}"
+  notify:
+    - Restart fluentd container
+
+- name: Removing stale output config files
+  file:
+    path: "{{ node_config_directory }}/fluentd/output/{{ item.name }}.conf"
+    state: "absent"
+  become: true
+  when:
+    - enable_fluentd | bool
+    - item.disable | bool
+  with_items:
+    - name: "02-monasca"
+      disable: "{{ not enable_monasca | bool }}"
+    - name: "01-es"
+      disable: "{{ not log_direct_to_elasticsearch }}"
   notify:
     - Restart fluentd container
 
diff --git a/ansible/roles/common/templates/conf/output/00-local.conf.j2 b/ansible/roles/common/templates/conf/output/00-local.conf.j2
index 22d2ba76bb4cb1834ec639597f3996e36ba38b90..1837b0c5cea5ca5b21e124bc8c2c88fdbec9070c 100644
--- a/ansible/roles/common/templates/conf/output/00-local.conf.j2
+++ b/ansible/roles/common/templates/conf/output/00-local.conf.j2
@@ -7,8 +7,7 @@
     append true
     compress gzip
   </store>
-{% if enable_elasticsearch | bool or
-      elasticsearch_address != kolla_internal_vip_address %}
+{% if log_direct_to_elasticsearch %}
   <store>
        type elasticsearch
        host {{ elasticsearch_address }}
@@ -17,6 +16,18 @@
        logstash_prefix {{ kibana_log_prefix }}
        flush_interval 15s
   </store>
+{% elif enable_monasca | bool %}
+    type copy
+    <store>
+       @type monasca
+       keystone_url {{ keystone_internal_url }}
+       monasca_log_api {{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ monasca_log_api_port }}
+       monasca_log_api_version v3.0
+       username {{ monasca_agent_user }}
+       password {{ monasca_agent_password }}
+       domain_id default
+       project_name {{ monasca_control_plane_project }}
+    </store>
 {% endif %}
 </match>
 
@@ -31,8 +42,7 @@
     append true
     compress gzip
   </store>
-{% if enable_elasticsearch | bool or
-      elasticsearch_address != kolla_internal_vip_address %}
+{% if log_direct_to_elasticsearch %}
   <store>
        type elasticsearch
        host {{ elasticsearch_address }}
@@ -41,5 +51,17 @@
        logstash_prefix {{ kibana_log_prefix }}
        flush_interval 15s
   </store>
+{% elif enable_monasca | bool %}
+    type copy
+    <store>
+       @type monasca
+       keystone_url {{ keystone_internal_url }}
+       monasca_log_api {{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ monasca_log_api_port }}
+       monasca_log_api_version v3.0
+       username {{ monasca_agent_user }}
+       password {{ monasca_agent_password }}
+       domain_id default
+       project_name {{ monasca_control_plane_project }}
+    </store>
 {% endif %}
 </match>
diff --git a/ansible/roles/common/templates/conf/output/02-monasca.conf.j2 b/ansible/roles/common/templates/conf/output/02-monasca.conf.j2
new file mode 100644
index 0000000000000000000000000000000000000000..f495249ec0db4aaebd752cd28a88e47a05ba21b6
--- /dev/null
+++ b/ansible/roles/common/templates/conf/output/02-monasca.conf.j2
@@ -0,0 +1,13 @@
+<match *.**>
+    type copy
+    <store>
+       @type monasca
+       keystone_url {{ keystone_internal_url }}
+       monasca_log_api {{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ monasca_log_api_port }}
+       monasca_log_api_version v3.0
+       username {{ monasca_agent_user }}
+       password {{ monasca_agent_password }}
+       domain_id default
+       project_name {{ monasca_control_plane_project }}
+    </store>
+</match>