我正在尝试使用Fluentd尾源将Python日志文件移动到ElastiSearch中:
<source>
@type forward
@id input1
@label @mainstream
port 24224
</source>
<filter **>
@type stdout
</filter>
<source>
@type tail
path /fluentd/formshare/error_log
pos_file /fluentd/error_log.pos
tag formshare.error
<parse>
@type multiline
format_firstline /\d{4}-\d{1,2}-\d{1,2}/
format1 /(?<timestamp>[^ ]* [^ ]*) (?<level>[^\s]+:)(?<message>[\s\S]*)/
</parse>
</source>
<label @mainstream>
<match formshare.access.**>
@type elasticsearch
host 172.28.1.1
port 9200
logstash_format true
logstash_prefix formshare_access
</match>
<match formshare.error.**>
@type elasticsearch
host 172.28.1.1
port 9200
logstash_format true
logstash_prefix formshare_error
</match>
<match **>
@type file
@id output1
path /fluentd/log/data.*.log
symlink_path /fluentd/log/data.log
append true
time_slice_format %Y%m%d
time_slice_wait 10m
time_format %Y%m%dT%H%M%S%z
</match>
</label>
从启动分析文件的FluentD服务中可以看到:
/ fluentd / formshare / error_log的尾巴
并且pos_file有数据
/fluentd/formshare/error_log 0000000000000604 000000000098252c
但是我在ElasticSearch中没有得到错误。也许可以解析,但是我对Regex不好(从https://www.datadoghq.com/blog/multiline-logging-guide/那里得到了它)
与Elastic的连接正在工作。我与“ fluent-logger-python”一起使用的匹配formshare.access。**可以正常工作。只是尾巴源似乎不起作用。
我对Fluentd来说是个超级新手,所以我不知道我是用正确的方式做事还是在配置文件中需要其他东西。
感谢您的帮助。
答案 0 :(得分:0)
经过反复试验后,我将其与该conf文件一起使用:
<source>
@type forward
@id input1
@label @mainstream
port 24224
</source>
<filter **>
@type stdout
</filter>
<source>
@type tail
@label @mainstream
@id input2
path /fluentd/formshare/error_log
pos_file /fluentd/error_log.pos
tag formshare.error
<parse>
@type multiline
format_firstline /\d{4}-\d{1,2}-\d{1,2}/
format1 /(?<time>\d{4}-\d{1,2}-\d{1,2} +\d{1,2}:\d{1,2}:\d{1,2},\d{3}) +(?<level>[A-Z]+)[ ]{1,2}\[(?<module>(.*?))\]\[(?<thread>(.*?))\] (?<messages>.*)/
time_format %Y-%m-%d %H:%M:%S,%L
</parse>
</source>
<label @mainstream>
<match formshare.access.**>
@type elasticsearch
host 172.28.1.1
port 9200
logstash_format true
logstash_prefix formshare_access
time_key_format %Y.%m.%d
</match>
<match formshare.error.**>
@type elasticsearch
host 172.28.1.1
port 9200
logstash_format true
logstash_prefix formshare_error
time_key_format %Y.%m.%d
</match>
<match **>
@type file
@id output1
path /fluentd/log/data.*.log
symlink_path /fluentd/log/data.log
append true
time_slice_format %Y%m%d
time_slice_wait 10m
time_format %Y%m%dT%H%M%S%z
</match>
</label>
我遇到的问题: