2020/07/08

阿里云-日志服务-日志采集


[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 数量 充值购买道具数量

当我们定义好事件需要的属性后,必须在上报日志前将属性设置为索引,否则将无法基于属性进行查询统计,并且创建索引只能生效在新数据上,旧数据将无法生效。