kafka-nginx module模块添加与简单使用

Nginx Kafka Module环境搭建

参考官网:https://github.com/brg-liuwei/ngx_kafka_module/blob/master/README.md

进入目录 cd /usr/local/src/

1.上传下载的安装文件

2.进入libkafka目录 cd librdkafka

安装依赖 yum install -y gcc gcc-c++ pcre-devel zlib-level

编译安装 安装完成的默认路径/usr/local/include

./configure

make && make install


3.进入nginx目录 cd nginx-1.8.1/ (编译nginx,然后将将插件同时编译)

./configure --add-module=/usr/local/src/ngx_kafka_module/

make

make install

4.修改配置文件,需要提前启动zk并创建要配置的主题信息


5.开启消费者接收消息


6.启动nginx 进入nginx sbin目录./nginx ,

1)报错,找不到kafka.so.1的文件 error while loading shared libraries: librdkafka.so.1: cannot open shared object file: No such file or directory

2)加载so库 echo "/usr/local/lib" >> /etc/ld.so.conf ldconfig

3)重新启动成功访问:

curl xxxxx/brokers/topics -d "hello ngx_kafka_module" -v


7.页面埋点采集配置

8.采集服务器js代码

(function () {

   var params = {};

   //Document对象数据

   if(document) {

       params.domain = document.domain || '';

       params.url = document.URL || '';

       params.title = document.title || '';

       params.referrer = document.referrer || '';

   }  

   //Window对象数据

   if(window && window.screen) {

       params.sh = window.screen.height || 0;

       params.sw = window.screen.width || 0;

       params.cd = window.screen.colorDepth || 0;

   }  

   //navigator对象数据

   if(navigator) {

       params.lang = navigator.language || '';

   }  

   //解析_maq配置

   if(_maq) {

      for(var i in _maq) {

            var paramsName =  _maq[i][0];

            var paramsValue =  _maq[i][1];

            params[paramsName] = paramsValue;

        }

   }  

   //拼接参数串

   var args = '';

   for(var i in params) {

       if(args != '') {

           args += '&';

       }  

       args += i + '=' + encodeURIComponent(params[i]);

   }  

   //通过Image对象请求后端脚本

   var img = new Image(1, 1);

   img.src = 'http://xxxxx/log.gif?' + args;

})();

html页面的js脚本,访问采集服务器的js

<script type="text/javascript">

   var _maq = _maq || [];

   $(function (){

       $("button").click(function () {

           var listenClick = $(this).attr("data-id");

           var userName = $("#userId").val();

           var date = getFormatDate();

           _maq.push(['_setAccount', userName]);

           _maq.push(['_setClick', listenClick]);

           _maq.push(['_setClickTime', date]);

           //解析_maq配置

           var ma = document.createElement('script');

           ma.type = 'text/javascript';

           ma.async = true;

           ma.src = 'http://xxxxx/ma/ma.js';

           var s = document.getElementsByTagName('script')[0];

           s.parentNode.insertBefore(ma, s);

       })

   })

   function getFormatDate(){

       var nowDate = new Date();

       var year = nowDate.getFullYear();

       var month = nowDate.getMonth() + 1 < 10 ? "0" + (nowDate.getMonth() + 1) : nowDate.getMonth() + 1;

       var date = nowDate.getDate() < 10 ? "0" + nowDate.getDate() : nowDate.getDate();

       var hour = nowDate.getHours()< 10 ? "0" + nowDate.getHours() : nowDate.getHours();

       var minute = nowDate.getMinutes()< 10 ? "0" + nowDate.getMinutes() : nowDate.getMinutes();

       var second = nowDate.getSeconds()< 10 ? "0" + nowDate.getSeconds() : nowDate.getSeconds();

       return year + "-" + month + "-" + date+" "+hour+":"+minute+":"+second;

   }

</script>

配置nginx.conf

配置kafka信息

   kafka;

   kafka_broker_list xxxxx:9092;

   server {

        listen 80;

        server_name xxxxx;

    location = /mykafka/brokers/topics {

    kafka_topic nginx_topic;

   }

在此接收js的log.gif请求,模拟post发送到kafka

    location /log.gif {

    #伪装成gif文件

    default_type image/gif;

    #本身关闭access_log,通过subrequest记录log

    access_log off;

        access_by_lua "

    local uid = ngx.var.cookie___utrace

    if not uid then

    uid = ngx.md5(ngx.now() .. ngx.var.remote_addr .. ngx.var.http_user_agent)

    end

    ngx.header['Set-Cookie'] = {'__utrace=' .. uid .. '; path=/'}

    if ngx.var.arg_domain then

    ngx.location.capture('/i-log?' .. ngx.var.args .. '&utrace=' .. uid)

    ngx.location.capture('/mykafka/brokers/topics',{method=ngx.HTTP_POST,body=ngx.var.args})

    end

end

";

9.写入日志成功,kafka接收数据成功接入如下


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 198,932评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,554评论 2 375
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 145,894评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,442评论 1 268
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,347评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,899评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,325评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,980评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,196评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,163评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,085评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,826评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,389评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,501评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,753评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,171评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,616评论 2 339