td-agent收集日志到mongobd

来源:互联网 发布:中国复杂网络大会 编辑:程序博客网 时间:2024/05/06 21:06

机器:ubuntu,以下环境皆是该系统
td_agent 会将日志文件收集到 数据库 方便查询和管理。

1.安装

http://docs.fluentd.org/v0.12/articles/install-by-deb#step-1--install-from-apt-repository
连接上有几种安装命令,ubuntu这个即可

curl -L https://toolbelt.treasuredata.com/sh/install-ubuntu-trusty-td-agent2.sh | sh

安装完 可以使用下面命令控制td agent的启动和关闭
$ /etc/init.d/td-agent start 
$ /etc/init.d/td-agent stop 
$/etc/init.d/td-agent restart

2.td-agent的配置文件

默认路径:/etc/td-agent/td-agent.conf

默认的文件内容很多,可以删掉 有用的就下面这些
<source>type tailpath /tmp/snn.log pos_file /tmp/td-agent_pos_file_snn tag mongo.snn.20170216format /^(?<server_no>[0-9]*)\t(?<player_id>[0-9]*)\t(?<action>[A-Z_]*)\t(?<category>[0-9a-zA-Z_]*)\t(?<message>.*)\t(?<action_time>[0-9\-]* [0-9\:]*)$/time_format %Y-%m-%d %H:%M:%Slog_level error</source><match mongo.snn.*>type mongodatabase snncollection log_20170216host 127.0.0.1port 27017flush_interval 10s</match>

type tail: tail方式是 Fluentd 内置的输入方式,其原理是不停地从源文件中获取增量日志,与linx命令tail相似,也可以使用其他输入方式如http、forward等输入,也可以使用输入插件,将 tail 改为相应的插件名称 如: type tail_ex  ,注意tail_ex为下划线。
format :日志文件中每条日志对应的正则表达式,可以取出日志文本中的数据
默认情况下td agent的日志文件/var/log/td-agent/td-agent.log
tag :指定tag,tag被用来对不同的日志进行分类,与后面的标签match相匹配。
match标签后面可以跟正则表达式以匹配我们指定的tag,只有匹配成功的tag对应的日志才会运用里面的配置。配置中的其它项都比较好理解,看注释就可以了,其中flush_interval是用来控制多长时间将日志写入MongoDB一次。
path:日志文件路径

3.多服务情况
多服务情况下,希望每个服的日志是自动分开的,可以使用编号将创建多个数据库来存储
在/etc/server_no 文件中写上服务器编号(随便)
防止多次修改配置文件,可以使用下面shell脚本生成
生成td agent配置文件的脚本
#! /bin/bashNOW_DATE=`date +%Y%m%d`CONF_FILE=/etc/td-agent/td-agent.conf> ${CONF_FILE}gen_conf_file(){DB_NAME=kiwi_s${SERVER_NO}LOG_FILE=/tmp/actions_server${SERVER_NO}.logcat >> ${CONF_FILE} << EOF<source>type tailpath ${LOG_FILE}pos_file /tmp/td-agent_pos_file${SERVER_NO}tag mongo.${DB_NAME}.${NOW_DATE}format /^(?<server_no>[0-9]*)\t(?<player_id>[0-9]*)\t(?<action>[A-Z_]*)\t(?<category>[0-9a-zA-Z_]*)\t(?<message>.*)\t(?<action_time>[0-9\-]* [0-9\:]*)$/time_format %Y-%m-%d %H:%M:%Slog_level error</source><match mongo.${DB_NAME}.*>type mongodatabase ${DB_NAME}collection log_${NOW_DATE}host 127.0.0.1port 27017flush_interval 10s</match>EOF}while read SERVER_NOdo    gen_conf_filedone < /etc/kiwi_server_no/etc/init.d/td-agent restart

脚本的运行交给crontab 每天执行一次,每天会按时间命名数据库
sudocrontab-e
追加
0 0 * * * /bin/bash /data/scripts/kiwi/gen_td_agent_conf.sh > /dev/null 2>&1
每天00:00:00会执行脚本一次,每天的td_agent的配置都会随日期变化,这样数据库和数据表都很清晰,便于记录和查找



0 0
原创粉丝点击