td-agent收集日志到mongobd

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

1.安装

连接上有几种安装命令,ubuntu这个即可


安装完 可以使用下面命令控制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 tail
path /tmp/snn.log 
pos_file /tmp/td-agent_pos_file_snn 
tag mongo.snn.20170216
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:%S
log_level error
</source>

<match mongo.snn.*>
type mongo
database snn
collection log_20170216
host 127.0.0.1
port 27017
flush_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/bash

NOW_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}.log
cat >> ${CONF_FILE} << EOF
<source>
type tail
path ${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:%S
log_level error
</source>

<match mongo.${DB_NAME}.*>
type mongo
database ${DB_NAME}
collection log_${NOW_DATE}
host 127.0.0.1
port 27017
flush_interval 10s
</match>

EOF
}

while read SERVER_NO
do
    gen_conf_file
done < /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的配置都会随日期变化,这样数据库和数据表都很清晰,便于记录和查找



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值