news 2026/4/18 2:43:47

从0到1搭建实时日志监控系统:基于WebSocket + Elasticsearch的实战方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从0到1搭建实时日志监控系统:基于WebSocket + Elasticsearch的实战方案
1. 背景与痛点

在开发分布式系统时,日志分散在多个服务节点中,传统轮询查询方式存在延迟高、资源浪费的问题。某次线上故障中,因未能实时发现错误日志,导致问题排查时间延长2小时。因此,决定自研一套低成本、实时性高的日志监控系统。

2. 技术选型
  • 数据存储:Elasticsearch(高效检索与聚合)
  • 实时推送:WebSocket(全双工通信,避免HTTP轮询)
  • 后端服务:Node.js + Express(轻量级,适合快速开发)
  • 前端展示:Vue.js + ECharts(可视化日志趋势)
3. 核心实现步骤(附代码片段与关键配置)
3.1 Elasticsearch索引设计

json

// 日志索引模板(按时间分片) PUT /log-template { "index_patterns": ["logs-*"], "settings": { "number_of_shards": 3 }, "mappings": { "properties": { "timestamp": { "type": "date" }, "level": { "type": "keyword" }, "message": { "type": "text", "analyzer": "ik_max_word" } } } }
3.2 WebSocket服务端实现

javascript

// Node.js WebSocket服务器 const WebSocket = require('ws'); const wss = new WebSocket.Server({ port: 8080 }); wss.on('connection', (ws) => { console.log('New client connected'); // 订阅Elasticsearch日志变更(通过_changes API或轮询模拟) setInterval(() => { // 模拟获取新日志(实际可通过ES的search_after或滚动查询) const newLogs = fetchNewLogsFromES(); ws.send(JSON.stringify(newLogs)); }, 1000); });
3.3 前端实时渲染优化

javascript

// Vue.js WebSocket客户端 const socket = new WebSocket('ws://localhost:8080'); socket.onmessage = (event) => { const logs = JSON.parse(event.data); // 使用虚拟滚动列表优化性能(避免DOM爆炸) this.logs.unshift(...logs); // 追加到列表顶部 if (this.logs.length > 1000) this.logs.pop(); // 限制数量 };
4. 性能优化与坑点
  • ES查询优化:使用search_after替代from/size,避免深度分页性能问题。
  • WebSocket断连重试:前端实现指数退避重连机制。
  • 数据压缩:对大文本日志启用Gzip压缩,减少带宽占用。
5. 最终效果
  • 实时性:日志从产生到展示延迟 < 1秒
  • 吞吐量:单WebSocket连接支持500条/秒日志推送
  • 成本:3节点ES集群(4C16G)可支撑日志量100GB/天
6. 扩展思考
  • 如何结合Prometheus实现告警阈值动态配置
  • 针对海量日志场景,是否需要引入Kafka作为消息队列
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 2:40:36

CUDA高性能计算系列01:概述与GPU架构

CUDA高性能计算系列01&#xff1a;概述与GPU架构 摘要&#xff1a;本系列的第一篇文章&#xff0c;我们将揭开 GPU 的神秘面纱。为什么深度学习需要 GPU&#xff1f;它的架构与 CPU 有何不同&#xff1f;我们将搭建 CUDA 开发环境&#xff0c;并手写第一个“Hello World”级别的…

作者头像 李华
网站建设 2026/4/18 2:40:35

CUDA高性能计算系列02:线程模型与执行配置

CUDA高性能计算系列02&#xff1a;线程模型与执行配置 摘要&#xff1a;在上一篇中&#xff0c;我们成功运行了第一个 CUDA 程序。但你是否对 <<<blocks, threads>>> 这种神秘的写法感到困惑&#xff1f;本篇将深入剖析 CUDA 的线程层级结构&#xff08;Grid…

作者头像 李华
网站建设 2026/4/18 2:39:55

CUDA高性能计算系列10:实战手写深度学习算子(Softmax)

CUDA高性能计算系列10&#xff1a;实战手写深度学习算子(Softmax) 摘要&#xff1a;纸上得来终觉浅&#xff0c;绝知此事要躬行。学了这么多优化技巧&#xff0c;是时候检验真功夫了。本篇我们将深入深度学习中最常见的算子之一——Softmax。看似简单的公式背后&#xff0c;隐藏…

作者头像 李华
网站建设 2026/4/5 19:55:18

AI全景之第十二章第三节:光子计算、量子计算与AI

12.3 新型计算范式:光子计算、量子计算与AI 当前AI技术的飞速发展,尤其是大模型的持续迭代,对算力提出了指数级增长的需求。传统电子计算基于电子的电荷特性进行信息处理,受限于摩尔定律的放缓、能耗过高、传输延迟等固有瓶颈,已难以支撑下一代AI的发展。 在此背景下,以光…

作者头像 李华
网站建设 2026/4/10 21:17:51

L298N四路PWM控制接口设计完整示例

从零构建智能小车的“肌肉系统”&#xff1a;L298N 四路PWM驱动实战详解你有没有想过&#xff0c;一个看起来简单的智能小车&#xff0c;是如何实现平稳启动、灵活转向甚至原地掉头的&#xff1f;背后的秘密并不在传感器或算法里——而在于它的“肌肉”&#xff0c;也就是电机…

作者头像 李华
网站建设 2026/3/22 5:51:48

毕业论文AI怎么查重?我的血泪经验+实用工具大公开

凌晨三点盯着电脑屏幕&#xff0c;手指在键盘上机械地敲击——这大概是我写毕业论文时最常出现的画面。当终于敲下最后一个句号时&#xff0c;突然想到&#xff1a;这段用AI辅助生成的内容&#xff0c;会不会被查重系统标记&#xff1f;更可怕的是&#xff0c;如果重复率超标&a…

作者头像 李华