本文主要讲述fluentd 收集 java的日志信息,对于新接触fluentd有个快速的开始.
一丶什么是fluentd
套用官网的图片及概况
Fluentd是一款开源数据收集器,可让您统一数据收集和消耗,以更好地使用和理解数据。
使用fluentd之前,你的系统是这样的
使用之后
二.安装fluentd
官网上描述的有不同的安装方式,本人使用的是rpm安装.可以根据自己的喜好选择
官网安装:https://docs.fluentd.org/v1.0/articles/java#installing-fluentd
直接执行
echo "=============================="
echo " td-agent Installation Script "
echo "=============================="
echo "This script requires superuser access to install rpm packages."
echo "You will be prompted for your password by sudo."
# clear any previous sudo permission
sudo -k
# run inside sudo
sudo sh <<SCRIPT
# add GPG key
rpm --import https://packages.treasuredata.com/GPG-KEY-td-agent
# add treasure data repository to yum
cat >/etc/yum.repos.d/td.repo <<'EOF';
[treasuredata]
name=TreasureData
baseurl=http://packages.treasuredata.com/3/redhat/\$releasever/\$basearch
gpgcheck=1
gpgkey=https://packages.treasuredata.com/GPG-KEY-td-agent
EOF
# update your sources
yum check-update
# install the toolbelt
yes | yum install -y td-agent
SCRIPT
# message
echo ""
echo "Installation completed. Happy Logging!"
echo ""
执行完之后就会在本机安装fluentd
rpm安装的话可以通过/etc/init.d/td-agent start 来开启fluentd
[root@localhost admin]# /etc/init.d/td-agent start
Starting td-agent (via systemctl): [ 确定 ]
开启完成之后,可以使用/etc/init.d/td-agent status 命令.查看fluentd的状态
[root@localhost admin]# /etc/init.d/td-agent status
td-agent is running [ 确定 ]
这样的状态表示fluentd已经启动成功了.
三.配置文件(vim /etc/td-agent/td-agent.conf)
[root@localhost admin]# vim /etc/td-agent/td-agent.conf
在配置文件里你需要为很多参数赋值,这些值必须使用 fluentd 支持的数据格式,有下列这些:
string
:字符串,最常见的格式integer
:整数float
:浮点数size
大小,仅支持整数<INTEGER>k
或<INTERGER>K
;<INTEGER>m
或<INTERGER>M
;<INTEGER>g
或<INTERGER>G
;<INTEGER>t
或<INTERGER>T
。
time
:时间,也只支持整数;<INTEGER>s
或<INTERGER>S
;<INTEGER>m
或<INTERGER>M
;<INTEGER>h
或<INTERGER>H
;<INTEGER>d
或<INTERGER>D
。
array
:按照 JSON array 解析;hash
:按照 JSON object 解析。
四.命令
- fluentd最核心的就是命令模块,每种命令都是完成不同的处理.
- source 表示fluentd的输入源,比如原生自带的http和foeward模块,分别用来接收http请求和tcp请求
<source>
@type forward
port 24224
tag debug.test
</source>
match 直接使用原生的debug输出到控制台type stdout
五.java代码
private static FluentLogger LOG = FluentLogger.getLogger("debug.test", "192.168.150.156", 24224);
public static void main(String[] args) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("from", "userA");
map.put("to", "userB");
LOG.log("hello", map);
FluentLogger.closeAll();
}
maven构建的项目需要加入以下依赖
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.6</version>
</dependency>
<dependency>
<groupId>org.fluentd</groupId>
<artifactId>fluent-logger</artifactId>
<version>0.3.4-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
重启fluentd(/etc/init.d/td-agent restart),执行java代码,输入以下命令,查看日志输出:
tail -f /var/log/td-agent/td-agent.log
执行完后就可以看到这样的信息:
就此这个小案例就成功了,想要更详细的了解fluentd请参考官网信息fluentd
本人也是最近开始学习fluentd,有什么不足之处,还请指正.