news 2026/6/11 4:27:14

用 ClickHouse 实现大数据实时监控

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用 ClickHouse 实现大数据实时监控

用 ClickHouse 实现大数据实时监控:从0到1搭建高可用系统

引言:为什么传统监控系统解决不了大数据实时问题?

1. 你可能遇到的痛点

做过大数据监控的同学,大概率踩过这些坑:

  • 实时性差:用 Elasticsearch 做实时聚合,当数据量超过10亿条时,date_histogram查1分钟窗口的PV要等5秒以上;
  • 资源瓶颈:用 Spark Streaming 做流处理,为了低延迟要开大量Executor,成本高得离谱;
  • 查询能力弱:用 InfluxDB 存时序数据,复杂查询(比如多维度分组、去重计数)直接“卡崩”;
  • 扩展性差:数据量从100万涨到10亿,原来的架构要全部重构。

比如我之前做过一个电商的用户行为监控系统,初期用 ELK 栈:Beats 采集数据→Kafka→Logstash→Elasticsearch→Kibana。上线3个月后,日活用户从10万涨到500万,Elasticsearch 的查询延迟从200ms变成了8秒,Kibana 仪表盘根本刷不出来——传统架构根本扛不住大数据量的实时查询

2. ClickHouse 为什么能解决这些问题?

ClickHouse 是 Yandex 开源的列式存储数据库,天生为大数据实时分析设计,核心优势正好戳中监控场景的痛点:

  • 列式存储:只读取查询需要的字段,比如查PV只读timestamp字段,比行存快10-100倍;
  • 向量执行引擎:批量处理数据,避免逐行解析的 overhead,聚合速度极快;
  • 实时写入:支持每秒百万级写入,配合 Materialized View 实现流批一体化;
  • 丰富的聚合函数:内置uniq(去重计数)、sumIf(条件求和)、topK(Top N)等监控常用函数;
  • 水平扩展:分布式集群支持PB级数据,查询自动分片并行。

3. 最终效果展示

我们将用 ClickHouse 搭建一个用户行为实时监控系统,最终实现:

  • 实时仪表盘:每秒更新PV、UV、Top 10访问页面、错误率(5xx状态码占比);
  • 多维度下钻:比如按城市、浏览器维度查看UV分布;
  • 历史数据回溯:支持查询7天内任意1分钟的指标;
  • 低延迟:从数据产生到仪表盘更新,端到端延迟≤2秒。

准备工作:环境与工具清单

1. 所需环境与工具

工具/组件版本要求作用说明
ClickHouse≥23.8核心存储与查询引擎
Docker/Docker Compose≥20.10快速部署ClickHouse、Kafka、Grafana等组件
Kafka≥2.8实时数据管道(模拟用户行为数据流入)
Grafana≥10.0可视化仪表盘
Python3≥3.8生成测试数据(模拟用户行为)

2. 前置知识要求

  • 了解 ClickHouse 基本概念(MergeTree引擎、主键、分区键、索引);
  • 熟悉 SQL 语法(分组、聚合、窗口函数);
  • 了解 Kafka 基本使用(Topic、Producer、Consumer)。

如果没接触过 ClickHouse,可以先看官方入门文档:ClickHouse Getting Started。

核心步骤:从0到1搭建实时监控系统

步骤1:用Docker Compose快速部署环境

为了避免繁琐的安装配置,我们用 Docker Compose 一键部署所有组件。

1.1 编写docker-compose.yml
version:'3.8'services:# ClickHouse服务clickhouse:image:clickhouse/clickhouse-server:23.8ports:-"8123:8123"# HTTP接口-"9000:9000"# TCP接口volumes:-./clickhouse/data:/var/lib/clickhouse-./clickhouse/logs:/var/log/clickhouse-serverenvironment:-CLICKHOUSE_USER=default-CLICKHOUSE_PASSWORD=123456-CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1# Kafka服务(用于实时数据流入)kafka:image:wurstmeister/kafka:2.13-2.8.1ports:-"9092:9092"environment:-KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092-KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092-KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181depends_on:-zookeeper# Zookeeper(Kafka依赖)zookeeper:image:wurstmeister/zookeeper:3.4.6ports:-"2181:2181"# Grafana(可视化)grafana:image:grafana/grafana:10.1.0ports:-"3000:3000"volumes:-./grafana/data:/var/lib/grafanaenvironment:-GF_SECURITY_ADMIN_PASSWORD=admin
1.2 启动服务

docker-compose.yml所在目录执行:

docker-composeup -d

验证服务是否启动成功:

  • ClickHouse:访问http://localhost:8123,输入用户名default、密码123456,显示Ok.则正常;
  • Kafka:进入Kafka容器,创建测试Topicuser_events
    dockerexec-it kafka /bin/sh kafka-topics.sh --create --topic user_events --bootstrap-server kafka:9092 --partitions3--replication-factor1
  • Grafana:访问http://localhost:3000,用用户名admin、密码admin登录。

步骤2:设计实时监控的数据模型

数据模型是实时监控的核心,直接决定写入和查询的性能。我们以用户行为数据为例,设计表结构。

2.1 需求分析:需要监控哪些指标?

用户行为数据的核心字段(根据业务调整):

字段名类型说明
timestampDateTime事件发生时间(精确到秒)
user_idUInt64用户ID(去重计数用)
event_typeString事件类型(点击、浏览、下单)
page_urlString访问页面URL
status_codeUInt16HTTP状态码(判断错误)
cityString用户所在城市
browserString用户浏览器类型
2.2 选择合适的ClickHouse引擎

监控场景需要实时写入快速聚合,推荐用以下两种引擎组合:

  1. ReplacingMergeTree:处理重复数据(比如幂等写入失败导致的重复);
  2. AggregatingMergeTree:预聚合数据,减少实时查询的计算量。
2.3 创建原始数据 table(ReplacingMergeTree)

原始表用于存储未聚合的用户行为数据,后续通过 Materialized View 生成预聚合表。

-- 连接ClickHouse(用clickhouse-client或DBeaver)clickhouse-client--host localhost --port 9000 --user default --password 123456
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 11:23:13

洞察食材,管理健康:智能冰箱引领个性化饮食新时代

在全民健康意识觉醒与智能家居技术迭代的双重驱动下,智能冰箱已彻底摆脱单纯食品储存设备的定位,逐步演进为家庭健康管理的核心节点。目前智能冰箱的竞争焦点已从基础的保鲜、远程控制功能,转向以技术赋能深层健康价值的方向,通过…

作者头像 李华
网站建设 2026/6/10 13:30:38

Promise 吞错太坑?前端老鸟教你揪出那些藏起来的错误

Promise 吞错太坑?前端老鸟教你揪出那些藏起来的错误Promise 吞错太坑?前端老鸟教你揪出那些藏起来的错误错误去哪了?—— 一场“无声”的坠机Promise 为啥爱“吃白食”?现场还原:四个最容易踩的坑1. then 里 throw 完…

作者头像 李华
网站建设 2026/6/9 22:28:08

能控制手机屏幕的开源agent多模态工具

之前探索了能控制电脑桌面的开源agent工具。 https://blog.csdn.net/liliang199/article/details/156018145 这里进一步探索能控制手机屏幕的开源agent多模态工具。 1 模拟工具 以下是几款可以实现移动端模拟操作的开源工具。 其中,Open-AutoGLM和Airtest功能较为…

作者头像 李华
网站建设 2026/6/10 11:23:21

【开题答辩全过程】以 基于Java的校内美食推荐系统的设计与实现为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

作者头像 李华
网站建设 2026/6/10 0:00:58

AI Agent企业落地避坑指南:7大致命错误,收藏级干货

企业落地AI Agent常面临七大陷阱:需求误判(未先优化流程)、目标输入不明确、数据处理难题、业务模式局限(盲目追求全自动)、项目管理缺失、预期与成本误区。AI Agent本质是效率工具,需明确边界,…

作者头像 李华
网站建设 2026/6/10 15:14:57

IP 地址解析

“IP 地址解析 / IP 地址详解” —IP地址的基础信息 一、什么是 IP 地址? IP 地址 网络中设备的唯一编号 就像: 手机号 → 找到一个人IP 地址 → 找到一台设备 常见格式(IPv4): 192.168.1.100由 **4 个字节&#xff0…

作者头像 李华