KBEngine增加ThinkingData打点

Windows下的安装ThinkingData

首先根据他的文档,安装sdk和Logbus,他的原理是sdk写入到log文件,然后通过Logbus2来传送到TD(ThinkingData)服务器。

通过pip获取 Python SDK

pip install ThinkingDataSdk
pip install --upgrade ThinkingDataSdk

安装Logbus
这里省略了
我们来到logbug目录,修改conf下的daemon.json
这里的配置文件可以是这样的

{
    "datasource": [
      {
        "type":"file",
        "file_patterns": ["../assets/logbus/*.*"], 
        "app_id": "你的数数id", 
        "unit_remove": "day", 
        "offset_remove": 7,
        "remove_dirs": true,
        "http_compress": "gzip" 
      }
    ],
    "cpu_limit": 2, 
  
    "push_url": "https://后台的push地址.thinkingdata.cn"
}

这里的file_patterns,.表示logbus.exe的目录,我的log放在外面,所以是…,我把服务端的打点目录配置在了服务端脚本目录的logbus下。

在这里插入图片描述

这个文件就是服务端程序生成的打点文件了。

KBEngine配置

根据TD的官方文档,需要

current_directory = os.path.dirname(os.path.abspath(__file__))
LOG_DIRECTORY = current_directory +"/../../logbus"

from tgasdk.sdk import TGAnalytics, LoggingConsumer
te = TGAnalytics(LoggingConsumer(LOG_DIRECTORY))

这里运行后提示很多库找不到,这里我总结了下,有下面一些包
在这里插入图片描述

只要把python的包拷贝到kbe\res\scripts\common\Lib下就可以了。
(这些包在我们通过pip安装Logbus2的时候会有安装成功的路径,一般是位于:C:\Users\Administrator\AppData\Local里,其他的包也在这里)

然后我贴一个kbe的脚本

from tgasdk.sdk import TGAnalytics, LoggingConsumer
import os
import datetime
import time
import GameConfigs
import KBEngine
from KBEDebug import *

TIME_WRITE_FILE = 10    #10秒写一次文件

current_directory = os.path.dirname(os.path.abspath(__file__))
LOG_DIRECTORY = current_directory +"/../../logbus"
#DEBUG_MSG("dbg.ThinkingData :: init path :%s" % (LOG_DIRECTORY))

#下一次发送时间
nextsend = int(time.time())+ TIME_WRITE_FILE
#当前有几个发送
sendcount = 0

te = TGAnalytics(LoggingConsumer(LOG_DIRECTORY))


#distinct_id = "S1"
#account_id = "TE1"

properties = {
    #"#time":datetime.datetime.now(),
    # 设置这条event发生的时间,如果不设置的话,则默认是当前时间
    #"#ip":"192.168.1.1",
    # 设置用户的IP,tda会自动根据该IP解析省份、城市
    #"#uuid":uuid.uuid1(),#选填,如果上面enable_uuid开关打开,不需要填
    "Product_Name":"商124",
    "Price":324,
    "OrderId":"1234"
}


#打点事件
def AnalyseEvent(userid,eventName,prop):
    global sendcount
    # 上传事件,包含账号ID与访客ID
    try:
        prop["#time"] = datetime.datetime.now()
        prop["server"] = GameConfigs.SERVER_ID
        #te.track(account_id,eventName,prop)
        # 您也可以只上传访客ID
        # te.track(distinct_id = distinct_id, event_name = "Payment", properties = properties)
        # 或者只上传账号ID
        te.track(account_id = userid, event_name = eventName, properties = prop)
        
        sendcount = sendcount + 1
        DEBUG_MSG("dbg.ThinkingData :AnalyseEvent  %s" % (eventName))
    except Exception as e:
        #异常处理
        DEBUG_MSG("Error.ThinkingData :: %s" % (e))

def Flush():
    global sendcount,nextsend
    nowtime = int(time.time())
    if sendcount > 0 and nowtime > nextsend:
        te.flush();
        sendcount = 0
        nextsend = int(time.time()) + TIME_WRITE_FILE
        DEBUG_MSG("dbg.ThinkingData Flush .")


#AnalyseEvent("S1","test1",properties)


调用AnalyseEvent就开始打点,调用Flush立即写入log文件。这样如果启动了logbus程序,他就自动上报给TD了。

Centos下

我们下载Linux-amd64版本,然后把刚才windows的json配置文件覆盖,传到服务器。
我们先检测

$ ./logbus env

-bash: ./logbus: Permission denied
chmod -R 777
$ ./logbus env
6:34PM INF app_id [3fexxx] ok

给了权限,运行后提示app_id ok应该ok了,然后我们再运行start。

$ ./logbus start
6:38PM INF Current Version: 2.1.0.8
6:38PM INF app_id [114xx28f11] ok
6:38PM INF [localhost:21666] start daemon success, pid[1391]

成功了,下来就剩下调试了。

记得把logbus需要的库也传到对应的kbe服务端Lib目录下。
然后就可以上传服务端打点代码测试了。

我遇到了找不到zlib,于是重新安装了

yum install zlib-devel

然后把引擎重新make就可以了。

参考

https://docs.thinkingdata.cn/python_sdk_installation

https://docs.thinkingdata.cn/logbus2_installation.html

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python爬虫——scrapy_当当网图书管道封装

创建爬虫项目 srcapy startproject scrapy_dangdang进入到spider文件里创建爬虫文件(这里爬取的是青春文学,仙侠玄幻分类) srcapy genspider dang http://category.dangdang.com/cp01.01.07.00.00.00.html获取图片、名字和价格 # 所有的se…

leetcode-413. 等差数列划分(java)

等差数列划分 leetcode-413. 等差数列划分题目描述双指针 上期经典算法 leetcode-413. 等差数列划分 难度 - 中等 原题链接 - 等差数列划分 题目描述 如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。 例如&#xff0…

图数据库_Neo4j基于docker服务版安装_Neo4j Desktop桌面版安装---Neo4j图数据库工作笔记0004

然后我们来看看如何用docker来安装Neo4j community server 首先去执行docker pull neo4j:3.5.22-community 去拉取镜像 然后执行命令就可以安装了 可以用docker ps查看一下 看看暴露了哪些端口 然后再看一下访问一下这个时候,要用IP地址了注意 然后再来看一下安装Desktop 去下…

DAMO-YOLO:实时目标检测设计的报告

ReadPaperhttps://readpaper.com/pdf-annotate/note?pdfId4748421678288076801eId1920373270663763712 Abstract 在本报告中,我们提出了一种快速准确的目标检测方法,称为DAMO-YOLO,它比最先进的YOLO系列实现了更高的性能。DAMO-YOLO 通过…

R语言实现神经网络(1)

#R语言实现神经网络 library(neuralnet) library(caret) library(MASS) library(vcd) data(shuttle) str(shuttle)#因变量use; table1<-structable(windmagn~use,shuttle) mosaic(table1,shadingT) mosaic(use~errorvis,shuttle) prop.table(table(shuttle$use,shuttle$stab…

第十一课:Qt 快捷键大全

功能描述&#xff1a;Qt 中的快捷键查看方式和自定义快捷键 一、快捷键查看/自定义 Qt Creator 中提供了各种快捷键&#xff0c;如需查看或自定义快捷键&#xff0c;选择菜单栏“工具” -> “选项” -> “环境” -> “键盘”。 快捷键按类别列出&#xff0c;可以在过…

C++提高编程——模板

C提高编程 本阶段主要针对C泛型编程和STT技术做详细讲解&#xff0c;探讨C更深层的使用 1模板 1.1模板的概念 模板就是建立通用的模具&#xff0c;大大提高复用性 例如生活中的模板 寸照片模板&#xff1a; 1.2函数模板 C另一种编程思想称为 泛型编程&#xff0c;主要利…

【回溯】总结

1、 组合和子集问题 组合问题需要满足一定要求才算作一个答案&#xff0c;比如数量要求&#xff08;k个数&#xff09;&#xff0c;累加和要求&#xff08;target&#xff09;。 子集问题是只要构成一个新的子集就算作一个答案。 进阶&#xff1a;去重逻辑。 一般都是要对同…

QT学习笔记-Linux ARM环境下实现QT程序通过ODBC驱动访问SQLServer数据库

QT学习笔记-Linux ARM环境下实现QT程序通过ODBC驱动访问SQLServer数据库 0、背景1、基本环境2、搭建交叉编译环境3、在交叉编译服务器上交叉编译安装unixODBC3.1 下载unixODBC3.2 交叉编译unixODBC3.2.1 基本编译说明3.2.2 交叉编译说明3.2.3 ./configure -build,-host,-target…

Android Ble蓝牙App(五)数据操作

Ble蓝牙App&#xff08;五&#xff09;数据操作 前言目录正文一、操作内容处理二、读取数据① 概念② 实操 三、写入数据① 概念② 实操 四、打开通知一、概念二、实操三、收到数据 五、源码 前言 关于低功耗蓝牙的服务、特性、属性、描述符都已经讲清楚了&#xff0c;而下面就…

golang—面试题大全

目录标题 sliceslice和array的区别slice扩容机制slice是否线程安全slice分配到栈上还是堆上扩容过程中是否重新写入go深拷贝发生在什么情况下&#xff1f;切片的深拷贝是怎么做的copy和左值进行初始化区别slice和map的区别 mapmap介绍map的key的类型map对象如何比较map的底层原…

6939. 数组中的最大数对和

题目描述&#xff1a; 给你一个下标从 0 开始的整数数组 nums 。请你从 nums 中找出和 最大 的一对数&#xff0c;且这两个数数位上最大的数字相等。 返回最大和&#xff0c;如果不存在满足题意的数字对&#xff0c;返回 -1 。 示例&#xff1a; 解题思路&#xff1a; 使用数组…

LangChain源码逐行解密之系统(一)

LangChain源码逐行解密之系统 1.1 search.py源码逐行剖析 本节将通过源代码与大家分享,LangChain框架作为核心的企业级大模型开发的最后一个环节,即代理(Agent)环节。之前我们已经多次提到代理,并从源代码和案例的角度对多个代理进行了剖析,如图20-1所示。Gavin大咖微信:…

opencv实战项目 手势识别-手势音量控制(opencv)

本项目是使用了谷歌开源的框架mediapipe&#xff0c;里面有非常多的模型提供给我们使用&#xff0c;例如面部检测&#xff0c;身体检测&#xff0c;手部检测等。 手势识别系列文章 1.opencv实现手部追踪&#xff08;定位手部关键点&#xff09; 2.opencv实战项目 实现手势跟踪…

认识容器,走进Docker

文章目录 容器技术简介容器的核心技术容器平台技术容器的支持技术 Docker理念Docker安装配置阿里云镜像加速器 容器技术简介 一切在云端&#xff0c;万物皆容器&#xff0c;说到容器&#xff0c;大家都会想到Docker,Docker现在几乎是容器的代名词&#xff0c;什么是Docker&…

python开发环境准备

python开发环境准备 文章目录 python开发环境准备windows安装配置python3下载配置 安装pip&#xff08;通过get-pip.py&#xff09;测试与问题 测试python windows安装配置python3 校验日期 &#xff1a;2023年8月11日 下载 下载地址 官网地址 版本分为推荐下载最新的版本和…

udp与can通信的选择与比较

UDP&#xff08;用户数据报协议&#xff09;和CAN&#xff08;控制器局域网&#xff09;是两种不同的通信协议&#xff0c;它们在实时传递性上有一些区别。 UDP是一种无连接的传输协议&#xff0c;它提供了简单的、不可靠的数据传输。UDP不提供可靠性保证、流控制或重传机制。…

【数据结构】堆的初始化——如何初始化一个大根堆?

文章目录 源码是如何插入的&#xff1f;扩容向上调整实现大根堆代码&#xff1a; 源码是如何插入的&#xff1f; 扩容 在扩容的时候&#xff0c;如果容量小于64&#xff0c;那就2倍多2的扩容&#xff1b;如果大于64&#xff0c;那就1.5倍扩容。 还会进行溢出的判断&#xff0c…

uniapp 获取 view 的宽度、高度以及上下左右左边界位置

<view class"cont-box"></view> /* 获取节点信息的对象 */ getElementRect() {const query uni.createSelectorQuery().in(this);query.select(".cont-box").boundingClientRect(res > {console.log(res);console.log(res.height); // 10…

半导体退火那些事(2)

2.半导体退火的作用 2.1改善半导体的电学性能 退火过程中&#xff0c;材料中的缺陷得到修理&#xff0c;杂质原子和材料内的杙错得到排列&#xff0c;位于能带中动力学的载流子少&#xff0c;能级也就相对于更加密集。因而在退火之后&#xff0c;半导体材料中的电子、空穴浓度…