我按照此链接中的说明将 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。