阿里云日志服务(前端如何使用)--webTracking

3,359 阅读2分钟

webTracking

  • webTracking是干什么的,个人简单理解,就是阿里云日志服务开放了一个接口,你只要请求这个接口,将你想上报的自定义信息字段携带上,即可在阿里云控制台查看
  • 日志服务支持通过Web Tracking采集HTML、H5、iOS和Android平台的日志,并支持自定义维度和指标。如何使用Web Tracking采集日志

采集信息

可以通过Web Tracking采集各种浏览器、iOS APP或Android APP的用户信息

  • 用户使用的浏览器、操作系统、分辨率等信息
  • 用户浏览行为记录(例如:用户在网站上的单击行为、购买行为等)
  • 用户在APP中的停留时间、是否活跃等

如何使用

开通方式

  • 一、阿里云控制台-创建日志服务,开通Web Tracking
  • 二、sdk方式(通过Log Service Java SDK开通Web Tracking)
import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.LogStore;
import com.aliyun.openservices.log.exception.LogException;
public class WebTracking {
  static private String accessId = "your accesskey id";
  static private String accessKey = "your accesskey";
  static private String project = "your project";
  static private String host = "log service data address";
  static private String logStore = "your logstore";
  static private Client client = new Client(host, accessId, accessKey);
  public static void main(String[] args) {
      try {
          //在已经创建的Logstore上开通Web Tracking功能。
          LogStore logSt = client.GetLogStore(project, logStore).GetLogStore();
          client.UpdateLogStore(project, new LogStore(logStore, logSt.GetTtl(), logSt.GetShardCount(), true));
          //关闭Web Tracking功能。
          //client.UpdateLogStore(project, new LogStore(logStore, logSt.GetTtl(), logSt.GetShardCount(), false));
          //新建支持Web Tracking功能的Logstore。
          //client.UpdateLogStore(project, new LogStore(logStore, 1, 1, true));
      }
      catch (LogException e){
          e.printStackTrace();
      }
  }
}

日志采集

开通Web Tracking后,您可以通过以下四种方法上传日志到Logstore中

使用JavaScript SDK(就是人家封装了一下的get请求)

  • 复制脚本,可以创建loghub-tracking.js
(function(window, document){
    function createHttpRequest()
    {
        if(window.ActiveXObject){
            return new ActiveXObject("Microsoft.XMLHTTP");  
        }
        else if(window.XMLHttpRequest){
            return new XMLHttpRequest();  
        }  
    }
    function AliLogTracker(host,project,logstore)
    {
        this.uri_ = 'http://' + project + '.' + host + '/logstores/' + logstore + '/track?APIVersion=0.6.0';
        this.params_=new Array();
        this.httpRequest_ = createHttpRequest();
    }
    AliLogTracker.prototype = {
        push: function(key,value) {
            if(!key || !value) {
                return;
            }
            this.params_.push(key);
            this.params_.push(value);
        },
        logger: function()
        {
            var url = this.uri_;
            var k = 0;
            while(this.params_.length > 0)
            {
                if(k % 2 == 0)
                {
                    url += '&' + encodeURIComponent(this.params_.shift());
                }
                else
                {
                    url += '=' + encodeURIComponent(this.params_.shift());
                }
                ++k;
            }
            try
            {
                this.httpRequest_.open("GET",url,true);
                this.httpRequest_.send(null);
            }
            catch (ex) 
            {
                if (window && window.console && typeof window.console.log === 'function') 
                {
                    console.log("Failed to log to ali log service because of this exception:\n" + ex);
                    console.log("Failed log data:", url);
                }
            }
            
        }
    };
    window.Tracker = AliLogTracker;
})(window, document);
  • 在项目中引入该js
<script type="text/javascript" src="loghub-tracking.js" async></script>
vue中在main.js中直接import
import './utils/loghub-tracking'
  • 最后如何执行

{host}: 选择的当前地域所对应的服务入口 [服务入口](https://help.aliyun.com/document_detail/29008.html?spm=a2c4g.11186623.2.17.6d875ad10foElL#reference-wgx-pwq-zdb) {project}: 项目名

${logstore}: 数据名

var logger = new window.Tracker('${host}','${project}','${logstore}');
logger.push('customer', 'zhangsan');
logger.push('product', 'iphone 6s');
logger.push('price', 5500);
logger.logger();
logger.push('customer', 'xiaojuzi');
logger.push('product', 'ipod');
logger.push('price', 3000);
logger.logger();

执行完毕,即可在阿里云控制台日志服务查看刚上传的两个请求所携带的数据,例:

05-12 10:03:49
                __source__:  115.239.175.222
                __tag__:__client_ip__:  115.239.175.222
                __tag__:__receive_time__:  1589249029
                __topic__:  
                customer:  xiaojuzi
                price:  3000
                product:  ipod

使用http GET请求

curl --request GET 'http://${project}.${host}/logstores/${logstore}/track?APIVersion=0.6.0&key1=val1&key2=val2'

使用HTML img标签

<img src='http://${project}.${host}/logstores/${logstore}/track.gif?APIVersion=0.6.0&key1=val1&key2=val2'/>
<img src='http://${project}.${host}/logstores/${logstore}/track_ua.gif?APIVersion=0.6.0&key1=val1&key2=val2'/>

使用HTTP POST请求(针对大数据量聚合请求)

如果请求的数据量比较大,可以使用POST方法上传数据,详情请参见PutWebtracking

使用注意

  • GET请求不支持上传16KB以上的body内容
  • POST请求每次写入的日志数量上限为3MB或者4096条