Aleš Komárek | ac2c0fb | 2017-04-11 10:14:46 +0200 | [diff] [blame] | 1 | =============== |
| 2 | Fluentd Formula |
| 3 | =============== |
Michael Kutý | e554d79 | 2014-04-12 21:54:46 +0200 | [diff] [blame] | 4 | |
Aleš Komárek | ac2c0fb | 2017-04-11 10:14:46 +0200 | [diff] [blame] | 5 | Many web/mobile applications generate huge amount of event logs |
| 6 | (c,f. login, logout, purchase, follow, etc). Analyzing these event |
| 7 | logs can be quite valuable for improving services. However, collecting |
| 8 | these logs easily and reliably is a challenging task. |
Michael Kutý | e554d79 | 2014-04-12 21:54:46 +0200 | [diff] [blame] | 9 | |
Aleš Komárek | ac2c0fb | 2017-04-11 10:14:46 +0200 | [diff] [blame] | 10 | Fluentd solves the problem by having: easy installation, small footprint, |
| 11 | plugins reliable buffering, log forwarding, etc. |
Michael Kutý | e554d79 | 2014-04-12 21:54:46 +0200 | [diff] [blame] | 12 | |
Bartosz Kupidura | aefd039 | 2017-11-06 09:27:40 +0100 | [diff] [blame] | 13 | **NOTE: WORK IN PROGRES** |
| 14 | NOTE: DESIGN OF THIS FORMULA IS NOT YET STABLE AND MAY CHANGE |
| 15 | NOTE: FORMULA NOT COMPATIBLE WITH OLD VERSION |
| 16 | |
Aleš Komárek | ac2c0fb | 2017-04-11 10:14:46 +0200 | [diff] [blame] | 17 | Sample Pillars |
| 18 | ============== |
| 19 | |
Bartosz Kupidura | aefd039 | 2017-11-06 09:27:40 +0100 | [diff] [blame] | 20 | General pillar structure |
| 21 | ------------------------ |
| 22 | |
Aleš Komárek | ac2c0fb | 2017-04-11 10:14:46 +0200 | [diff] [blame] | 23 | .. code-block:: yaml |
Michael Kutý | e554d79 | 2014-04-12 21:54:46 +0200 | [diff] [blame] | 24 | |
Bartosz Kupidura | aefd039 | 2017-11-06 09:27:40 +0100 | [diff] [blame] | 25 | fluentd: |
Oleksii Molchanov | 3243e33 | 2022-02-14 17:38:49 +0200 | [diff] [blame^] | 26 | 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 Kupidura | aefd039 | 2017-11-06 09:27:40 +0100 | [diff] [blame] | 43 | input_name: |
| 44 | params |
Oleksii Molchanov | 3243e33 | 2022-02-14 17:38:49 +0200 | [diff] [blame^] | 45 | input_name2: |
| 46 | params |
| 47 | filename2: |
| 48 | input_name3: |
| 49 | params |
| 50 | filter: |
| 51 | filename: |
Bartosz Kupidura | aefd039 | 2017-11-06 09:27:40 +0100 | [diff] [blame] | 52 | filter_name: |
| 53 | params |
| 54 | filter_name2: |
| 55 | params |
Oleksii Molchanov | 3243e33 | 2022-02-14 17:38:49 +0200 | [diff] [blame^] | 56 | filename2: |
| 57 | filter_name3: |
| 58 | params |
| 59 | match: |
| 60 | filename: |
Bartosz Kupidura | aefd039 | 2017-11-06 09:27:40 +0100 | [diff] [blame] | 61 | match_name: |
| 62 | params |
Michael Kutý | e554d79 | 2014-04-12 21:54:46 +0200 | [diff] [blame] | 63 | |
Bartosz Kupidura | aefd039 | 2017-11-06 09:27:40 +0100 | [diff] [blame] | 64 | Example pillar |
| 65 | -------------- |
| 66 | .. code-block:: yaml |
Michael Kutý | e554d79 | 2014-04-12 21:54:46 +0200 | [diff] [blame] | 67 | |
Bartosz Kupidura | aefd039 | 2017-11-06 09:27:40 +0100 | [diff] [blame] | 68 | fluentd: |
| 69 | enabled: true |
Oleksii Molchanov | 3243e33 | 2022-02-14 17:38:49 +0200 | [diff] [blame^] | 70 | 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 Kupidura | aefd039 | 2017-11-06 09:27:40 +0100 | [diff] [blame] | 170 | rule: |
Oleksii Molchanov | 3243e33 | 2022-02-14 17:38:49 +0200 | [diff] [blame^] | 171 | - 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 Kupidura | aefd039 | 2017-11-06 09:27:40 +0100 | [diff] [blame] | 185 | parser: |
| 186 | type: regexp |
| 187 | format: >- |
Oleksii Molchanov | 3243e33 | 2022-02-14 17:38:49 +0200 | [diff] [blame^] | 188 | '/^\<(?<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 Kupidura | aefd039 | 2017-11-06 09:27:40 +0100 | [diff] [blame] | 200 | prometheus: |
Oleksii Molchanov | 3243e33 | 2022-02-14 17:38:49 +0200 | [diff] [blame^] | 201 | 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 Kupidura | aefd039 | 2017-11-06 09:27:40 +0100 | [diff] [blame] | 213 | docker_monitoring: |
| 214 | tag: 'docker.monitoring.{alertmanager,remote_storage_adapter,prometheus}.*' |
| 215 | type: relabel |
| 216 | label: monitoring |