【实用教程】如何快速搭建一套私有的埋点系统?

news2025/5/22 17:21:54

这篇教程将基于开源项目-ClkLog,教大家快速搭建一套自有的埋点系统,从0开始完成数据采集、分析与展示,全流程掌控用户行为数据。

ClkLog是一款支持私有化部署全开源用户行为数据采集与分析系统,兼容Web、App、小程序多端埋点,快速洞察用户访问路径、行为轨迹,并生成多维用户画像。助力中小团队搭建轻量灵活的用户行为分析平台。

ClkLog项目组成: 

  • 处理脚本【clklog-init】:初始化服务,用于数据库初始化和定时脚本任务配置。
  • 接收服务【clklog-receiver】:数据接收服务,接收客户端采集的日志数据并存入kafka。
  • 处理服务【clklog-processing】:数据处理服务,依托flink,消费kafka数据并存入clickhouse。
  • 统计接口【clklog-api】:统计接口,提供前端各维度数据查询统计分析接口。
  • 统计展示【clklog-ui】:基于 vue-element-admin 实现的相关统计分析及系统相关功能配置的前端应用。

ClkLog部署集成步骤

一、安装部署

1.  环境准备

2.  快速模式安装

ClkLog支持Docker部署和传统部署,其中Docker部署有标准模式和快速模式两种,我们以Docker快速模式部署为例:

  • 准备

1.  下载 ClkLog Docker Compose配置文件,参考代码如下
github 镜像下载

gitee 镜像下载

    

2.  拷贝镜像,并解压镜像文件,参考代码如下:

3.  执行目录初始化脚本,代码如下:

  • 启动

1.  执行安装命令

在clklog-docker-compose目录下执行以下命令:

2.  查看容器状态

3.  验证镜像是否安装成功

前端地址:http://YOUR_DOMAIN/

登录账号/密码:admin/clklog

统计接口说明地址:http://YOUR_DOMAIN/api/doc.html

埋点数据接收地址:http://YOUR_DOMAIN/receiver/api/gp?project=clklogapp&token=5388ed7459ba4c4cad0c8693fb85630a

二、数据采集

在完成ClkLog安装部署后,我们需要进行数据采集。根据需要采集的前端应用找到相应SDK进行集成。我们以网页端集成为例:

  1. 下载ClKLOG WEB JS SDK

这里需要说明的是:ClkLog WEB JS SDK是在神策的Web JS SDK的基础上做了一些调整,将基础引用和session-event集成在一个js里,这样直接引用js就可以了。如果您是直接从神策官网下载的sdk并按照官网引用方法进行埋点的,请注意session-event的引用。


下载 CLKLOG WEB JS SDK, 并将下载的ClKLOG WEB JS SDK文件包解压至网站目录, 参考目录结构如下:

  2.  修改autotrack.js中的配置信息

  2.1  确认autotrack.js中sensorsdata.js和plugins/session-event/index.js在实际项目中的引用路径。

  2.2  将autotrack.js中的server_url 接收服务地址配置信息修改为clklog数据采集地址,并调整参数project和token的配置。其中project名称默认为clklogapp,如果要修改project名称请注意调整clklog-receiver服务中project-list的相关配置。autotrack.js中的server_url参考配置如下:

  2.3  server_url 地址参数说明:

  • server_url地址为 clklog-receiver 的接收服务地址, project 和token参数必须传入。
  • project 是埋点项目的项目编码,一般为英文字符,默认为clklogapp,可根据实际情况修改为自己项目的编码。
  • token是receiver接收埋点项目日志的令牌,请自行随机生成,receiver端在接收日志时暂未做任何验证。

  2.4  project 名称修改为自己项目的编码后,请注意执行以下修改或操作,否则日志不会入库:

  • 修改clklog-receiver服务中的project-list配置,project-list对应前端埋点代码配置的project名称,多个project以逗号分隔。
  • 修改clklog-ui 中的config.js 中的项目配置代码。

  2.5  单页面应用数据采集说明

  • 如果是单页面应用,标题不变但需要自动采集页面浏览事件,需要将autotrack.js中的is_track_single_page值设置为ture。
  • 如果是单页面应用,标题会随着页面变化,同时也需要采集页面浏览事件,需要将autotrack.js 中的is_track_single_page 值设置为false,同时在页面标题改变结束后执行代码: sensors.quick('autoTrackSinglePage');

  3.  接入埋点跟踪代码

在web网站页面引用autotrack.js,参考代码如下:

  4.  测试埋点代码是否接入正常

在本地启动网站,打开浏览器访问网站,打开开发者工具,查看控制台, 出现如下提示信息说明埋点代码接入成功。

注意:locahost或ip访问时可忽略控制台中的 “[web-sdk-log]: getHostname传入的url参数不合法!” 提示

  5.  验证埋点接入是否成功

埋点代码接入成功后,等待1分钟,返回前端 http://YOUR_DOMAIN/ ,刷新数据概览页面,如下图所示,当页面上的流量概览相关数据值开始有数据说明埋点接入成功。

三、查看数据分析结果

社区版内置分析模型,一站式满足日常运营需求。社区版分析模型中包含基础的统计指标如:PV、UV、访客数、访问次数、IP数、访问时长等。分析维度有:时间段(小时/天/周/月/年)、访问渠道、访客类型、地域、来源网站等。同时也包含针对APP崩溃的各项指标统计以及用户画像统计。

常见问题解答

Q1:ClkLog适合什么团队?

适合中小型研发团队、想私有化部署替代SaaS平台、对数据安全有更高要求的企业。

Q2:是否支持多端接入?

支持。官网上还提供了uni-app、react-native、flutter、unity3d的埋点集成参考示例。

Q3:能部署到海外服务器吗?

可以,完全本地部署。

Q4:是否支持自定义事件?

社区版中没有提供该功能,可以选择自己二次开发或使用高级付费版本。

开源地址

Gitee项目地址:https://gitee.com/clklog/clklog

GitCode项目地址:https://gitcode.com/clklog/clklog

官网(技术支持与说明文档):https://clklog.com

无论你是刚开始做增长分析的团队,还是希望替换掉SaaS方案的开发者,ClkLog社区版都能提供一个高性价比、可控性强的起点。用ClkLog,让每一个用户行为都被看见,让数据驱动产品增长。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2383271.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入解析 Uniswap:自动做市商模型的数学推导与智能合约架构

目录 1. 自动做市商(AMM)模型的数学推导1.1 恒定乘积公式推导1.2 价格影响与滑点 2. Uniswap 智能合约架构解析2.1 核心合约(Core)2.1.1 工厂合约(Factory)2.1.2 交易对合约(Pair) 2…

React 19版本refs也支持清理函数了。

文章目录 前言一、refs 支持清理函数二、案例演示1.useEffect写法2.React 19改进 的ref写法 总结 前言 React 19版本发布了ref支持清理函数了,这样就可以达到useEffect一样的效果了。为啥需要清理函数呢,这是因为节约内存。 清理事件监听(避…

阿尔泰科技助力电厂——520为爱发电!

当城市的霓虹在暮色中亮起,当千万个家庭在温暖中共享天伦,总有一群默默的 "光明守护者" 在幕后坚守 —— 它们是为城市输送能量的电厂,更是以科技赋能电力行业的阿尔泰科技。值此 520 爱意满满的日子,阿尔泰科技用硬核技…

C#语法篇 :基类子类转换,成员变化情况

在C#中,会有从子类对象到基类对象的转换,这属于C#中的向上扩容,一般可以默认转换。 方法的转换 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace ex3._4 …

【漫话机器学习系列】264.内距(又称四分位差)Interquartile Range

深入理解内距(Interquartile Range,IQR)——数据分析中的异常值利器 在日常的数据分析中,我们经常需要识别和处理异常值(Outliers),而内距(Interquartile Range,简称 IQR…

海外盲盒系统开发:重构全球消费体验的科技引擎

当盲盒文化席卷全球,海外盲盒系统开发已成为重构消费体验的核心赛道。数据显示,2025年全球盲盒市场规模突破120亿,东南亚市场年增长率达4540。我们开发的海外盲盒系统,以技术创新为驱动,打造覆盖全链路的全球化解决方案…

高噪声下扩展边缘检测算子对检测边缘的影响

目录 一、常见的边缘检测算子 二、扩展边缘检测算子对检测边缘的影响 三、结论 一、常见的边缘检测算子 Sobel 算子: Prewitt算子;

vuejs处理后端返回数字类型精度丢失问题

标题问题描述 后端返回数据有5.00和3.30这种数据,但是前端展示的时候返回对应分别为5和3.0,小数点后0都丢失了。 接口返回数据展示network-Response: 接口返回数据展示network-Preview: 错误数据效果展示 发现问题 浏览器接口…

mysql数据库-中间件MyCat

1. MyCat简介 在整个 IT 系统架构中,数据库是非常重要,通常又是访问压力较大的一个服务,除了在程序开发的本身做优化,如: SQL 语句优化、代码优化,数据库的处理本身优化也是非常重要的。主从、热备、分表分…

手搓四人麻将程序

一、麻将牌的表示 在麻将游戏中,总共有一百四十四张牌,这些牌被分为多个类别,每个类别又包含了不同的牌型。具体来说,麻将牌主要包括序数牌、字牌和花牌三大类。序数牌中,包含有万子、条子和筒子,每种花色…

PotPlayer 安装 madVR、LAV Filters 以提升解码能力和视频音频效果

PotPlayer自带的解码器并不是最好,如下两张截图都是出自 TOP GUN: Maverick 较暗、灰蒙蒙的一张,是安装插件之前明亮的一张,是安装插件之后 详细安装参考 https://www.bilibili.com/video/BV1UV5qzuE74?spm_id_from333.788.videopod.sectio…

Kind方式部署k8s单节点集群并创建nginx服务对外访问

资源要求 请准备好doker环境,尽量用比较新的版本。我的docker环境如下 docker 环境: Docker version 20.10.21, build 20.10.21-0ubuntu1~18.04.3 安装kind kind表现上就是一个二进制程序,下载对应版本并增加执行权限即可: cu…

K个一组链表翻转

目录 1. 题意 2. 解题思路 3. 代码 1. 题意 给一个链表,按 k 进行翻转,也就是 k 2 ,两两进行翻转,如果不够2则不动。 2. 解题思路 首先思考怎么翻转一个链表,反转链表:https://leetcode.cn/problems…

Python60日基础学习打卡D32

我们已经掌握了相当多的机器学习和python基础知识,现在面对一个全新的官方库,看看是否可以借助官方文档的写法了解其如何使用。 我们以pdpbox这个机器学习解释性库来介绍如何使用官方文档。 大多数 Python 库都会有官方文档,里面包含了函数…

面向恶劣条件的道路交通目标检测----大创自用(当然你也可以在里面学到很多东西)

全部内容梳理 目标检测的两个任务: 预测标签 边界框 语义分割 实力分割 一个是类别 一个是实例级别 分类任务把每个图像当作一张图片看待 所有解决方法是先生成候选区域 再进行分类 置信度: 包括对类别和边界框预测的自信程度 输出分类和IOU分数的…

基于Java(SSM)+MySQL实现(Web)具有智能推荐功能的图书销售系统

具有智能推荐功能的图书销售系统 1.绪论 1.1 背景、目的、意义 随着互联网的不断发展,电子商务逐渐代替传统的交易方式。各种类型的电子商务网站层出不穷,但细分之下电子商务网站主要分为 B2B,B2C,C2B,C2C 这四大类…

浙大团队研发Earth Explorer系统,探索深时演化/地学剖面/科研场景,赋能深时地球科学研究

深时地球科学研究聚焦地球的漫长历史,探寻从数十亿年前到如今的地质演化过程,研究范畴广泛,涵盖了地球内部结构、物质组成、生命演化,以及地球与外部环境的相互作用等关键领域。近年来,地学可视化分析方法对多维时空交…

31-35【动手学深度学习】深度学习硬件

1. CPU和GPU 1.1 CPU CPU每秒钟计算的浮点运算数为0.15,GPU为12。GPU的显存很低,16GB(可能32G封顶),CPU可以一直插内存。 左边是GPU(只能做些很简单的游戏,视频处理),中…

SpringMVC2

一、springmvc 接收请求 类上、方法上 RequestMapping GetMapping PostMapping package com.hl.springmvc02.web; ​ import jdk.nashorn.internal.objects.annotations.Getter; import org.springframework.web.bind.annotation.*; ​ RestController RequestMapping(&qu…

【每日一题丨2025年5.12~5.18】排序相关题

个人主页:Guiat 归属专栏:每日一题 文章目录 1. 【5.12】P1068 [NOIP 2009 普及组] 分数线划定2. 【5.13】P5143 攀爬者3. 【5.14】P12366 [蓝桥杯 2022 省 Python B] 数位排序4. 【5.15】P10901 [蓝桥杯 2024 省 C] 封闭图形个数5.【5.16】P12165 [蓝桥…