【實用教程】如何快速搭建一套私有的埋點系統?

這篇教程將基于開源項目-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
繁體地址,請注明出處:http://hk.pswp.cn/web/80923.shtml
英文地址,請注明出處:http://en.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;打開它的鑰匙是哪一把是等概率的。但你無法事先知道是哪一把…