当前位置: 首页 > ops >正文

InfluxDB-数据看板实现流程:从数据采集到可视化展示

数据看板的实现涉及到多个步骤和技术组件,以下是基于提供的知识库内容,详细解释数据看板(特别是30日活跃用户数趋势)的实现过程:

1. 数据来源

所有用户行为数据通过网关进行数据埋点,并通过消息队列(MQ)发送到InfluxDB进行存储。具体流程如下:

  • 网关数据埋点:在网关处捕获用户的所有请求和响应。
  • MQ消息发送:将这些行为数据通过消息队列发送到InfluxDB。
  • InfluxDB存储:最终保存日志数据到InfluxDB的log measurement中。

2. 数据清洗

为了统计30日活跃用户数趋势,需要对存储在InfluxDB中的用户行为数据进行清洗和统计。具体步骤如下:

  • 定时任务:使用XXL-JOB定时任务框架,设定每天的特定时间点(如01:00, 08:00, 13:00, 18:00, 23:00)执行数据清洗任务。
  • 查询统计
    • 如果当前时间在0-6点之间,统计昨天的日志数据。
    • 如果已经存在当天的统计数据,则移除重新统计。
    • 查询log表中当天的user_id去重后的总个数,得到当天的总活跃用户数。
    • 查询log表中请求地址包含register-user且响应状态码为200的记录总数,得到新注册活跃用户总数。
    • 计算旧的活跃用户总数 = 总活跃数 - 新注册活跃用户总数。
  • 保存结果:将统计结果保存到MySQL的tab_dau表中。

3. 数据展示

在管理后台中,通过point-web模块提供的数据接口获取用户行为统计数据并展示。具体步骤如下:

  • 前端界面:使用图表(如折线图)展示30日活跃用户数趋势,并同时展示环比上周、环比上期、30日合计、日均值等信息。
  • 后端接口:通过point-web模块提供的RESTful API接口获取统计数据。
  • 数据请求:使用F12工具查看请求地址信息,确保前后端交互正常。

4. 技术组件

  • InfluxDB:用于高效存储和查询时间序列数据。
  • XXL-JOB:用于定时任务调度,执行数据清洗和统计任务。
  • MQ(消息队列):用于异步传输数据,保证系统的高可用性和性能。
  • MySQL:用于长期存储统计数据,便于后续查询和展示。
  • Spring Boot:用于构建后端服务,管理InfluxDB连接和数据操作。
  • 前端框架:如Vue.js或其他前端框架,用于构建可视化界面。

5. 实现细节

  • 数据清洗SQL
    SELECT COUNT(DISTINCT(user_id)) as user_id 
    FROM log 
    WHERE time > #{begin} AND time < #{end};
    
  • 新用户统计
    SELECT COUNT(*) as new_users 
    FROM log 
    WHERE time > #{begin} AND time < #{end} 
    AND request_path LIKE '%register-user%' 
    AND response_status = 200;
    

6. 测试验证

  • 定时任务执行:在XXL-JOB管理控制台中手动触发用户日活跃数任务,检查tab_dau表中是否有新的统计数据。
  • 前端页面更新:刷新管理后台页面,确认30日活跃用户数趋势图表是否更新显示最新的统计数据。

通过以上步骤和技术组件的配合,实现了高效、准确的30日活跃用户数趋势数据看板。


数据看板的实现过程是:通过网关捕获用户行为数据并经由消息队列发送至InfluxDB存储;使用XXL-JOB定时任务框架定期清洗和统计InfluxDB中的数据,将结果保存到MySQL中;最后,通过point-web模块提供的API接口获取统计数据并在前端以图表形式展示,从而实现30日活跃用户数趋势的可视化。


http://www.xdnf.cn/news/5814.html

相关文章:

  • 图论part09dijkstra算法
  • 黑马Java跟学.最新AI+若依框架项目开发(一)
  • ubuntu部署supabase
  • 广告推荐算法入门 day1 --项目选型
  • HDFS的客户端操作
  • 【Ansible】基于windows主机,采用NTLM+HTTPS 认证部署
  • git进行版本控制时遇到Push cannot contain secrets的解决方法
  • Hapi.js知识框架
  • RabbitMQ,Kafka八股(自用笔记)
  • 亚马逊云科技:开启数字化转型的无限可能
  • MapReduce 入门实战:WordCount 程序
  • 2025政企行业智能体研究
  • MinIO WebUI 页面使用
  • 国产化Word处理控件Spire.Doc教程:如何使用 C# 从 Word 中提取图片
  • INTELLECT-2大模型论文速读:通过全局分散强化学习训练的推理模型
  • 小天互连即时通讯:制造行业沟通协作的高效纽带
  • 使用 百度云大模型平台 做 【提示词优化】
  • volatile是什么
  • 启动 spyder ModuleNotFoundError: No module named ‘PyQt5.QtWebKitWidgets‘
  • Spring MessageSource 详解:如何在国际化消息中传递参数
  • 2025年第十六届蓝桥杯大赛软件赛C/C++大学B组题解
  • Nature图形复现—两种快速绘制热图的方法
  • Mac显卡的工作原理及特殊之处
  • 20、map和set、unordered_map、un_ordered_set的复现
  • el-tree结合checkbox实现数据回显
  • SpringBoot的单体和分布式的任务架构
  • 【DeepSeek】判断两个 PCIe 设备是否属于**同一个 PCIe 子树
  • NPOI 操作 Word 文档
  • 如何避免和恢复因终端关闭导致的 LoRA 微调中断
  • 用 VS Code / PyCharm 编写你的第一个 Python 程序