这边使用的是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); }); }); }); }