在CentOS上安装Fluentd实现把nginx日志存入mongo

2018-06-26 宋洋葱 宋洋葱

下载官方安装脚本并启动:

wget https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh
chmod +x install-redhat-td-agent2.sh
./install-redhat-td-agent2.sh
systemctl start td-agent

查看日志

tail -f /var/log/td-agent/td-agent.log

配置

vi /etc/td-agent/td-agent.conf

文件内容如下,source为nginx日志格式化,match mongo为使用mongo存储

<source>
  @type tail
  format /^(?<remote>[^ ]*) (?<host>[-]) (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^\"]*) +\S*)?" (?<code>[^ ]*) (?<size>[^ ]*) "(?<referer>[^\"]*)" "(?<agent>[^\"]*)"/
  time_format %d/%b/%Y:%H:%M:%S %z
  path /var/log/nginx/access.log
  pos_file /var/log/td-agent/nginx.access.pos
  tag mongo.nginx.access
</source>

<match mongo.**>
  type mongo
  database nginx
  collection access
  host 192.168.1.149
  port 47017
  flush_interval 10s
</match>

配置文件说明:

  • type tail: tail方式是 fluentd 内置的输入方式,其原理是不停地从源文件中获取新的日志
  • format nginx: 指定使用 fluentd 内置的 nginx 日志解析器。
  • path /data/logs/nginx/access.log: nginx日志文件位置。
  • pos_file /data/logs/nginx/access.log.pos:fluentd会把读取nginx日志并
  • tag mongo.nginx: 指定tag,tag被用来对不同的日志进行分类
  • type mongo:fluentd插件类型,这里是针对mongodb的插件
  • database:数据库名字
  • collection:表名
  • host:主机
  • port:端口,默认27017
  • flush_interval:刷新间隔,10s写入一次数据

改了配置文件记得重启

systemctl restart td-agent

参考