使用Kafka做日誌收集
使用Kafka做日誌收集
需求
需要收集的資訊:
1、使用者ID(user_id)
2、時間(act_time)
3、操作(action,可以是:點選:click,收藏:job_collect,投簡歷:cv_send,上傳簡歷:cv_upload)
4、對方企業編碼(job_code)
1、HTML可以理解為拉勾的職位瀏覽頁面
2、Nginx用於收集使用者的點選資料流,記錄日誌access.log
3、將Nginx收集的日誌資料傳送到Kafka主題:tp_individual
架構:
HTML+Nginx+ngx_kafka_module+Kafka
提示:
學員需要自己下載nginx,配置nginx的ngx_kafka_module,自定義一個html頁面,能做到點選連線就收集使用者動作 資料即可。
作業需提交:
1、html的截圖+搭建的過程+結果截圖以文件或視訊演示形式提供。
2、作業實現過程的程式碼。(注意:1、需要把搭建過程用文件寫清楚,2、執行效果:在html上點選相應的連線或按鈕,應該在Kafka中看到有訊息流進來,效果最好以視訊形式演示。)
實現
搭建環境
# 安裝jdk
# 安裝zookeeper
# 安裝依賴
yum install wget git -y
yum install gcc-c++ -y
git clone https://github.com/edenhill/librdkafka
cd librdkafka
./configure
make
sudo make install
# 下載nginx
wget http://nginx.org/download/nginx-1.17.8.tar.gz
tar -zxf nginx-1.17.8.tar.gz -C ../servers
cd nginx-1.17.8
yum install gcc zlib zlib-devel openssl openssl-devel pcre pcre-devel -y
# 下載ngx_kafka_module
git clone https://github.com/brg-liuwei/ngx_kafka_module.git
# nginx新增模組
cd nginx-1.17.8
./configure --add-module=/opt/bigdata/servers/ngx_kafka_module
make install
# 修改nginx.conf檔案
cd /usr/local/nginx/conf
vim nginx.conf
## 在http{}中新增
kafka;
kafka_broker_list linux01:9092 linux02:9092 linux03:9092;
## 在http{server{} }中新增
location /kafka/log {
kafka_topic tp_individual;
}
# 讓作業系統載入模板
echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig
啟動程式
# 啟動zookeeper
zkServer.sh start
# 啟動kafka[所有服務執行啟動]
kafka-server-start.sh /opt/bigdata/servers/kafka_2.12/config/server.properties
# 啟動nginx
/usr/local/nginx/sbin/nginx
# 測試
curl localhost/kafka/log -d "hello ngx_kafka_module" -v
# 檢視
kafka-console-consumer.sh --bootstrap-server linux01:9092 --topic tp_log --from-beginning
準備網頁
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>kafka_log</title>
</head>
<script src="./jquery-3.4.1.min.js"></script>
<body>
<input id="user_id" type="text" value="user" hidden="hidden">
<input id="job_code" type="text" value="code" hidden="hidden">
<button id="click" class="action" act_type="select">查詢</button>
<button id="collect" class="action" act_type="insert">插入</button>
<button id="send" class="action" act_type="update">修改</button>
<button id="upload" class="action" act_type="delete">刪除</button>
<label id="label"></label>
</body>
<style>
.action {height: 30px;font-family: 微軟雅黑;font-size: 14px;color: aliceblue;border: none;border-radius: 4px;}
#click {background-color: cadetblue;}
#collect {background-color: cornflowerblue;}
#send {background-color: coral;}
#upload {background-color: indianred;}
</style>
<script>
$(document).ready(function () {
$(".action").click(function () {
var user_id = $("#user_id").val()+formatNewDate();
var act_time = new Date();
var action = this.getAttribute("act_type")
var job_code = $("#job_code").val()+formatNewDate();
var log = user_id + "\t" + act_time + "\t" + action + "\t" + job_code;
$.ajax({
url: "http://192.168.80.128:80/kafka/log",
type: "POST",
dataType: "json",
data: log
})
});
})
function add0(m){return m<10?'0'+m:m }
function formatNewDate(){
//shijianchuo是整數,否則要parseInt轉換
var time = new Date();
var y = time.getFullYear();
var m = time.getMonth()+1;
var d = time.getDate();
var h = time.getHours();
var mm = time.getMinutes();
var s = time.getSeconds();
return y+'-'+add0(m)+'_'+add0(d)+'_'+add0(h)+'_'+add0(mm)+'_'+add0(s);
}
</script>
</html>
相關文章
- filebeat 收集nginx日誌輸出到kafkaNginxKafka
- 微服務下,使用ELK做日誌收集及分析微服務
- SpringBoot使用ELK日誌收集Spring Boot
- 大資料03-整合 Flume 和 Kafka 收集日誌大資料Kafka
- 使用Fluentd + Elasticsearch收集訪問日誌Elasticsearch
- 日誌收集之filebeat使用介紹
- ELK日誌系統之使用Rsyslog快速方便的收集Nginx日誌Nginx
- Vector + ClickHouse 收集日誌
- rac日誌收集方法
- logstash收集springboot日誌Spring Boot
- Flume+Kafka收集Docker容器內分散式日誌應用實踐KafkaDocker分散式
- ABP 使用ElasticSearch、Kibana、Docker 進行日誌收集ElasticsearchDocker
- Linux-ELK日誌收集Linux
- ELK+kafka+Winlogbeat/FileBeat搭建統一日誌收集分析管理系統Kafka
- 通過 Systemd Journal 收集日誌
- (四)Logstash收集、解析日誌方法
- ELK+logspout收集Docker日誌Docker
- TFA-收集日誌及分析
- fluentd收集kubernetes 叢集日誌分析
- Flume收集日誌到本地目錄
- Filebeat 收集日誌的那些事兒
- 日誌收集工具簡單對比
- 鐵威馬nas如何收集日誌
- 輕量級日誌收集方案LokiLoki
- K8S 使用 SideCar 模式部署 Filebeat 收集容器日誌K8SIDE模式
- 日誌分析平臺ELK之日誌收集器logstash
- 日誌分析平臺ELK之日誌收集器filebeat
- 如何把 Laravel 的日誌推到Kafka?LaravelKafka
- kafka-log日誌程式碼解析Kafka
- 開放平臺日誌推送---kafkaKafka
- k8s日誌收集實戰K8S
- 簡便地Android崩潰日誌收集Android
- Docker應用容器日誌資訊收集Docker
- k8s容器日誌收集方案K8S
- 透過 Filebeat 收集 ubuntu 系統日誌Ubuntu
- 大資料01-Flume 日誌收集大資料
- 日誌收集和鏈路追蹤:skywalking
- net core3.1整合收集日誌- sentry