kafka-nginx module模塊添加與簡單使用

Nginx Kafka Module環(huán)境搭建

參考官網(wǎng):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并創(chuàng)建要配置的主題信息


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對象數(shù)據(jù)

?? if(document) {

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

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

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

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

?? } ?

?? //Window對象數(shù)據(jù)

?? if(window && window.screen) {

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

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

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

?? } ?

?? //navigator對象數(shù)據(jù)

?? 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;

? ? ? ? }

?? } ?

?? //拼接參數(shù)串

?? 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發(fā)送到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接收數(shù)據(jù)成功接入如下


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末行楞,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子土匀,更是在濱河造成了極大的恐慌子房,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異证杭,居然都是意外死亡田度,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門解愤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來镇饺,“玉大人,你說我怎么就攤上這事琢歇±嫉。” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵李茫,是天一觀的道長揭保。 經(jīng)常有香客問我,道長魄宏,這世上最難降的妖魔是什么秸侣? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮宠互,結果婚禮上味榛,老公的妹妹穿的比我還像新娘。我一直安慰自己予跌,他們只是感情好搏色,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著券册,像睡著了一般频轿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上烁焙,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天航邢,我揣著相機與錄音,去河邊找鬼骄蝇。 笑死膳殷,一個胖子當著我的面吹牛,可吹牛的內容都是我干的九火。 我是一名探鬼主播赚窃,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼吃既!你這毒婦竟也來了考榨?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤鹦倚,失蹤者是張志新(化名)和其女友劉穎河质,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡掀鹅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年散休,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乐尊。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡戚丸,死狀恐怖,靈堂內的尸體忽然破棺而出扔嵌,到底是詐尸還是另有隱情限府,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布痢缎,位于F島的核電站胁勺,受9級特大地震影響,放射性物質發(fā)生泄漏独旷。R本人自食惡果不足惜署穗,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嵌洼。 院中可真熱鬧案疲,春花似錦、人聲如沸麻养。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鳖昌。三九已至春贸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間遗遵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工逸嘀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留车要,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓崭倘,卻偏偏與公主長得像翼岁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子司光,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355