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

这篇教程将基于开源项目-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.pswp.cn/web/80923.shtml

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

相关文章

falsk模型-flask_sqlalchemy增删改查

1、增、删、改 增 home_bp.route(/useradd) def user_add():users []for i in range(10,20):user User()user.name 冰冰 str(i)user.age 20iusers.append(user)try:db.session.add_all(users)db.session.commit()return jsonify({code:1,info:success})except Exception…

【专题】机器学习期末复习资料

机器学习期末复习资料(题库) 链接:https://blog.csdn.net/Pqf18064375973/article/details/148105494?sharetypeblogdetail&sharerId148105494&sharereferPC&sharesourcePqf18064375973&sharefrommp_from_link 【测试】 Art…

SpringCloud Alibaba微服务-- Sentinel的使用(笔记)

雪崩问题: 小问题引发大问题,小服务出现故障,处理不当,可能导致整个微服务宕机。 假如商品服务出故障,购物车调用该服务,则可能出现处理时间过长,如果一秒几十个请求,那么处理时间过…

5:OpenCV—图像亮度、对比度变换

1.更改图像和视频的亮度 更改亮度 更改图像的亮度是常用的点操作。在此操作中,图像中每个像素的值应增加/减少一个常数。要更改视频的亮度,应对视频中的每一帧执行相同的操作。 如果要增加图像的亮度,则必须为图像中的每个像素添加一些正常…

【工作流】Fastgpt配置豆包模型-火山引擎

V4.9.7 Fastgpt现在不通过oneapi 来配置模型和渠道了, 可以直接在页面进行设置 首先在账号- 模型提供商里面 填入豆包的信息: 渠道名随便填,厂商选豆包, 然后选3个模型,如图所示 如果没有填入模型映射的话是没办法 …

2025年系统架构师---综合知识卷

1.进程是一个具有独立功能的程序关于某数据集合的一次运行活动,是系统进行资源分配和调度的基本单位(线程包含于进程之中,可并发,是系统进行运算调度的最小单位)。一个进程是通过其物理实体被感知的,进程的物理实体又称为进程的静态描述,通常由三部分组成,分别是程序、…

LangChain4j入门AI(六)整合提示词(Prompt)

前言 提示词(Prompt)是用户输入给AI模型的一段文字或指令,用于引导模型生成特定类型的内容。通过提示词,用户可以告诉AI“做什么”、 “如何做”以及“输出格式”,从而在满足需求的同时最大程度减少无关信息的生成。有…

如何使用 Docker Compose 部署 Immich

如何使用 Docker Compose 部署 Immich Immich 是一个开源的自建照片和视频备份解决方案,通过 Docker 部署可以快速构建一个稳定的自主管理系统。本文将带你一步步完成使用 Docker Compose 部署 Immich 的过程,帮助你在生产环境中实现高效的媒体管理。 1…

Mac远程连接Windows电脑教程

在 Mac 上通过微软官方远程桌面工具(Windows App)连接局域网内的 Windows 电脑,需按照以下步骤操作: 一、准备工作 确认 Windows 版本支持远程连接 Windows 专业版/企业版/教育版 支持远程桌面功能。家庭版不支持,需使…

从0到1打造AI Copilot:用SpringBoot + ChatGPT API实现智能开发助手

本文将从0到1系统性地讲解如何基于SpringBoot与OpenAI ChatGPT API打造一款智能开发助手(AI Copilot)。文章首先介绍AI Copilot的背景与价值,接着深入架构设计与环境准备,然后通过详尽的代码示例演示SpringBoot项目的搭建、依赖配…

Crawl4AI:高效的AI数据抓取工具

在大数据时代,抓取并处理大量数据是进行人工智能(AI)研究与开发的基础。而网络爬虫是获取网页数据的重要工具。今天,我想介绍一个功能强大的爬虫框架——Crawl4AI,它为数据抓取和机器学习任务提供了无缝的支持。Crawl4…

从单链表 list 中删除第 i 个元素--Python

从单链表 list 中删除第 i 个元素 一、问题引入二、解题步骤1.思维导图2.解题步骤 三、代码实现四、个人总结 一、问题引入 请编写程序,将 n 个整数顺次插入一个初始为空的单链表的表头。随后对任意给定的位序 i,删除链表中第 i 个结点。注意&#xff1…

git学习与使用(远程仓库、分支、工作流)

文章目录 前言简介git的工作流程git的安装配置git环境:git config --globalgit的基本使用新建目录初始化仓库(repository)添加到暂存区新增/修改/删除 文件状态会改变 提交到仓库查看提交(commit)的历史记录git其他命令…

九、日志分析和系统故障排查

目录 1、日志分析1.1、日志介绍1.1.1、日志的功能1.1.2、日志文件的分类1.1.3、日志保存位置1.2、rsyslog服务1.2.1、发送日志到远程日志服务器1.3、查看日志文件1.3.1、/var/log/messages文件的内容示例1.3.2、用户登录、退出系统的相关日志1.4、日志级别1.5、程序日志分析1.6…

C++ 非类成员变量 非类成员函数 全局变量 使用

1 使用特点 加 :: 变量使用 #include <iostream> using namespace std; int qwer 100; int asdf 900; void sitl(){std::cout <<"globe dog is sitting." << std::endl; }class Cat { public:static int num;}; int Cat::num 99;class Dog { …

【小乌龙问题】stm32供电,用过的ch340缺无法被识别

解决&#xff1a;更换正确供电&#xff08;stlink&#xff09;&#xff0c;不能用usb-ttl的仅供电&#xff0c;会干扰的&#xff01;&#xff01;&#xff01;&#xff01; 原来用stlink供电&#xff0c;今天没拿就想着usb-ttl的电源供电&#xff0c;然后用ch340传输数据&…

使用 Navicat 17 for PostgreSQL 时,请问哪个版本支持 PostgreSQL 的 20150623 版本?还是每个版本都支持?

&#x1f9d1;‍&#x1f4bb; PostgreSQL 用户 使用 Navicat 17 for PostgreSQL 时&#xff0c;请问哪个版本支持 PostgreSQL 的 20150623 版本&#xff1f;还是每个版本都支持&#xff1f; &#x1f9d1;‍&#x1f527; 官方技术中心 Navicat Premium 17 和 Navicat for P…

游戏引擎学习第305天:在平台层中使用内存 Arena 的方法与思路

回顾前一天内容&#xff0c;并为今天的开发工作设定方向 我们正在直播制作完整游戏&#xff0c;当前正在实现一个精灵图&#xff08;sprite graph&#xff09;的排序系统。排序的代码已经写完&#xff0c;过程并不复杂&#xff0c;虽然还没做太多优化&#xff0c;但总体思路比…

PHP-FPM 调优配置建议

1、动态模式 pm dynamic; 最大子进程数&#xff08;根据服务器内存调整&#xff09; pm.max_children 100 //每个PHP-FPM进程大约占用30-50MB内存(ThinkPHP框架本身有一定内存开销)安全值&#xff1a;8GB内存 / 50MB ≈ 160&#xff0c;保守设置为100 ; 启动时创建的进程数&…

腾讯2025年校招笔试真题手撕(一)

一、题目 有n 把钥匙&#xff0c;m 个锁&#xff0c;每把锁只能由一把特定的钥匙打开&#xff0c;其他钥匙都无法打开。一把钥匙可能可以打开多把锁&#xff0c;钥匙也可以重复使用。 对于任意一把锁来说&#xff0c;打开它的钥匙是哪一把是等概率的。但你无法事先知道是哪一把…