流利的apache格式[警告]:模式不匹配:

时间:2016-02-11 00:04:53

标签: apache fluentd

在我的/etc/fluent/fluent.conf

<source>
  @type tail
  format apache2
  path /var/log/apache2/other_vhosts_access.log
  tag apache2.access
</source>
  

错误/警告:2016-02-11 00:59:10 +0100 [警告]:模式不匹配:   “mybebsite.dz:443 105.101.114.234 - - [11 / Feb / 2016:00:59:10 +0100]   \“POST / __ es / _all / _search HTTP / 1.1 \”200 794   \“https://mywebsite.net/ \”\“Mozilla / 5.0(Windows NT 6.1; WOW64;   rv:43.0)Gecko / 20100101 Firefox / 43.0 \“”

为什么这个模式不匹配? 最好的。

2 个答案:

答案 0 :(得分:0)

似乎tail插件不支持apache日志格式的格式&#34; vhost_combined&#34;但是&#34;合并了#34;。
如何更改apache配置文件如下:

/etc/apache2/conf-available/other-vhosts-access-log.conf
之前:CustomLog ${APACHE_LOG_DIR}/other_vhosts_access.log vhost_combined
(将 vhost_combined 更改为合并
后:CustomLog ${APACHE_LOG_DIR}/other_vhosts_access.log combined

答案 1 :(得分:0)

我一直流利地警告:模式不匹配,因此我的过滤器部分无法正常工作。然后,我认真对待了这个警告,并通过创建一个正则表达式解决了这个问题。因此,我的td-agent.conf如下:

 <source>
    @type tail
    format **/^([^ ]*) (?<host>[^ ]*) [^ ]* "(?<method>\S+) (?<path>[^ ]* +\S*)? (?<code>[^ ]*) (?<size>[^ ]*) (?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)")?/**
    path /var/log/apache2/access.log
    pos_file /var/log/td-agent/httpd.access.pos
    tag s3.apache.access
  </source>
  <filter **>
    @type grep
    <regexp>
      key path
      pattern \/aws\/project_launch\/view\/[\w\W]*
    </regexp>
  </filter>
  <match **>
    @type s3
    aws_key_id xxxxxx
    aws_sec_key xxxxxx
    s3_bucket bucketalifluentd
    s3_region eu-west-1
    path logs_viewshare/
    buffer_path /var/log/td-agent/buffer/s3
    time_slice_format %Y-%m-%d/%H
    time_slice_wait 2m
  </match>

请注意,由于您在 apache2.conf 中进行了其他配置,因此apache2日志可能与您有所不同。您可以使用rubular

用于在ruby中创建正则表达式,因为fluentd / td-agent已用ruby编写。 之后,您可以在目录 /var/log/td-agent/buffer/s3.xxx

中查看已收集日志的缓冲区。