這邊使用的是nodejs(egg)
一張圖簡介一下 ELK+kafka做什麼用 (用於數據分析,log分析)
kafka 用做數據寫入前的緩衝佇列
ES 數據最後寫入的資料庫
kibana 視覺呈現數據
logstash 解析log格式轉換
1.Kafka 連接
const client = new Kafka.KafkaClient({kafkaHost: this.app.config.kafka.host});
const producer = new Kafka.Producer(client);
2.原本 等待連接 producer.on('ready'
後發送訊息 producer.send(payloads
producer.on('ready', function () {
producer.send(payloads, function (err, data) {
3.這邊讓 API可以回應 做一個 Promise 等待
其他事件同樣道理實作
other_fun(){
let r = await this.kibana_ready(producer,payloads,query);
this.ctx.body = this.ctx.helper.res(r);
}
async kibana_ready(producer,payloads,query){
return new Promise(function(resolve, reject) {
producer.on('ready', function () {
producer.send(payloads, function (err, data) {
let result = {};
return resolve(result);
});
});
});
}