Fluentd 未将 apache 访问日志写入 mongodb

Fluentd 未将 apache 访问日志写入 mongodb

我按照此链接中的说明将 apache 访问日志写入 mongo db-http://docs.fluentd.org/articles/apache-to-mongodb

但是没有任何内容写入 mongo DB。我正在使用 进行检查db["access"].findOne();

我的文件内容td-agent.conf如下-

<source>
  type tail
  format apache2
  path /var/log/httpd/access_log
  pos_file /var/log/td-agent/apache2.access_log.pos
  tag mongo.apache.access
</source>

<match mongo.*.*>
  # plugin type
  type mongo

  # mongodb db + collection
  database apache
  collection access

  # mongodb host + port
  host localhost
  port 27017

  # interval
  flush_interval 10s

  # make sure to include the time key
  include_time_key true
</match>

我知道 td-agent 正在查看这个配置文件,因为/etc/init.d/td-agent start如果配置文件中有错误就会失败。

上述 pos_file 的内容如下-

/var/log/httpd/access_log   0000000000000000    00000000

我正在寻求帮助,以了解为什么这可能不起作用。我遗漏了什么吗?

更新 1: 如果我为上述写入 stdout 的源 (apache 访问日志) 添加匹配项,我就能看到记录到 td-agent 日志中的事件。因此,写入 mongodb 似乎存在问题。我可以使用命令从命令行连接到 mongo mongo

更新 2: 突然间,它开始工作了,我无法解释为什么。我只是更改了 td-agent 配置,使输出与 stdout 匹配,然后再返回。现在我不知道哪里出了问题,也不知道它为什么开始工作了。:(

谢谢,

答案1

后来发现是权限问题。后来它能正常工作是因为我更改了 td-agent init.d 脚本,以 root 身份运行该进程。默认情况下,它以用户 td-agent 身份运行,在这种情况下,它会抱怨它没有权限访问 apache 访问日志文件,即使日志文件的权限为 666。

相关内容