Merge "Parse MariaDB log messages in different formats into Fluentd"

This commit is contained in:
Zuul 2019-11-20 21:21:22 +00:00 committed by Gerrit Code Review
commit c641096ea6
5 changed files with 55 additions and 3 deletions

View File

@ -235,6 +235,8 @@
dest: 00-record_transformer dest: 00-record_transformer
- src: "{{ '01-rewrite-0.14' if fluentd_version == '0.14' else '01-rewrite-0.12' }}" - src: "{{ '01-rewrite-0.14' if fluentd_version == '0.14' else '01-rewrite-0.12' }}"
dest: 01-rewrite dest: 01-rewrite
- src: 02-parser
dest: 02-parser
when: when:
- enable_fluentd | bool - enable_fluentd | bool
- item.src ~ '.conf' not in customised_filter_files - item.src ~ '.conf' not in customised_filter_files

View File

@ -37,3 +37,10 @@
rewriterule34 programname ^(monasca-api|monasca-notification|monasca-persister|agent-collector|agent-forwarder|agent-statsd)$ openstack_python rewriterule34 programname ^(monasca-api|monasca-notification|monasca-persister|agent-collector|agent-forwarder|agent-statsd)$ openstack_python
rewriterule35 programname .+ unmatched rewriterule35 programname .+ unmatched
</match> </match>
# Retag log messages from MariaDB according to log format
<match infra.mariadb>
@type rewrite_tag_filter
rewriterule1 Payload ^\d{6} infra.mariadb.mysqld_safe
rewriterule2 Payload ^\d{4}-\d{2}-\d{2} infra.mariadb.mysqld
</match>

View File

@ -187,3 +187,18 @@
tag unmatched tag unmatched
</rule> </rule>
</match> </match>
# Retag log messages from MariaDB according to log format
<match infra.mariadb>
@type rewrite_tag_filter
<rule>
key Payload
pattern /^\d{6}/
tag infra.mariadb.mysqld_safe
</rule>
<rule>
key Payload
pattern /^\d{4}-\d{2}-\d{2}/
tag infra.mariadb.mysqld
</rule>
</match>

View File

@ -0,0 +1,27 @@
# Parse MariaDB logs with 6 digit date format (mysqld_safe)
<filter infra.mariadb.mysqld_safe>
@type parser
format /^(?<Timestamp>\d{6} {1,2}\d{1,2}:\d{1,2}:\d{1,2}) +(?<Payload>mysqld_safe .*)/
time_format %y%m%d %k:%M:%S
time_key Timestamp
key_name Payload
reserve_data true
</filter>
# Parse MariaDB logs with 8 digit date format (mysqld)
<filter infra.mariadb.mysqld>
@type parser
format /^(?<Timestamp>\d{4}-\d{2}-\d{2} {1,2}\d{1,2}:\d{1,2}:\d{1,2}) +(?<Payload>\w+ +(\[(?<log_level>\w+)\]|\w+: +(?<log_level>\w+):).*)/
time_format %Y-%m-%d %k:%M:%S
time_key Timestamp
key_name Payload
reserve_data true
</filter>
# Re-add timestamp record now that the log date has been parsed
<filter infra.mariadb.*>
@type record_transformer
<record>
timestamp ${time}
</record>
</filter>

View File

@ -1,11 +1,12 @@
# mysqld and its wrapper script mysqld_safe output logs using a different timestamp.
# Defer parsing the logs until the different formats have been retagged.
<source> <source>
@type tail @type tail
path /var/log/kolla/mariadb/mariadb.log path /var/log/kolla/mariadb/mariadb.log
pos_file /var/run/{{ fluentd_binary }}/mariadb.pos pos_file /var/run/{{ fluentd_binary }}/mariadb.pos
tag infra.mariadb tag infra.mariadb
format multiline format multiline
format_firstline /^\d{6}/ format_firstline /^(\d{4}-\d{2}-\d{2}|\d{6}) /
format1 /^(?<time>\d{6} \d{1,2}:\d{1,2}:\d{1,2}) (\[(?<log_level>\S+)\]|mysqld_safe) (?<Payload>.*)/ format1 /^(?<Payload>.*)/
time_format %y%m%d %k:%M:%S
enable_watch_timer false enable_watch_timer false
</source> </source>