diff --git a/ansible/roles/common/tasks/config.yml b/ansible/roles/common/tasks/config.yml
index 810ccc571fe145f5a1d2a78f27557eb6608e4969..a2c03ad0cb7d19b3ba2093914910f017176af506 100644
--- a/ansible/roles/common/tasks/config.yml
+++ b/ansible/roles/common/tasks/config.yml
@@ -112,6 +112,8 @@
         enabled: "{{ enable_prometheus_fluentd_integration | bool }}"
       - name: "conf/input/10-openvswitch.conf.j2"
         enabled: true
+      - name: "conf/input/11-letsencrypt.conf.j2"
+        enabled: "{{ enable_letsencrypt | bool }}"
     customised_input_files: "{{ find_custom_fluentd_inputs.files | map(attribute='path') | list }}"
     # Filters
     fluentd_filter_files: "{{ default_filter_files | customise_fluentd(customised_filter_files) }}"
diff --git a/ansible/roles/common/templates/conf/input/11-letsencrypt.conf.j2 b/ansible/roles/common/templates/conf/input/11-letsencrypt.conf.j2
new file mode 100644
index 0000000000000000000000000000000000000000..ad2f071028336e8f70f60a087f5a49ec93102139
--- /dev/null
+++ b/ansible/roles/common/templates/conf/input/11-letsencrypt.conf.j2
@@ -0,0 +1,15 @@
+<source>
+  @type tail
+  @log_level debug
+  path /var/log/kolla/letsencrypt/letsencrypt-lego.log
+  pos_file /var/run/td-agent/letsencrypt.pos
+  tag infra.letsencrypt.lego
+  enable_watch_timer false
+  <parse>
+    @type multiline
+    format_firstline /^\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}/
+    format1 /^(?<Timestamp>\d{4}\/\d{2}\/\d{2} \d{2}:\d{2}:\d{2}) \[(?<log_level>\S+)\] (?<Payload>.*)/
+    time_key Timestamp
+    time_format %Y/%m/%d %H:%M:%S
+  </parse>
+</source>