You need to enable JavaScript to run this app.
导航

Kafka订阅埋点数据(私有化)

最近更新时间2024.01.02 10:40:49

首次发布时间2022.07.06 10:51:01

本文档介绍了在增长分析(DataFinder)产品私有化部署场景下,开发同学如何访问Kafka Topic中的流数据,以便进一步进行数据分析和应用,比如实时推荐等。

1. 准备工作

kafka消费只支持内网环境消费,在开始之前,需要提前准备好如下输入:

  • Kafka 0.10.1版本及以上的客户端(脚本或JAR包)
  • zookeeper链接:可联系运维获取
  • broker链接:可联系运维获取
  • topic名称:下方给出了两个topic数据格式,确认需要消费哪一个topic;
  • ConsumerGroup:确认好ConsumerGroup,以免冲突,导致数据消费异常;
  • 确认需要消费的app_id:Topic中存在多个app_id,需要消费数据后从中过滤出自己关心的app_id。

2. 订阅方式

您可以根据需要选择不同的方式订阅流数据。

2.1 Kafka Console Consumer

kafka自带的工具,订阅kafka流数据,并输出到console终端,一般用于查看数据格式、排查数据问题等场景下,以下给出两种示例(不同的Kafka版本使用方式不一样),更多参数可以参考kafka官方手册。

/opt/tiger/kafka/bin/kafka-console-consumer.sh --zookeeper ${zk_host1}:2181,${zk_host2}:2181,${zk_host3}:2181/kafka_vpc_lf --topic behavior_event

/opt/tiger/kafka/bin/kafka-console-consumer.sh --bootstrap-server ${broker_host1}:9192,${broker_host2}:9192,${broker_host3}:9192 --topic behavior_event

说明

  • zk_host[1|2|3]更新为kafka依赖的zookeeper机器的地址(sd lookup vpc.zookeeper)。
  • broker_host[1|2|3] 修改为Kafka Broker的地址(sd lookup kafka_vpc)。

2.2 Java Client

添加Maven依赖,如下:

<dependency>
   <groupId>org.apache.kafka</groupId>
   <artifactId>kafka-clients</artifactId>
   <version>0.10.1.0</version>
</dependency>

代码示例:

public static void main() {
    Properties properties = new Properties();
    // broker list获取方式: sd config kafka_vpc
    properties.put("bootstrap.servers", "127.0.0.1:9092");
    properties.put("group.id", "test_group");
    properties.put("auto.offset.reset", "earliest");
    properties.put("key.deserializer", "org.apache.kafka.common.serialization.ByteArrayDeserializer");
    properties.put("value.deserializer", "org.apache.kafka.common.serialization.ByteArrayDeserializer");
    KafkaConsumer<byte[], byte[]> kafkaConsumer = new KafkaConsumer<byte[], byte[]>(properties);
    kafkaConsumer.subscribe(Collections.singletonList("behavior_event"));

    System.out.println(properties);
    System.out.println("consumer beginning ");

    while (true) {
        ConsumerRecords<byte[], byte[]> records = kafkaConsumer.poll(Duration.ofMillis(100));
        for (ConsumerRecord<byte[], byte[]> record : records) {
            System.out.println("value " + JsonIterator.deserialize(record.value()));
        }
        kafkaConsumer.commitAsync();
    }

}

具体API及可配置参数详细参见官网文档:KafkaConsumer

3. 数据格式
  1. behavior_event:普通事件,一条数据为一个普通事件;
  2. user_profile:用户属性,一条数据为一个用户属性相关事件;
  3. item_profile:业务对象属性,一条数据为一个业务对象属性相关的事件;
  4. ad_event_v2:由广告监测相关服务处理后,unify后的原始数据;

3.1 Topic: behavior_event

拆分后的普通事件,一条数据为一个事件,示例数据如下:

launch/terminate事件示例:

{
  "user": {
    "user_unique_id": "",
    "user_id": 6856268895636305000,
    "user_type": 14,
    "user_is_auth": false,
    "user_is_login": false,
    "device_id": 6856268895636305000,
    "open_udid": "d64f0ca561281525",
    "udid": "352531083776797",
    "client_udid": "059f3ec8-5db8-45ac-8004-172f67b65349",
    "mc": "4A:5D:D8:ED:9B:D0",
    "build_serial": "",
    "is_upgrade_user": false,
    "ip_addr_id": 0,
    "ssid": "9b03c884-3e85-47fe-b8cb-5faadd0d2e7f",
    "cdid": "54822291-8636-471a-b138-7d29ae3fff05"
  },
  "header": {
    "app_id": 10000023,
    "app_name": "cuckoo",
    "app_version": "5.4.0",
    "app_package": "com.dp.rangersapplog.cucoo",
    "display_name": "cuckoo",
    "app_channel": "cuckoo",
    "access": "wifi",
    "client_ip": "0.0.0.0",
    "carrier": "",
    "os_name": "android",
    "os_version": "10",
    "product_id": 107,
    "product_name": "default_to_b",
    "install_id": 6856268895636555000,
    "custom": "{\"touch_point\":\"app端\",\"max_play_id\":101,\"sdk_version_name\":\"5.4.0-rc.6\",\"bd_did\":\"6856268895636304904\",\"register_time\":1602836059317,\"max_play_lev\":103,\"getui_client_id\":\"9513dac1ea0bbc390fab090b6c08588b\",\"play_id\":4689475,\"play_lev\":102,\"sdk_version_code\":15039655,\"max_lev\":100,\"lev\":10,\"Age\":93}",
    "trace_id": "16028372406990420010101342956870",
    "version_code": 5040000,
    "update_version_code": 5040000,
    "sig_hash": "92d33424fc6379b5e99d821f86ba70c8",
    "app_language": "zh-cn",
    "language": "zh",
    "app_region": "cn",
    "region": "CN",
    "device_model": "Pixel 3",
    "device_brand": "google",
    "device_manufacturer": "Google",
    "resolution": "2160x1080",
    "display_density": "xxhdpi",
    "density_dpi": 440,
    "cpu_abi": "armeabi-v7a",
    "timezone": 8,
    "tz_name": "Asia/Shanghai",
    "tz_offset": 28800,
    "os_api": 29,
    "rom": "6254899",
    "rom_version": "QQ2A.200405.005",
    "manifest_version_code": 5040000,
    "sim_serial_number": "[]",
    "platform": "Android",
    "ab_version": "30",
    "ab_sdk_version": "30",
    "sdk_version": 5040056,
    "app_version_minor": "5.3.1.1"
  },
  "event_name": "app_launch",   // app_terminate
  "datetime": 1602837239,
  "server_time": 1602837240,
  "session_id": "e3000313-fb08-430b-8fc5-d6c94b63ca08",
  "is_background": true,
  "local_time_ms": 1602837239623,
  "tea_event_index": 10001,
  "log_type": "launch",
  "debug_flag": false,
  "seq_id": 0,
  "uuid_changed": false,
  "duration": 123            // 一般app_terminate才会有
}

predefine_pageview事件示例:

{
  "user": {
    "user_unique_id": "mock_user_unique_id",
    "user_id": 6934486383370142000,
    "user_type": 13,
    "user_is_auth": false,
    "user_is_login": false,
    "is_upgrade_user": false,
    "web_id": 6934486383370142000,
    "ip_addr_id": 0,
    "ssid": "acf3dd8f-7a18-42b1-996b-56a20156249c"
  },
  "header": {
    "app_id": 10000010,
    "app_name": "mock_web",
    "access": "",
    "client_ip": "221.122.122.122",
    "carrier": "",
    "os_name": "mac",
    "os_version": "10_15_5",
    "product_id": 107,
    "product_name": "default_to_b",
    "custom": "{\"app_id\":10000010,\"screen_width\":1440,\"screen_height\":900}",
    "trace_id": "16015901108710420012361360828522",
    "language": "zh-CN",
    "device_model": "Macintosh",
    "resolution": "1440x900",
    "width": 1440,
    "height": 900,
    "timezone": 8,
    "tz_offset": -28800,
    "platform": "web",
    "browser": "Chrome",
    "browser_version": "78.0.3904.108",
    "referrer": "",
    "referrer_host": ""
  },
  "params": "{\"app_name\":\"mock_web\",\"referrer\":\"\",\"user_unique_id\":\"\",\"time\":1601590110322,\"is_bav\":1,\"title\":\"测试页面\",\"event_index\":1616590857270,\"url\":\"http://demo.com.cn/product/list\",\"url_path\":\"/product/list\"}",
  "event_name": "predefine_pageview",
  "session_id": "aa7b79a1-4e27-44fe-bed8-56adfffddc07",
  "datetime": 1601590110,
  "server_time": 1601590110,
  "rnd": "ne0000",
  "log_type": "mario_event",
  "local_time_ms": 1601590110322,
  "debug_flag": false,
  "seq_id": 0
}

普通事件示例如下:

{
  "user": {
    "user_unique_id": "",
    "user_id": 6921660559838553000,
    "user_type": 14,
    "user_is_auth": false,
    "user_is_login": false,
    "device_id": 6921660559838553000,
    "open_udid": "eeb9b2ade448e45f",
    "udid": "868427030157438",
    "client_udid": "e2fa99c3-1d5f-4562-9a89-feb1asdad29c",
    "mc": "98:9C:57:1A:F5:91",
    "build_serial": "68U5T18127000638",
    "serial_number": "68U5T18127000638",
    "is_upgrade_user": false,
    "ip_addr_id": 0,
    "ssid": "a58e9d92-ae98-4qw4-9c83-8565c567249b",
    "oaid": "ddqweb77-fafd-a4cb-1dba-ebfqweff41c4",
    "cdid": "4f723fbd-1225-4f8b-9598-991asda3df55"
  },
  "header": {
    "app_id": 10000005,
    "app_name": "new_app",
    "app_version": "5.5.5",
    "app_package": "com.dp.rangersapplog.cucoo",
    "display_name": "cuckoo",
    "app_channel": "cuckoo",
    "access": "wifi",
    "client_ip": "112.95.158.82",
    "carrier": "",
    "os_name": "android",
    "os_version": "8.0.0",
    "product_id": 107,
    "product_name": "default_to_b",
    "install_id": 6921660559838557000,
    "custom": "{\"sdk_lib\":\"Android\"}",
    "trace_id": "16113771507650420010131120347364",
    "version_code": 5050500,
    "update_version_code": 5050500,
    "sig_hash": "eabf93fca5de07dc5cbeda189dcea208",
    "app_language": "zh-cn",
    "language": "zh",
    "app_region": "cn",
    "region": "CN",
    "device_model": "RNE-AL00",
    "device_brand": "HUAWEI",
    "device_manufacturer": "HUAWEI",
    "resolution": "2160x1080",
    "display_density": "xxhdpi",
    "density_dpi": 480,
    "cpu_abi": "armeabi-v7a",
    "timezone": 8,
    "tz_name": "Asia/Shanghai",
    "tz_offset": 28800,
    "os_api": 26,
    "rom": "EMUI-EmotionUI_8.0.0-371(C00)",
    "rom_version": "EmotionUI_8.0.0_RNE-AL00 8.0.0.371(C00)",
    "manifest_version_code": 5050500,
    "sim_region": "cn",
    "sim_serial_number": "[{\"sim_serial_number\":\"89860119842110918764\"}]",
    "platform": "Android",
    "sdk_version": 5050590,
    "app_version_minor": "5.3.1.1"
  },
  "params": "{\"tea_event_index\":10193,\"page_key\":\"com.dp.rangersapplog.cucoo.CaseActivity\",\"element_width\":168,\"touch_x\":84,\"element_height\":168,\"touch_y\":84,\"nt\":4}",
  "event_name": "share",
  "session_id": "92f80d8a-64d8-4696-a300-ad6ada87da43",
  "datetime": 1611377149,
  "server_time": 1611377150,
  "rnd": "ne0004",
  "log_type": "mario_event",
  "local_time_ms": 1611377149294,
  "debug_flag": false,
  "seq_id": 4
}

3.2 Topic: user_profile/item_profile

从origin_event拆分后的用户属性,一条数据为一个用户属性事件,对于用户数据以及业务对象数据只需要关注params这个字段即可,里面的内容即为上报的用户属性以及业务对象的属性。示例数据如下:

{
  "user": {
    "user_unique_id": "",
    "device_id": 6855290498909682000,
    "ssid": "57dc0cf5-660f-4913-823b-8f3991943087"
  },
  "header": {
    "app_id": 10000023,
    "app_name": "cuckoo",
    "app_version": "5.4.0",
    "app_package": "com.dp.rangersapplog",
    "display_name": "cuckoo",
    "app_channel": "cuckoo",
    "access": "wifi",
    "client_ip": "0.0.0.0",
    "carrier": "",
    "os_name": "android",
    "os_version": "10",
    "product_id": 107,
    "product_name": "default_to_b",
    "install_id": 6855290498912881000,
    "custom": {},
    "trace_id": "16027970298250420010101092968888",
    "version_code": 5040000,
    "update_version_code": 5040000,
    "sig_hash": "92d33424fc6379b5e99d821f86ba70c8",
    "app_language": "zh-cn",
    "language": "zh",
    "app_region": "cn",
    "region": "CN",
    "device_model": "EML-AL00",
    "device_brand": "HUAWEI",
    "device_manufacturer": "HUAWEI",
    "resolution": "2244x1080",
    "display_density": "xxhdpi",
    "density_dpi": 480,
    "cpu_abi": "armeabi-v7a",
    "timezone": 8,
    "tz_name": "Asia/Shanghai",
    "tz_offset": 28800,
    "os_api": 29,
    "rom": "EMUI-EmotionUI_10.0.0-10.0.0.176C00",
    "rom_version": "EmotionUI_10.0.0_EML-AL00 10.0.0.176(C00E175R1P4)",
    "manifest_version_code": 5040000,
    "sim_serial_number": "[]",
    "sdk_version": 5040056,
    "app_version_minor": "5.3.1.1"
  },
  "params": "{\"vip_level\":3,\"udid\":\"a5ec543efa563d9f20e2dd29793d5004\",\"test_param\":4}",
  "event_name": "__profile_set",
  "session_id": "eb8597ba-d06e-4d11-a79e-3c50d8d39c97",
  "datetime": 1602797001,
  "server_time": 1602797029,
  "rnd": "ne0001",
  "log_type": "mario_event",
  "local_time_ms": 1602797001950,
  "debug_flag": false,
  "seq_id": 1
}

3.3 Topic: ad_event_v2

由广告监测相关服务处理后,unify后的原始数据,样例数据如下:

{
    "event": "activation",    // 广告事件名称,可选:click/impression/activation
    "client_time": 1639540808,  // 客户端时间(秒)
    "client_time_ms": 1639540808000,  // 客户端时间(毫秒)
    "server_time": 1639540808,  // 服务端时间(秒)
    "app_id": 10000,  // app id
    "app_name": "ec_demo_app",
    "os": "android",  // 操作系统
    "date": "20211215",   // 日期
    "abnormal": 1,  // 是否作弊,0:否,1: 是
    "cheat_type": "bot",  // 作弊类型
    "tracer_unique_id": "743b8e11969d508413c3e28f40085f8c",
    "extra": "",
    "user_device_meta": {  // 用户和设备号信息,map存储
        "ssid": "12345-0863-4315-9427-6787878",  // 自然人ID
        "user_unique_id": "376236813769581",   // user ID
        "device_id": "122534546456546",   // device ID
        "tracer_device_id": "80d07226-6182-4dc8-ba24-33f6bcd3ccaa",
        "ip": "10.162.20.0",  // 客户端IP
        "ua": "Dalvik/2.1.0 (Linux; U; Android 7.1.2; zh-CN; vivo X520A Build/NRD90M)",   // Http user Agent
        "androidid_upper": "19BFF5200B4DAC2F",  // 大写后的Android ID
        "androidid_md5": "f3c103295264edd9498cad5f45b64a68",
        "imei": "test_565490101830995",  // imei原文
        "imei_md5": "35829ac0a4292e85930f72682c69bc54",
        "oaid": "155139728247",  // oaid原文
        "oaid_md5": "251118a22c4cb17c4f92f0cd928b353b",
        "googleaid": "0dc914a3-8527-4a5d-bbcc-358e749da4f1",  // Google Advertising ID
        "googleaid_md5": "c477e00f1990157e945c742db9fa984a"
    },
    "int_params": {
        "lc_time_delta": 9,
        "touch_timestamp": 1639540799,  // 触点时间
    },
    "string_params": {  // strings事件属性相关,map存储
        "platform": "app",  // 平台,app/web/mp
        "app_channel": "自然激活",  // 渠道号
        "device_model": "vivo X520A",   // 设备型号
        "device_brand": "vivo",   // 设备品牌
        "os_version": "7.1.2",   // 系统版本
        "network_carrier": "T-mobile",  // 网络运营商
        "resolution": "320*570",  // 分辨率
        "app_version": "0.85",   // app版本
        "network_type": "3G",   // 网络类型
        "language": "zh",   // 语言
        "package": "android.com.demo",  // 包名
        "os_name": "android",   // 系统
        "install_type": "reinstall",  // 原始激活安装类型,first_install/reinsgall

        // 下面只有激活有,且仅当归因成功才有
        "touch_type": "click",  // 触点类型(click/impression)
        "attribution_strategy": "precise",  // 归因匹配类型(precise/vague)
        "tracer_unique_id": "743b8e11969d508413c3e28f40085f8c",
        "campaign_id": "958821553546",  // 广告组ID
        "campaign_name": "佩蒠戒臚軚豉濷裘吽烔",  // 广告组名称
        "ad_id": "8478618928013276",  // 广告计划ID
        "ad_name": "疌败謿瑶錉莳祃覮",  // 广告计划名
        "creative_id": "77998801431416797919",  // 广告创意ID
        "creative_name": "櫮防讹贠磬鱝尛鬯簕醔胎鯎",  // 广告创意名
        "tr_site_id": "10001",  // 广告二级渠道ID
        "tr_site_name": "西瓜视频",  // 广告二级渠道名
        "activation_type": "promotion",  // 激活类型,promotion/organic
        "tr_install_type": "new",  // 推广应用安装类型(new/retarribution/new_by_reinstall)
        "activation_channel": "自然激活",  // 激活渠道,即渠道号
        "utm_campaign": "TR_wLTKDDi6",  // 推广活动原始Code
        "utm_source": "toutiao",  // 推广渠道原始Code
    },
    "int_profiles": {},
    "string_profiles": {  // strings用户属性相关字段,map类型,会将其上报用户属性,关联行为事件
        "campaign_id": "958821553546",
        "campaign_name": "佩蒠戒臚軚豉濷裘吽烔",
        "ad_id": "8478618928013276",
        "ad_name": "疌败謿瑶錉莳祃覮",
        "creative_id": "77998801431416797919",
        "creative_name": "櫮防讹贠磬鱝尛鬯簕醔胎鯎",
        "tr_site_id": "10001",
        "tr_site_name": "西瓜视频",
        "activation_type": "promotion",
        "tr_install_type": "new",
        "activation_channel": "自然激活",
        "utm_campaign": "TR_wLTKDDi6",
        "utm_source": "toutiao"
    },
    "original_activation": {}  // 原始激活流数据
}

4. 字段说明

4.1 behavior_event

以下字段不保证在每一条行为日志中都是全量采集的

Event {
    User user;                                  // 用户信息,见下面User结构
    Header header;                              // 公共事件属性,见下面Header机构
    string params;                              // 事件参数,单层json map,
    string extras                               // 单层json map,可以理解为launch和terminate事件专用的params
    string event_name;                          // 事件名
    uint64 event_id;                            // 事件id,废弃
    string session_id;                          // 会话id
    uint64 datetime;                            // 事件发生时间戳(秒),废弃
    uint64 server_time;                         // 日志到达服务器时间(秒)
    string rnd;                                 // 废弃
    string log_type;                            // 日志类型,launch代表app_launch事件,termiate代表app_terminate事件,mario_event代表其他事件
    uint64 local_time_ms;                       // 事件发生时间戳(毫秒)
    bool staging_flag;                          // 是否是内部测试数据
    bool debug_flag;                            // 废弃
    uint32 seq_id;                              // 废弃
    string event_priority;                      // 埋点分级
    uint32 duration;                            //会话时长,一般在app_terminate事件才有
    bool uuid_changed;                          //废弃
    bool is_background;                         // 是否后端启动事件,一般为true的会被finder过滤
}

User {
    string user_unique_id;                       // 用户唯一id
    uint64 user_id;                              // 用户id。废弃
    uint32 user_type;                            // 用户类型,废弃
    bool user_is_auth;                           // 是否授权,废弃
    bool user_is_login;                          // 是否登录,废弃
    uint64 device_id;                            // 设备id
    string open_udid;                            // openudid,android设备特征
    string udid;                                 // udid,废弃
    string client_udid;                          // 客户端自己生成的设备id
    string mc;                                   // 设备mac地址
    string build_serial;                         // 硬件序列号
    string serial_number;                        // 序列号
    string idfa;                                 // idfa
    bool is_upgrade_user;                        // 是否app升级用户,废弃
    uint64 web_id;                               // web端的唯一id
    uint64 ip_addr_id;                           //废弃
    string ssid;                                 // 唯一标准id
    string idfv;                                 // ios的一个设备特征
    string oaid;                                 // android设备特征
    string cdid;                                 // 废弃
    string pgl_oaid;                             // 广告专用字段pgl_oaid,废弃
    uint64 origin_user_id;                       // 宿主用户id,废弃
    uint32 origin_user_type;                     // 宿主用户类型,废弃
    string user_unique_id_type;                  // user_unique_id字段口径,tob场景使用,为空或default_user_unique_id_type为默认口径
}

Header {
    string headers;                             // 自定义header,单层json map,废弃
    uint32 app_id;                              // app_id
    string app_name;                            // app名称
    string app_version;                         // app版本
    string app_package;                         // app包名称
    string display_name;                        // app名称
    string app_channel;                         // app分发渠道
    string access;                              // 网络访问类型
    string client_ip;                           // 客户端ip
    string carrier;                             // 运营商
    string os_name;                             // 系统名称
    string os_version;                          // 系统版本
    uint32 product_id;                          // 产品id,废弃
    string product_name;                        // 产品名称,废弃
    uint64 install_id;                          // app升级id,废弃
    string caller;                              // 废弃
    string custom;                              // 自定义事件公共属性单层json map,
    string trace_id;                            // 废弃
    uint32 client_port;                         // 客户端端口号
    string data_center;                         //上报机房,废弃
    string app_key;                             // 应用key
    uint32 version_code;                        // 版本号
    string sig_hash;                            // sig_hash,废弃
    uint32 update_version_code;                 // 内部更新版本号,废弃
    string vendor_id;                           // ios app发行商id
    string app_language;                        // app语言
    string language;                            // 系统语言
    string app_region;                          // app设置地区
    string region;                              // 系统设置地区
    string vid;                                 // vid,废弃
    string traffic_type;                        // 废弃
    string carrier_region;                      // 废弃
    string device_model;                        // 设备型号
    string device_brand;                        // 设备品牌
    string device_manufacturer;                 // 设备制造商
    string resolution;                          // 屏幕分辨率
    string display_density;                     // 屏幕像素显示级别
    uint32 density_dpi;                         // 屏幕像素显示密度
    sint32 width;                               // 屏幕宽度
    sint32 height;                              // 屏幕宽度
    string cpu_abi;                             // cpu类型
    uint32 origin_app_id;                       // 中台重置的原始app_id,废弃
    string origin_app_name;                     // 中台重置的原始app_name,废弃
    float timezone;                             // 时区
    string tz_name;                             // 时区名称
    sint32 tz_offset;                           // 时区偏差
    string mcc_mnc;                             // 国家+运行商标记
    uint32 os_api;                              // 客户端系统API版本号
    string rom;                                 // rom
    string rom_version;                         // rom版本
    string release_build;                       // release_build,废弃
    uint32 manifest_version_code;               // Android配置版本号,废弃
    string sim_region;                          // sim地区
    string sim_serial_number;                   // sim序列号
    bool is_jailbroken;                         // 设备是否越狱
    uint32 push_sdk;                            // 支持的推送sdk,废弃
    string push_os;                             // 支持的推送os,废弃
    string platform;                            // 平台类型
    string province;                            // 省
    string city;                                // 市
    string ab_version;                          // 客户端ab版本号,废弃
    string ab_group;                            // 客户端ab所在的组,废弃
    string ab_feature;                          // 客户端ab特征,废弃
    string ab_client;                           // ab实验的实验中版本,废弃
    string ab_sdk_version;                      // 客户端ab的SDK版本号,示例:12,32
    string utm_source;                          // 广告来源
    uint32 sdk_version;                         // FinderSDK版本号,废弃
    bool not_request_sender;                    // Applog配置项目,是否返回通道信息,废弃
    string user_agent;                          // user_agent,http header下的字段
    bool gcm_available;                         // 废弃
    string utm_medium;                          // 广告媒介
    string utm_campaign;                        // 广告名称
    uint64 campaign_id;                         // 广告组id,废弃
    uint64 ad_id;                               // 广告id,废弃
    uint64 creative_id;                         // 创意id,废弃
    string browser;                             // 浏览器类型
    string browser_version;                     // 浏览器版本
    string referrer;                            // 来源页面
    string referrer_host;                       // 来源页面的host
    string app_version_minor;                   // 4位版本号,示例3.2.1.2
    string utm_term;                            // 广告关键词
    string utm_content;                         //广告内容
    string sdk_version_v2;                      //string类型sdk版本
    string pgl_oaid [deprecated=true];          //广告专用字段,废弃
    string tracer_data;                         // SDK tracer自定义字段,json串,用户上报广告监测相关属性
    string sdk_lib;                             // 值为:"Android"或者"IOS",废弃
    uint64 harmony_os_api;                      // 524~530为鸿蒙系统特有标识
    string harmony_os_version;                  // 鸿蒙系统版本
    string harmony_release_type;                // 鸿蒙发布版本
    uint64 harmony_build_version;               // 鸿蒙编译版本   
    uint64 harmony_major_version;               // 鸿蒙主版本
    uint64 harmony_senior_version;              //鸿蒙小版本
    uint64 harmony_feature_version;             // 鸿蒙特征版本     
    bool is_cheat;                              //是否为作弊流量(是否命中反作弊反爬等),废弃
}

4.2 ad_event_v2

message Event {
  string event = 1;                             //事件类型,如点击/展示/激活
  uint32 client_time = 2;                       //客户端时间戳(秒),事件发生的事件
  uint64 client_time_ms = 3;                    //客户端时间戳(毫秒)
  uint32 server_time = 4;                       //服务端时间(秒)
  uint32 app_id = 5;                            //应用云 App ID(应用接入app id)
  string app_name = 6;                          //应用英文名称
  string os = 7;                                //操作系统
  string date = 8;                              //事件日期, 基于“客户端”时间生成
  uint32 abnormal = 9;                          //反作弊标识
  string cheat_type = 10;                       //反作弊一级类型
  string tracer_unique_id = 11;                 //根据事件内容生成的唯一ID标识(md5摘要)
  string extra = 12;                            // json字符串,主要用于debug,下游不需要关心
  User_device_meta user_device_meta = 13;       //用户和设备元数据
  Int_params int_params = 14;                   // int事件属性
  String_params string_params = 15;             // string事件属性
  Float_params float_params = 16;               // float事件属性
  Int_profiles int_profiles = 17;               // int用户属性
  String_profiles string_profiles = 18;         // string用户属性
  Float_profiles float_profiles = 19;           // float用户属性
  Original_activation original_activation = 20; //原始tob激活流
}

message User_device_meta {
  string ssid = 1; //标识一个自然人
  string user_unique_id = 2;
  string device_id = 3;            //设备激活流中的device_id字段转成string,设备标识
  string tracer_device_id = 4;     //业务使用设备号或者设备指纹信息生成的did,和sdk带上来的device_id不是一个值
  string bd_did = 5;               // tob版的did
  string ip = 6;                   //客户端ip地址
  string ua = 7;                   // http user agent
  string idfa_upper_withdash = 8;  //大写的带中杠线的idfa
  string idfa_md5 = 9;             // idfa的md5值
  string idfv_upper_withdash = 10; //大写的带中杠线的idfv
  string idfv_md5 = 11;            // idfv的md5值
  string caid1 = 12;               //中国广告协会互联网广告标识(版本1: 20201230)
  string caid1_md5 = 13;
  string caid2 = 14; //中国广告协会互联网广告标识(版本2: 暂无)
  string caid2_md5 = 15;
  string androidid_upper = 16; // androidid大写
  string androidid_md5 = 17;   // androidid的md5值
  string imei = 18;            // imei值:手机序列号
  string imei_md5 = 19;        //"imei值md5
  string oaid = 20;            // oaid是具有中国特色的GoogleAid
  string oaid_md5 = 21;        // oaid的md5
  string googleaid = 22;       //谷歌广告ID
  string googleaid_md5 = 23;   //谷歌广告ID的md5值
}

message Int_params {
  uint32 lc_time_delta = 1;   //点击到激活的时间差(单位为秒), 用于计算激活延迟分布
  uint32 touch_timestamp = 2; //为了计算活跃和回流安装激活
}

message String_params {
  string app_platform = 1;                //端的概念,比如:移动应用/web/mp
  string platform = 2;                    //端的概念,比如:移动应用/web/mp
  string app_channel = 3;                 //激活安装渠道,为了兼容查询而做
  string activation_channel = 4;          //激活安装渠道,为了给下有profile上报所用
  string device_model = 5;                //设备型号
  string device_brand = 6;                //设备品牌
  string os_version = 7;                  //操作系统版本
  string network_carrier = 8;             //电信运营商
  string resolution = 9;                  //设备分辨率
  string os_name = 10;                    //操作系统
  string app_version = 11;                // app版本号
  string network_type = 12;               //网络类型
  string language = 13;                   //客户端语言
  string package = 14;                    //安装包名
  string utm_campaign = 15;               //广告推广活动code
  string utm_source = 16;                 //广告推广渠道code
  string utm_medium = 17;                 //广告推广媒介
  string utm_term = 18;                   //广告推广字词
  string utm_content = 19;                //广告推广内容
  string tr_shareuser = 20;               //广告分享用户
  string tr_admaster = 21;                //广告优化师
  string tr_param1 = 22;                  //广告自定义参数1
  string tr_param2 = 23;                  //广告自定义参数2
  string tr_param3 = 24;                  //广告自定义参数3
  string tr_param4 = 25;                  //广告自定义参数4
  string account_id = 26;                 //广告账户ID
  string account_name = 27;               //广告账户名称
  string campaign_id = 28;                //广告组ID
  string campaign_name = 29;              //广告组名称
  string ad_id = 30;                      //广告计划ID
  string ad_name = 31;                    //广告计划名称
  string creative_id = 32;                //广告创意ID
  string creative_name = 33;              //广告创意名称
  string convert_id = 34;                 //转化跟踪ID,目前只有巨量引擎有
  string conv_type = 35;                  //巨量引擎转化类型
  string report_oceanengine_profile = 36; //是否上报profile字段, 业务不需处理
  string tr_site_id = 37;                 //广告二级渠道ID
  string tr_site_name = 38;               //广告二级渠道名称,如抖音
  string block_stage = 39;                //反作弊拦截阶段:离线还是实时
  string sub_cheat_type = 40;             //二级作弊类型
  string install_type = 41;               // tob激活安装类型
  string touch_type = 42;                 //归因触达类型
  string attribution_strategy = 43;       //归因成功的策略
  string activation_type = 44;            //激活类型
  string tr_install_type = 45;            //应用安装类型
  string kol_user_id = 46;                // kol用户ID,给任务台定制
  string kol_user_name = 47;              // kol用户名,给任务台定制
  string kol_video_id = 48;               // kol视频ID,给任务台定制
  string kol_video_name = 49;             // kol视频名,给任务台定制
}

message Float_params {}

message Int_profiles {}

message String_profiles {
  string activation_channel = 1;          //激活安装渠道,为了给下有profile上报所用
  string utm_campaign = 2;                //广告推广活动code
  string utm_source = 3;                  //广告推广渠道code
  string utm_medium = 4;                  //广告推广媒介
  string utm_term = 5;                    //广告推广字词
  string utm_content = 6;                 //广告推广内容
  string tr_shareuser = 7;                //广告分享用户
  string tr_admaster = 8;                 //广告优化师
  string tr_param1 = 9;                   //广告自定义参数1
  string tr_param2 = 10;                  //广告自定义参数2
  string tr_param3 = 11;                  //广告自定义参数3
  string tr_param4 = 12;                  //广告自定义参数4
  string report_oceanengine_profile = 13; //是否上报profile字段, 业务不需处理
  string account_id = 14;                 //广告账户ID
  string account_name = 15;               //广告账户名称
  string campaign_id = 16;                //广告组ID
  string campaign_name = 17;              //广告组名称
  string ad_id = 18;                      //广告计划ID
  string ad_name = 19;                    //广告计划名称
  string creative_id = 20;                //广告创意ID
  string creative_name = 21;              //广告创意名称
  string tr_site_id = 22;                 //广告二级渠道ID
  string tr_site_name = 23;               //广告二级渠道名称,如抖音
  string activation_type = 24;            //激活类型
  string tr_install_type = 25;            //应用安装类型
  string kol_user_id = 26;                // kol用户ID,给任务台定制
  string kol_user_name = 27;              // kol用户名,给任务台定制
  string kol_video_id = 28;               // kol视频ID,给任务台定制
  string kol_video_name = 29;             // kol视频名,给任务台定制
}

message Float_profiles {}

message Original_activation {
  uint32 id = 1;                                       //安装id
  uint32 from_id = 2;                                  //上一次安装的安装id。若是首次安装,则为0
  uint32 device_id = 3;                                //设备id
  string bd_did = 4;                                   // tob版的设备id
  string app_version = 5;                              // app版本,一般为x.y.z格式
  uint32 app_id = 6;                                   // app id
  string app_name = 7;                                 // app名称
  string os = 8;                                       //操作系统
  string package = 9;                                  //包名
  string channel = 10;                                 //安装渠道
  uint32 time_ts = 11;                                 //激活时间戳
  string time = 12;                                    //激活时间
  uint32 to_kafka_time = 13;                           //发送激活消息的时间戳
  uint32 install_time_ts = 14;                         //本次激活对应的安装创建时间戳
  string install_time = 15;                            //本次激活对应的安装创建时间
  string ip = 16;                                      //激活请求的客户端ip
  string tz_name = 17;                                 //时区名
  string device_brand = 18;                            //设备品牌
  string app_version_minor = 19;                       //次版本号,形如2.3.1.4
  uint32 timezone = 20;                                //时区,北京时区(东8区)为8
  string rom = 21;                                     //安卓系统rom,如eng.compil.20190319.165552
  string display_density = 22;                         //安卓系统分辨率等级(dpi),如mdpi
  string os_api = 23;                                  //安卓系统api版本号,安卓8为26,安卓8.1为27,安卓9为28
  uint32 update_version_code = 24;                     //更新版本号
  string tz_offset = 25;                               //时区相对UTC的秒级偏移
  string sim_region = 26;                              // sim地区,取自设备激活请求上报的sim_region参数
  string access = 27;                                  //网络类型
  string os_version = 28;                              //操作系统版本
  string sdk_version = 29;                             // sdk版本
  string city = 30;                                    //城市
  string app_region = 31;                              // app设置地区
  repeated google.protobuf.Any sim_serial_number = 32; //   sim序列号
  uint32 is_upgrade_user = 33;                         //是否为升级用户
  string app_language = 34;                            // app设置语言
  string display_app_name = 35;                        // app展示名称
  string language = 36;                                //语言
  string mc = 37;                                      // mac地址
  string resolution = 38;                              //屏幕分辨率
  string region = 39;                                  //地区
  bool is_jailbroken = 40;                             //是否越狱(iOS)
  string carrier = 41;                                 //电信运营商
  string mcc_mnc = 42;                                 //移动网络设备代码+地区代码
  string model = 43;                                   //设备型号
  string idc = 44;                                     //激活数据来源机房,业务方一般不需要关心
  uint32 install_code = 45;                            //安装标识
  string http_user_agent = 46;                         //设备UA
  string caid1 = 47;                                   //最新版caid
  string caid2 = 48;                                   //上一版本caid
}