[TOC]
每条记录格式
游戏日志采集,把每一个有意义埋点或用户行为,作为一条记录上报到日志服务中,每条日志格式如下:
{
"event_id": "事件id",
"properties": {
"role_id": 1001,
"server_id": 101,
}
}
properties
下字段类型可以是:
数据类型 | 取值样例 | 取值说明 | 数据类型 |
---|---|---|---|
数值 | 123,1.23 | 数据范围是-9E15至9E15,小数点最多保留3位 | number |
字符串 | "ABC","上海" | 字符上限是 2048个字节 | string |
时间 | 1579255280 | 时间戳 | integer |
布尔 | 1,0 | - | integer |
每个项目在做日志上报之前,请定义好事件类型、事件名称、属性字段。一旦定义后将无法修改,请严格注意。
属性字段是全局体现,不同事件的同名属性被视为是同一属性,他们在不同事件中表示的意义可能不一样,但是类型必须要保持一致的,因为每个属性都会在全局中创建索引。假如我们在A事件定量了一个 name 字段属于字符串,那么所有其他事件出现 name 字段时,也必须为字符串类型。
限制 | 事件种类上限 | 事件属性上限 |
---|---|---|
建议不超过 | 500 | 1000 |
系统保留字段
系统会保留部分属性字段进行使用
pt
为特殊属性,表示分区字段。__
双下划线作为开头和结束 为 日志服务保留字段。_
单下划线作为开头和结束 为 系统保留字段。#
井号来头 为 项目可赋值保留字段。
请勿使用 日志服务保留字段 和 系统保留字段。也强烈建议项目字段不要采用下划线和井号作为起始和结束。
属性key | 属性名称 |
---|---|
__source__ |
日志服务字段 |
__tag__ |
日志服务字段 |
__topic__ |
日志服务字段 |
_event_id_ |
事件id |
_create_time_ |
创建时间 |
_ip_ |
上报日志的服务器ip |
#ip |
用户ip |
_#ip_country_ |
国家,根据#ip地址生成 |
_#ip_country_code_ |
国家代码 用户所在国家的国家代码(ISO 3166-1 alpha-2,即两位大写英文字母),根据#ip地址生成 |
_#ip_province_ |
省份 用户所在省份,根据#ip地址生成 |
_#ip_city_ |
城市 用户所在城市,根据#ip地址生成 |
_#ip_provider_ |
网络运营商,根据#ip地址生成 |
_#ip_geo_ |
判断 IP 所在的城市的经纬度,范围结果格式为 纬度,经度 ,根据#ip地址生成 |
pt |
分区字段 |
定义事件和同步字段索引
要明确项目到底要统计哪些日志信息,每条日志应该具备哪些统计属性,都应该事前做好思考和准备。要明确任何日志落地后都将无法更改和抹去。
事件类型(event_id) | 事件名称 |
---|---|
1001 | 创角 |
1002 | 登录 |
1003 | 充值 |
1004 | 登出 |
属性 | 类型 | 名称 | 可用事件 |
---|---|---|---|
ctime | number | 日志生成时间 | 所有 例如代表创角时间、登录时间、充值时间 |
user_id | number | 用户id | 创角、登录、充值、登出 |
user_name | string | 用户名 | 创角、登录、充值、登出 |
item_id | number | 道具id | 充值购买了哪个道具 |
amount | number | 数量 | 充值购买道具数量 |
当我们定义好事件需要的属性后,必须在上报日志前将属性设置为索引,否则将无法基于属性进行查询统计,并且创建索引只能生效在新数据上,旧数据将无法生效。