Docker内日志采集工具Flume的安装和使用


前言

前提:Docker已安装!
如果没有安装,安装教程可以参考:
链接: Docker内分布式消息系统kafka的安装和使用第一部分:Centos7安装Docker


启动Docker服务

启动docker服务:

systemctl start docker
#或者 
service docker start

检查docker进程的运行状态:

systemctl status docker 
#或者
service docker status

在这里插入图片描述


一、安装Flume

docker中查看镜像

docker search flume

在这里插入图片描述
拉取pull 新版稳定 flume2.0.0

docker pull probablyfine/flume

可能存在的问题

镜像拉取时,可能超时,这就需要我们更改镜像源。
方法一(不太好用)

#一条一条的输入命令,其中{}为一条命令,总共六条。
#如果/etc/docker	已经存在,则不需要进行创建,直接跳过第一条命令。
sudo mkdir -p /etc/docker	

sudo tee /etc/docker/daemon.json <<-'EOF'

{
  "registry-mirrors": ["http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com"]
}

EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

方法二(很好用!)

#一条一条的输入命令,其中{}为一条命令,总共六条。
#如果/etc/docker	已经存在,则不需要进行创建,直接跳过第一条命令。
sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'

{
  "registry-mirrors": ["https://yxzrazem.mirror.aliyuncs.com"]
}

EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

查看已经拉取的镜像

docker images

在这里插入图片描述

二、使用Flume

1.启动容器

docker run --name flume-test --restart always --net=host -e FLUME_AGENT_NAME="agent" -d probablyfine/flume

查看已经启动的容器

docker ps

在这里插入图片描述

2.进入容器

docker exec -it flume-test /bin/bash

3.案例

一共有两个案例

案例1 Avro source

Avro可以发送一个给定的文件给Flume,Avro 源使用AVRO RPC机制。

1) 创建agent配置文件

cd /opt/flume

touch ./conf/avro.conf#在conf目录下编辑一个avro.conf空文件

cd ./conf

然后,我们在avro.conf写入以下内容

cat <<EOF >> avro.conf

a1.sources = r1
a1.sinks = k1
a1.channels = c1

# Describe/configure the source
a1.sources.r1.type = avro
a1.sources.r1.channels = c1
a1.sources.r1.bind = 0.0.0.0
a1.sources.r1.port = 4141
    #注意这个端口名,在后面的教程中会用得到

# Describe the sink
a1.sinks.k1.type = logger

# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

EOF

上面Avro Source参数说明如下:

Avro Source的别名是avro,也可以使用完整类别名称org.apache.flume.source.AvroSource,因此,上面有一行设置是a1.sources.r1.type = avro,表示数据源的类型是avro。

bind绑定的ip地址或主机名,使用0.0.0.0表示绑定机器所有的接口。a1.sources.r1.bind = 0.0.0.0,就表示绑定机器所有的接口。

port表示绑定的端口。a1.sources.r1.port = 4141,表示绑定的端口是4141。

a1.sinks.k1.type = logger,表示sinks的类型是logger。

2) 启动flume agent a1

/opt/flume/bin/flume-ng agent -c . -f /opt/flume/conf/avro.conf -n a1 -Dflume.root.logger=INFO,console #启动日志控制台

这里我们把这个窗口称为agent窗口。

在这里插入图片描述

3) 创建指定文件
先打开另外一个终端,重新进入该容器(进入容器命令:docker exec -it flume-test /bin/bash)后,在/opt/flume下写入一个文件log.00,内容为hello,world:

cd /opt/flume  
touch log.00 
echo "hello world" > ./log.00

我们再打开另外一个终端,重新进入该容器(进入容器命令:docker exec -it flume-test /bin/bash)后执行:

bin/flume-ng avro-client --conf conf -H localhost -p 4141 -F /opt/flume/log.00 

此时我们可以看到第一个终端(agent窗口)下的显示,也就是在日志控制台,就会把log.00文件的内容打印出来:

在这里插入图片描述
avro source执行成功!

案例2 netcatsource

1) 创建agent配置文件

 cd /opt/flume
 sudo vim ./conf/example.conf #在conf目录创建example.conf

cd ./conf

在example.conf里写入以下内容:

cat <<EOF >> example.conf 

#example.conf: A single-node Flume configuration  
 
# Name the components on this agent  
a1.sources = r1  
a1.sinks = k1  
a1.channels = c1  
 
# Describe/configure the source  
a1.sources.r1.type = netcat  
a1.sources.r1.bind = localhost  
a1.sources.r1.port = 44444 
        #同上,记住该端口名
 
# Describe the sink  
a1.sinks.k1.type = logger  
 
# Use a channel which buffers events in memory  
a1.channels.c1.type = memory  
a1.channels.c1.capacity = 1000  
a1.channels.c1.transactionCapacity = 100  
 
# Bind the source and sink to the channel  
a1.sources.r1.channels = c1  
a1.sinks.k1.channel = c1  

EOF

2)启动flume agent (即打开日志控制台):

cd /opt/flume

/opt/flume/bin/flume-ng agent --conf ./conf --conf-file ./conf/example.conf --name a1 -Dflume.root.logger=INFO,console

打开日志控制台
在这里插入图片描述

再打开一个终端,进入该容器(进入容器命令:docker exec -it flume-test /bin/bash)后,执行命令:

echo "Hello, world!" > /dev/tcp/localhost/44444

echo "Hello, Flume" > /dev/tcp/localhost/44444

然后就可以在终端下通过echo输入任何字符,第一个终端的日志控制台也会有相应的显示,如我们输入"Hello, world!", “Hello, Flume” 得出

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值