Add fluentd support to GlusterFS

Change-Id: Ib48255e5ba6c300e5c456e3e73a1bfb72e3a6a10
diff --git a/glusterfs/meta/fluentd.yml b/glusterfs/meta/fluentd.yml
new file mode 100644
index 0000000..9bc1aa3
--- /dev/null
+++ b/glusterfs/meta/fluentd.yml
@@ -0,0 +1,86 @@
+{% 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) %}
+config:
+  label:
+    glusterfs:
+      input:
+{%- if server_enabled %}
+        tail_glusterd_log_file:
+          type: tail
+          path: /var/log/glusterfs/etc-glusterfs-glusterd.vol.log
+          tag: glusterfs.glusterd
+          pos_file: /var/log/td-agent/tmp/glusterfs.glusterd.pos
+          parser:
+            type: multiline
+            time_key: Timestamp
+            time_format: '%Y-%m-%d %H:%M:%S.%N'
+            keep_time_key: false
+            format_firstline: >-
+              '/^\[\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{6}\]/'
+            format: >-
+              '/^(\[(?<Timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{6})\] (?<orig_severity_label>[TDINWECA]) (?<Payload>.*))/'
+        tail_glustershd_log_file:
+          type: tail
+          path: /var/log/glusterfs/glustershd.log
+          tag: glusterfs.glustershd
+          pos_file: /var/log/td-agent/tmp/glusterfs.glustershd.pos
+          parser:
+            type: multiline
+            time_key: Timestamp
+            time_format: '%Y-%m-%d %H:%M:%S.%N'
+            keep_time_key: false
+            format_firstline: >-
+              '/^\[\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{6}\]/'
+            format: >-
+              '/^(\[(?<Timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{6})\] (?<orig_severity_label>[TDINWECA]) (?<Payload>.*))/'
+        tail_bricks_log_files:
+          type: tail
+          path: /var/log/glusterfs/bricks/srv-glusterfs-*
+          tag: glusterfs.brick
+          pos_file: /var/log/td-agent/tmp/glusterfs.brick.pos
+          parser:
+            type: multiline
+            time_key: Timestamp
+            time_format: '%Y-%m-%d %H:%M:%S.%N'
+            keep_time_key: false
+            format_firstline: >-
+              '/^\[\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{6}\]/'
+            format: >-
+              '/^(\[(?<Timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{6})\] (?<orig_severity_label>[TDINWECA]) (?<Payload>.*))/'
+{%- endif %}
+{%- if client_enabled %}
+        tail_client_log_files:
+          type: tail
+          path: /var/log/glusterfs/var-lib-*
+          tag: glusterfs.client
+          pos_file: /var/log/td-agent/tmp/glusterfs.client.pos
+          parser:
+            type: multiline
+            time_key: Timestamp
+            time_format: '%Y-%m-%d %H:%M:%S.%N'
+            keep_time_key: false
+            format_firstline: >-
+              '/^\[\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{6}\]/'
+            format: >-
+              '/^(\[(?<Timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{6})\] (?<orig_severity_label>[TDINWECA]) (?<Payload>.*))/'
+{%- endif %}
+      filter:
+        add_programname_unify_severity:
+          tag: glusterfs.*
+          type: record_transformer
+          enable_ruby: true
+          remove_keys: orig_severity_label
+          record:
+            - name: severity_label
+              value: ${ {'T'=>'TRACE','D'=>'DEBUG','I'=>'INFO','N'=>'NOTICE','W'=>'WARNING','E'=>'ERROR','C'=>'CRITICAL','A'=>'ALERT'}[record['orig_severity_label']] }
+            - name: Severity
+              value: ${ {'T'=>7,'D'=>7,'I'=>6,'N'=>5,'W'=>4,'E'=>3,'C'=>2,'A'=>1}[record['orig_severity_label']].to_i }
+            - name: programname
+              value: glusterd
+      match:
+        push_to_default:
+          tag: glusterfs.*
+          type: relabel
+          label: default_output
\ No newline at end of file
diff --git a/metadata/service/support.yml b/metadata/service/support.yml
index 65acbf5..c2d91d1 100644
--- a/metadata/service/support.yml
+++ b/metadata/service/support.yml
@@ -17,3 +17,5 @@
         enabled: true
       prometheus:
         enabled: true
+      fluentd:
+        enabled: true
\ No newline at end of file