Openresty+Lua+Kafka实现日志实时采集(已测试)

概况

最近实习领导要我了解一下nginx+lua实现日志采集,我们这边日志的采集好像就是用的这个。然后就在网上找了一下教程,说老实话,因为以前没接触过过这两个东西所以一开始比较懵。最终决定参考一位大哥的教程
不得不说他的教程应该是救了很多人,因为我看到的Openresty+Lua+Kafka的教程八成都是原封不动搬他的,连图都没改就离谱。甚至到google上还有英文版的,截图用的也是一模一样。(当然我不确定这篇博客源头到底是哪,我就暂且认定是他原创的了)但我自己在搭建的时候到最后调试出kafka消费成功时差不多花了三个半工作日,一天八个小时工作每天花四五个小时算下来我调试成功总共也得花了十几二十个小时,还是太菜了。不知道有没有朋友跟我一样在也是照着这篇博客做的但是调试了很久才解决,或者到最后放弃了。所以接下来我就把我搭建的这个过程梳理一遍,可以供以后自己参考,最好也能帮助到和我遇到同样麻烦的人。

1.环境配置

首先我要先声明我用的环境以及各个组件的版本,因为组件版本不同很可能就会导致搭建失败,这也就是我前两个工作日焦头烂额的地方。

系统:Ubuntu 18.04 LTS(我用的是win10的子系统)
kafka:kafka_2.12-2.7.0
openresty:openresty-1.17.8.2

下面我先描述一下我前两天遇到的坑,由于以前自己配置hadoop集群的时候饱受组件版本过高而导致不兼容的困扰,现在我一般都习惯用低版本的组件以防不兼容。然而这次反过来了,我第一篇参考的文章用的是openresty-1.7版本的,它里面依赖的是openssl-1.0.1版本的。但是在win10子系统的ubuntu默认给你装的是openssl-1.1.1,这就导致了不兼容。然后我就想降级openssl,降级过后又有别的问题。我就放一放找别的出路,然后再google上看到说旧版本是不兼容的,所以我就换了这个1.17的,然后就好使了。至于kafka的版本我觉得应该是无所谓的,下面就开始介绍过程了。

2.Openresty安装

这一部分最好就是参考一下官方的文档
1.下载Openresty依赖:

apt-get install libpcre3-dev \
    libssl-dev perl make build-essential curl

具体ubuntu或者centos的依赖下载官方都会给出

2.编译安装Openresty:

#1.安装openresty:
mkdir /opt/nginx
cd /opt/nginx/ # 安装文件所在目录 
wget https://openresty.org/download/openresty-1.17.8.2.tar.gz 
tar -xzf openresty-1.17.8.2.tar.gz
cd /opt/module/openresty-1.17.8.2
#2.配置: 
# 指定目录为/opt/openresty,默认在/usr/local。 
./configure --prefix=/opt/openresty \ 
            --with-luajit \ 
            --without-http_redis2_module \ 
            --with-http_iconv_module 
make 
make install 

大概解释下配置这一步你可以直接./configure进行配置,也可以向官方文档下面那段一样指定一些参数,其中有一个

--with-http_postgres_module

这一个选项会涉及到一些其他的依赖,可能会需要用到下面这两个包。

apt-get install libpq-dev
apt-get install zlib1g-dev

但是,这个模块对我们要完成的东西实际上没有影响,所以我建议不要加上,至少我最后做成的时候并没有加上这条。

3.安装lua-resty-kafka

因为我们需要将数据通过nginx+lua脚本转发到Kafka中,编写lua脚本时需要用到lua模块中的一些关于Kafka的依赖。

#下载lua-resty-kafka:
cd /opt/nginx/ 
wget https://github.com/doujiang24/lua-resty-kafka/archive/master.zip 
unzip master.zip -d /opt/nginx/ 
     
#拷贝kafka相关依赖脚本到openresty 
cp -rf /opt/nginx/lua-resty-kafka-master/lib/resty/kafka/ /opt/openresty/lualib/resty/

这个lua-resty-kafka是用来串通kafka和nginx的,后面我们的lua脚本就是要调用对应的模块。
我们还需要安装一个kafka,这个我就不上教程了,因为这一部分相对比较独立,也就是你不会因为kafka安错了就导致后面nginx跑不起来,而网上有很多教程。你找一个教程做到能创建一个topic然后能生产能消费就ok了。
但是这里我要特别提一下kafka的配置文件

#找到kafka配置文件
#我的配置文件路径在/opt/kafka/kafka_2.12-2.7.0/config
vi server.properties
#配置内容如下
broker.id=1
host.name = 127.0.0.1
############################# Socket Server Settings #############################

listeners=PLAINTEXT://127.0.0.1:9092
advertised.listeners=PLAINTEXT://127.0.0.1:9092
advertised
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值