搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 运维菜 > linux-flume1.8收集nginx日志到kafka

linux-flume1.8收集nginx日志到kafka

运维菜 2017-11-28

简介

Apache Flume是一个分布式、可靠、可用的系统,用于从大量不同的源有效地收集、聚合、移动大量日志数据进行集中式数据存储。

工作流程简介

Flume的核心是Agent,Agent中包含Source、Channel、Sink。Agent是最小的独立运行单位。在Agent中,数据流向为Source->Channel->Sink。

linux-flume1.8收集nginx日志到kafka

这里我们主要讲下收集nginx日志的几个过程:

  1. nginx产生访问日志;

  2. flume通过tail -F 监控文件增加来收集数据到source,传递给channel;

  3. channel数据通道,接收Source的数据并储存,传递给Sink;

  4. Sink消费Channel中的数据,传递到kafka。

Flume传输的数据的基本单位是Event,Event同时也是事务操作的基本单位。通常传输的日志内容存储在Event中。Event由可选的header和载有数据的byte array构成。

linux-flume1.8收集nginx日志到kafka

配置示例

下载jdk和apache-flume,jdk可以在oracle官网就可以下载到,apache-flume可以在国内apache镜像源(比如阿里云镜像)里面就有了。

配置好jdk环境,解压apache-flume,目前最新稳定版本是1.8.0

linux-flume1.8收集nginx日志到kafka

1、设置flume的JAVA_HOME变量

cd apache-flume-1.8.0-bin/conf

cp cp flume-env.sh.template flume-env.sh

echo 'export JAVA_HOME=/opt/jdk' >> flume-env.sh

2、设置flume配置文件

vim agent1.conf

agent.sources.s1.type=exec

#这里执行要运行获取数据的命令

agent.sources.s1.command=tail -F /usr/loca/nginx/logs/access.log

agent.sources.s1.channels=c1

agent.channels.c1.type=memory

agent.channels.c1.capacity=10000

agent.channels.c1.transactionCapacity=100

#设置Kafka接收器

agent.sinks.k1.type= org.apache.flume.sink.kafka.KafkaSink

agent.sinks.k1.brokerList=192.168.30.2:9092

#设置Kafka的Topic

agent.sinks.k1.topic=nginx_logs

#设置序列化方式

agent.sinks.k1.serializer.class=kafka.serializer.StringEncoder

agent.sinks.k1.channel=c1

3、启动

./bin/flume-ng agent -n agent -c conf -f conf/agent1.conf -Dflume.root.logger=INFO,console

kafka环境搭建可以参照这个文章:CentOS-尝试部署kafka集群 https://www.toutiao.com/i6473821524779336205/


版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《linux-flume1.8收集nginx日志到kafka》的版权归原作者「运维菜」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注运维菜微信公众号

运维菜微信公众号:yunweixiaocai

运维菜

手机扫描上方二维码即可关注运维菜微信公众号

运维菜最新文章

精品公众号随机推荐