blob: ecc04cd1153b4f713b4b21246fbf5405276bae2c [file] [log] [blame]
Aleš Komárekac2c0fb2017-04-11 10:14:46 +02001===============
2Fluentd Formula
3===============
Michael Kutýe554d792014-04-12 21:54:46 +02004
Aleš Komárekac2c0fb2017-04-11 10:14:46 +02005Many web/mobile applications generate huge amount of event logs
6(c,f. login, logout, purchase, follow, etc). Analyzing these event
7logs can be quite valuable for improving services. However, collecting
8these logs easily and reliably is a challenging task.
Michael Kutýe554d792014-04-12 21:54:46 +02009
Aleš Komárekac2c0fb2017-04-11 10:14:46 +020010Fluentd solves the problem by having: easy installation, small footprint,
11plugins reliable buffering, log forwarding, etc.
Michael Kutýe554d792014-04-12 21:54:46 +020012
Bartosz Kupiduraaefd0392017-11-06 09:27:40 +010013**NOTE: WORK IN PROGRES**
14NOTE: DESIGN OF THIS FORMULA IS NOT YET STABLE AND MAY CHANGE
15NOTE: FORMULA NOT COMPATIBLE WITH OLD VERSION
16
Aleš Komárekac2c0fb2017-04-11 10:14:46 +020017Sample Pillars
18==============
19
Bartosz Kupiduraaefd0392017-11-06 09:27:40 +010020General pillar structure
21------------------------
22
Aleš Komárekac2c0fb2017-04-11 10:14:46 +020023.. code-block:: yaml
Michael Kutýe554d792014-04-12 21:54:46 +020024
Bartosz Kupiduraaefd0392017-11-06 09:27:40 +010025 fluentd:
Oleksii Molchanov3243e332022-02-14 17:38:49 +020026 agent:
27 config:
28 label:
29 filename:
30 input:
31 input_name:
32 params
33 filter:
34 filter_name:
35 params
36 filter_name2:
37 params
38 match:
39 match_name:
40 params
41 input:
42 filename:
Bartosz Kupiduraaefd0392017-11-06 09:27:40 +010043 input_name:
44 params
Oleksii Molchanov3243e332022-02-14 17:38:49 +020045 input_name2:
46 params
47 filename2:
48 input_name3:
49 params
50 filter:
51 filename:
Bartosz Kupiduraaefd0392017-11-06 09:27:40 +010052 filter_name:
53 params
54 filter_name2:
55 params
Oleksii Molchanov3243e332022-02-14 17:38:49 +020056 filename2:
57 filter_name3:
58 params
59 match:
60 filename:
Bartosz Kupiduraaefd0392017-11-06 09:27:40 +010061 match_name:
62 params
Michael Kutýe554d792014-04-12 21:54:46 +020063
Bartosz Kupiduraaefd0392017-11-06 09:27:40 +010064Example pillar
65--------------
66.. code-block:: yaml
Michael Kutýe554d792014-04-12 21:54:46 +020067
Bartosz Kupiduraaefd0392017-11-06 09:27:40 +010068 fluentd:
69 enabled: true
Oleksii Molchanov3243e332022-02-14 17:38:49 +020070 agent:
71 multiworker:
72 worker_count: 4
73 config:
74 label:
75 elasticsearch_output:
76 worker: 0
77 match:
78 elasticsearch_output:
79 tag: "**"
80 type: elasticsearch
81 host: 10.100.0.1
82 port: 9200
83 buffer:
84 flush_thread_count: 8
85 monitoring:
86 worker: '0-2'
87 filter:
88 parse_log:
89 tag: 'docker.monitoring.{alertmanager,remote_storage_adapter,prometheus}.*'
90 type: parser
91 reserve_data: true
92 key_name: log
93 parser:
94 type: regexp
95 format: >-
96 /^time="(?<time>[^ ]*)" level=(?<severity>[a-zA-Z]*) msg="(?<message>.+?)"/
97 time_format: '%FT%TZ'
98 remove_log_key:
99 tag: 'docker.monitoring.{alertmanager,remote_storage_adapter,prometheus}.*'
100 type: record_transformer
101 remove_keys: log
102 match:
103 docker_log:
104 tag: 'docker.**'
105 type: file
106 path: /tmp/flow-docker.log
107 grok_example:
108 input:
109 test_log:
110 type: tail
111 path: /var/log/test
112 tag: test.test
113 parser:
114 type: grok
115 custom_pattern_path: /etc/td-agent/config.d/global.grok
116 rule:
117 - pattern: >-
118 %{KEYSTONEACCESS}
119 syslog:
120 filter:
121 add_severity:
122 tag: 'syslog.*'
123 type: record_transformer
124 enable_ruby: true
125 record:
126 - name: severity
127 value: 'record["pri"].to_i - (record["pri"].to_i / 8).floor * 8'
128 severity_to_string:
129 tag: 'syslog.*'
130 type: record_transformer
131 enable_ruby: true
132 record:
133 - name: severity
134 value: '{"debug"=>7,"info"=>6,"notice"=>5,"warning"=>4,"error"=>3,"critical"=>2,"alert"=>1,"emerg"=>0}.key(record["severity"])'
135 severity_for_telegraf:
136 tag: 'syslog.*.telegraf'
137 type: parser
138 reserve_data: true
139 key_name: message
140 parser:
141 type: regexp
142 format: >-
143 /^(?<time>[^ ]*) (?<severity>[A-Z])! (?<message>.*)/
144 time_format: '%FT%TZ'
145 severity_for_telegraf_string:
146 tag: 'syslog.*.telegraf'
147 type: record_transformer
148 enable_ruby: true
149 record:
150 - name: severity
151 value: '{"debug"=>"D","info"=>"I","notice"=>"N","warning"=>"W","error"=>"E","critical"=>"C","alert"=>"A","emerg"=>"E"}.key(record["severity"])'
152 prometheus_metric:
153 tag: 'syslog.*.*'
154 type: prometheus
155 label:
156 - name: ident
157 type: variable
158 value: ident
159 - name: severity
160 type: variable
161 value: severity
162 metric:
163 - name: log_messages
164 type: counter
165 desc: The total number of log messages.
166 match:
167 rewrite_tag_key:
168 tag: 'syslog.*'
169 type: rewrite_tag_filter
Bartosz Kupiduraaefd0392017-11-06 09:27:40 +0100170 rule:
Oleksii Molchanov3243e332022-02-14 17:38:49 +0200171 - name: ident
172 regexp: '^(.*)'
173 result: '__TAG__.$1'
174 syslog_log:
175 tag: 'syslog.*.*'
176 type: file
177 path: /tmp/syslog
178 input:
179 syslog:
180 syslog_log:
181 type: tail
182 label: syslog
183 path: /var/log/syslog
184 tag: syslog.syslog
Bartosz Kupiduraaefd0392017-11-06 09:27:40 +0100185 parser:
186 type: regexp
187 format: >-
Oleksii Molchanov3243e332022-02-14 17:38:49 +0200188 '/^\<(?<pri>[0-9]+)\>(?<time>[^ ]*) (?<host>[^ ]*) (?<ident>[a-zA-Z0-9_\/\.\-]*)(?:\[(?<pid>[0-9]+)\])?(?:[^\:]*\:)? *(?<message>.*)$/'
189 time_format: '%FT%T.%L%:z'
190 auth_log:
191 type: tail
192 label: syslog
193 path: /var/log/auth.log
194 tag: syslog.auth
195 parser:
196 type: regexp
197 format: >-
198 '/^\<(?<pri>[0-9]+)\>(?<time>[^ ]*) (?<host>[^ ]*) (?<ident>[a-zA-Z0-9_\/\.\-]*)(?:\[(?<pid>[0-9]+)\])?(?:[^\:]*\:)? *(?<message>.*)$/'
199 time_format: '%FT%T.%L%:z'
Bartosz Kupiduraaefd0392017-11-06 09:27:40 +0100200 prometheus:
Oleksii Molchanov3243e332022-02-14 17:38:49 +0200201 prometheus:
202 type: prometheus
203 prometheus_monitor:
204 type: prometheus_monitor
205 prometheus_output_monitor:
206 type: prometheus_output_monitor
207 forward:
208 forward_listen:
209 type: forward
210 port: 24224
211 bind: 0.0.0.0
212 match:
Bartosz Kupiduraaefd0392017-11-06 09:27:40 +0100213 docker_monitoring:
214 tag: 'docker.monitoring.{alertmanager,remote_storage_adapter,prometheus}.*'
215 type: relabel
216 label: monitoring