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

Go

最近更新时间2023.12.19 19:46:27

首次发布时间2023.12.19 19:46:27

一、简介

火山引擎DataSail提供埋点数据上报Go SDK,用户在开通DataSail服务之后,可以通过SDK将数据上报到火山云。

二、前置准备

服务开通

请确保您已开通了您需要访问的服务。您可前往火山引擎控制台开通全域数据集成服务,详见服务开通

获取安全凭证

Access Key(访问密钥)是访问火山引擎服务的安全凭证,包含Access Key ID(简称为AK)和Secret Access Key(简称为SK)两部分。您可登录火山引擎控制台,前往访问控制访问密钥 中创建及管理您的Access Key。更多信息可参考访问密钥帮助文档

产品接入

  1. 申请应用

路径:应用管理-新建应用

  1. 申请Topic

路径:数据采集-topic管理-新建Topic

  1. 申请数据采集

路径:数据采集-采集管理-新建采集任务

三、上报示例

环境

  • Go (推荐使用1.17及以上版本)

  • Java 8

  • Maven (推荐使用3.1.1及以上版本)

  • 运行环境 (Linux, Mac OS X)

参数

参数名类型配置项含义示例备注
ConfigCallerstring代表业务名称datasail.dataset.test

AccessKey

string

火山云 Access Key

AKLTZWU******

SecretKey

string

火山云 Secret Key

TW1KaVlU******

Domainstring数据上报域名datasail01-cn-beijing.volceapplog.com
TaskKeystring采集任务IDhkktppvwtuv0xy000获取路径:数据采集->采集管理->采集任务 ID 🔗
Aidint应用APP ID500000获取路径:应用管理->APP ID 🔗
IsDebudboolean是否开启埋点验证false开启埋点验证开关,数据会双发到验证链路
Regionstring数据上报区域cn-beijing

代码示例

  1. 下载datasail_collector_go_cloud,与自己的项目目录在同一层

    datasail_collector_go_cloud-master.tar.gz
    33.00KB

  2. 替换包名

    go mod edit -replace volcengine.com/datasail/datasail_collector_go_cloud=../datasail_collector_go_cloud
    
  3. 更新依赖

    go get volcengine.com/datasail/datasail_collector_go_cloud
    
  4. 上报数据

package main

import (
        "encoding/json"
        "fmt"
        "github.com/golang/protobuf/proto"
        "log"
        "volcengine.com/datasail/datasail_collector_go_cloud"
        "volcengine.com/datasail/datasail_collector_go_cloud/pb_event"
)

func main() {
        user := &pb_event.User{
                UserUniqueId: proto.String("14_13468385056"),
                DeviceId:     proto.Uint64(13468385056),
        }
        // 自定义headers,大部分情况下不需要。标准字段请使用预定义字段。
        headers := map[string]interface{}{}
        headers["test_field"] = 542
        jsonBytes, _ := json.Marshal(headers)
        header := &pb_event.Header{
                AppId:        proto.Uint32(5000054), //必选
                AppName:      proto.String("test_app"),
                Headers:      proto.String(string(jsonBytes)),
        }

        params := map[string]interface{}{}
        params["test_params_field"] = 123
        paramsBytes, _ := json.Marshal(params)
        event := &pb_event.Event{
                Event:  proto.String("test_go_detail"),
                Time:   proto.Uint32(123),
                Params: proto.String(string(paramsBytes)),
        }

        // 构造collector 并传入服务的psm与服务所属火山账号的AK和SK
        collector, err := datasail_collector_go_cloud.NewDataSailCollector("domain", datasail_collector_go_cloud.Config{
                Caller:    "your caller",
                AccessKey: "your ak",
                SecretKey: "your sk",
                TaskKey:   "your task_key",
                IsDebug:   true, // 是否开启debug,如开启,则双方数据至埋点验证
                DebugResultHandler: func(result interface{}) {
                        // 只有开启debug功能,此回调接口才会生效
                        // 埋点验证,线上上报均会回调此方法,埋点验证回调时result为上报的数据。线上上报回调时result为nil
                        data, _ := json.Marshal(result)
                        fmt.Println("succeed:" + string(data))
                },
        })
        if err != nil {
                log.Panic("collect events error:" + err.Error())
                return
        }

        events := []*pb_event.Event{event}

        marioEvent := &pb_event.MarioEvents{
                User:   user,
                Header: header,
                Events: events,
        }

        if err := collector.CollectMarioEvents(marioEvent); err != nil {
                log.Panic("collect events error:" + err.Error())
        }

        collector.Close()
}

安全声明

Go开源组件声明.txt
9.08KB