安装zookeeper(基于docker安装)
- docker-compose.yml
1 | version: '3.1' |
docker-compose up -d
安装kafka(基于docker安装)
- docker-compose.yml
1 | version: '3.1' |
docker-compose up -d
安装OpenResty
- 见
安装OpenResty.md
安装lua-resty-kafka
- 下载
lua-resty-kafka
wget https://github.com/doujiang24/lua-resty-kafka/archive/master.zip |
- 拷贝
lua-resty-kafka
到openresty
mkdir /home/tools/openresty/lualib/kafka |
配置
- nginx.conf
1 | worker_processes 1; |
dcc.conf
1 | server { |
使用
使用
docker-compose
依次启动zookeeper
、kafka
创建
/home/tools/openresty/nginx/html/www/dcc.js
文件,模拟埋点采集中心提供出去的前端SDK包1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40(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(_data) {
for(var i in _data) {
params[_data[i][0]] = _data[i][1];
}
}
//拼接参数串
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://dcc.lodsve.com/dcc.gif?' + args;
})();创建
/home/tools/openresty/nginx/html/www/index.html
文件,模拟业务系统1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<html>
<head>
<title>Welcome to OpenResty!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to OpenResty!</h1>
<p>If you see this page, the OpenResty web platform is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="https://openresty.org/">openresty.org</a>.<br/>
Commercial support is available at
<a href="https://openresty.com/">openresty.com</a>.</p>
<p><em>Thank you for flying OpenResty.</em></p>
<script type="text/javascript">
var _data = _data || [];
_data.push(['_setAccount', '网站标识']);
(function() {
var dcc = document.createElement('script');
dcc.type = 'text/javascript';
dcc.async = true;
dcc.src = 'http://www.lodsve.com/dcc.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(dcc, s);
})();
</script>
</body>
</html>启动
nginx
:/home/tools/openresty/nginx/sbin/nginx
进入kafka容器,打开kafka,创建topi,并且监听这个topic
1
2
3
4
5
6
7
8
9
10
111. 进入容器
docker exec -it kafka bash
2. 创建topic
cd /opt/kafka/bin
sh kafka-topics.sh --zookeeper localhost:2181 --create --topic dcc-topic --partitions 1 --replication-factor 1
3. 新打开一个窗口,进入kafka容器同样的目录,监听这个topic
sh kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic dcc-topic --from-beginning
4. 在之前的窗口,kafka容器中测试发送监听消息
sh kafka-console-producer.sh --broker-list localhost:9092 --topic dcc-topic
5. 然后输入内容回车,即可在另一个监听窗口看到
6. 不要关闭该窗口客户机上配置host
192.168.137.100 dcc.lodsve.com
192.168.137.100 www.lodsve.com访问
http://www.lodsve.com
,即可在kafka的topic监听窗口看到如下效果了:{"host":"dcc.lodsve.com","time_local":"11\/May\/2020:10:28:57 +0800","http_referer":"http:\/\/www.lodsve.com\/","status":"200","remote_addr":"192.168.137.1","request_time":"0.000","uri":"\/dcc.gif","args":"domain=www.lodsve.com&url=http%3A%2F%2Fwww.lodsve.com%2F&title=Welcome%20to%20OpenResty!&referrer=&sh=1080&sw=1920&cd=24&lang=zh-CN&_setAccount=%E7%BD%91%E7%AB%99%E6%A0%87%E8%AF%86","http_user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/81.0.4044.138 Safari\/537.36","body_bytes_sent":"43"}
{"host":"dcc.lodsve.com","time_local":"11\/May\/2020:11:00:38 +0800","http_referer":"http:\/\/www.lodsve.com\/","status":"304","remote_addr":"192.168.137.1","request_time":"0.000","uri":"\/dcc.gif","args":"domain=www.lodsve.com&url=http%3A%2F%2Fwww.lodsve.com%2F&title=Welcome%20to%20OpenResty!&referrer=&sh=1080&sw=1920&cd=24&lang=zh-CN&_setAccount=%E7%BD%91%E7%AB%99%E6%A0%87%E8%AF%86","http_user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/81.0.4044.138 Safari\/537.36","body_bytes_sent":"0"}