
# 采集多渠道日志数据到LTS
日志接入是指通过各种手段采集应用程序或服务在运行时产生的系统运行状态、错误信息、用户操作记录等日志信息，并将这些日志信息存储到指定的位置，以便后续分析和使用。这些日志信息对于系统运维、故障排查以及业务分析都具有重要意义。
云日志服务LTS提供实时日志接入功能，通过ICAgent插件、云服务接入、自建软件接入、API接入、SDK接入等多种方式将采集到的日志上报到LTS，满足不同场景日志接入的诉求。
- 支持40+华为云服务日志对接LTS。
- 支持Web、移动端iOS、Android和小程序日志接入LTS。
- 支持采集Logstash、Flume、Beats开源软件中的数据。
- 支持通过HTTP、HTTPS、Syslog、Kafka等标准协议接入数据。
#### 应用场景
某个外卖平台型电商网站（包括用户、餐厅、配送员等），用户可以在网页、App、微信、支付宝等进行下单点菜，商家拿到订单后开始加工，并自动通知周围的快递员，最后由快递员将外卖送到用户手中。
在数据化运营的过程中，发现数据采集困难，例如：
- 多渠道：各种渠道数据分散，例如广告商、推广人员等。
- 多终端：网页版、公众账号、手机、浏览器（Web、移动端页面）等。
- 异构网：VPC、用户自建IDC，华为云ECS等。
- 多开发语言：核心系统Java、前端Nginx服务器、后台支付系统C++。
- 设备不同：商家有不同平台（X86、ARM）设备。
如果需要把散落在外部、内部的日志收集起来，可以通过LTS实现[统一管理日志]。
- [采集用户推广日志]
- [采集服务端数据]
- [采集终端用户日志]
- [采集Web/移动端页面用户行为日志]
- [采集服务器日志]
- [采集不同网络环境下的日志数据]
 
 #### 统一管理日志
1. 在云日志服务LTS控制台创建日志组，详细操作请参考[管理日志组](https://support.huaweicloud.com/usermanual-lts/lts_04_0003.html)。
2. 在云日志服务LTS控制台为不同数据源产生的日志创建日志流，详细操作请参考[管理日志流](https://support.huaweicloud.com/usermanual-lts/lts_04_0004.html)，以下示例日志仅供参考，请以实际应用日志为准。
   - wechat-server（用于存储微信服务器访问日志）
   
   - wechat-app（用于存储微信服务器应用日志）
   
   - wechat-error（用于存储错误日志）
   
   - alipay-server
   
   - alipay-app
   
   - deliver-app（用于存储送货员App状态）
   
   - deliver-error（用于存储错误日志）
   
   - web-click（用于存储H5页面点击量的日志）
   
   - server-access（用于存储服务端访问日志）
   
   - server-app（用于存储服务器应用的日志）
   
   - coupon（用于存储应用优惠券的日志）
   
   - pay（用于存储支付日志）
   
   - order（用于存储订单日志）
    
3. 如需要对原始数据进行加工，可以通过创建日志加工任务，详细请参考[DSL加工](https://support.huaweicloud.com/usermanual-lts/lts_07_0140.html)。DSL加工的功能在邀测中，仅支持华北-北京四、华东-上海一、华南-广州局点的内测用户使用，其他局点暂不支持。
 
 #### 采集用户推广日志
商家一般通过以下方式推广新用户：
- 在注册网站时直接投放优惠券。
- 在扫描传单二维码、网页二维码或其他渠道的二维码，投放优惠券。
推广前先设置如下注册服务器地址，生成二维码（传单、网页）供用户注册扫描。用户通过扫码进行注册时，就可以得知用户是通过特定来源进入的，并记录日志。
```
http://example.com/login?source=10012&ref=kd4b
```
当服务端接受请求时，服务器输出如下日志：
```
2024-06-20 19:00:00 e41234ab342ef034,102345,5k4d,467890
```
支持通过以下方式采集用户推广日志：
- 应用程序输出日志到硬盘，通过ICAgent采集日志，详细请参考[云主机ECS文本日志接入LTS](https://support.huaweicloud.com/usermanual-lts/lts_04_1031.html)。
- 应用程序日志通过SDK写入LTS，详细请参考[SDK概述](https://support.huaweicloud.com/sdkreference-lts/lts_sdk_0001.html)。
 
 #### 采集服务端数据
支付宝和微信公众账号编程是典型的Web端模式，一般会有四种类型的日志，可以使用SDK上报日志的方式，详细请参考[云日志服务支付宝小程序SDK](https://support.huaweicloud.com/usermanual-lts/lts_07_0063.html)、[云日志服务微信小程序SDK](https://support.huaweicloud.com/usermanual-lts/lts_03_1005.html)。以下示例日志仅供参考，请以实际应用日志为准。
- Nginx和Apache访问日志 Nginx和Apache访问日志用以监控、实时统计。
  ```
  10.1.168.193 - - [01/Mar/2024:16:12:07 +0800] "GET /Send?AccessKeyId=8225105404 HTTP/1.1" 200 5 "-" "Mozilla/5.0 (X11; Linux i686 on x86_64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2"
  ```
  
- Nginx和Apache错误日志
  ```
  2024/04/18 18:59:01 [error] 26671#0: *20949999 connect() to unix:/tmp/fastcgi.socket failed (111: Connection refused) while connecting to upstream, client: 10.101.1.1, server: , request: "POST /logstores/test_log HTTP/1.1", upstream: "fastcgi://unix:/tmp/fastcgi.socket:", host: "example.com"
  ```
  
- 应用层日志 应用层日志可以把事件产生的时间、地点、结果、参数等记录详细，扩展类字段一般放在最后。
  ```
  {"labels":{"cccdasd":51,"platform":"wx"},"logs":[{"contents":[{"aaa":"13123","__client_time__":1728565099070}]}]}
  ```
  
- 应用层错误日志
  ```
  {"errorCode":"LTS.403","errorMessage":" request header auth is empty"}
  ```
  
支持通过以下方法采集服务端数据：
- 将日志写到本地文件，通过创建日志采集任务写到指定日志流中。
- Docker中产生的日志可以使用CCE接入LTS进行采集，详细请参考[云容器引擎CCE应用日志接入LTS](https://support.huaweicloud.com/usermanual-lts/lts_04_0511.html)。
- C#、Python、Java、PHP、C等日志可以使用SDK写入LTS，详细请参考[SDK概述](https://support.huaweicloud.com/sdkreference-lts/lts_sdk_0001.html)。
 
 #### 采集终端用户日志
端侧日志全面采集接入LTS，例如Web浏览器、IOS、安卓、百度小程序、微信小程序、钉钉小程序、快应用等多类端侧日志。LTS提供了多种移动端SDK，实现了缓存发送、异常重试、批量发送等稳定功能，用户快速集成即可全面采集移动端日志到LTS。
采集方案：
- 移动端：可以使用移动端iOS SDK，Android SDK接入。
- ARM设备：ARM平台可以使用Native C交叉编译。
- 商家平台设备：X86平台设备可以用SDK、ARM平台可以使用Native C交叉编译。
支持通过以下方法采集终端用户日志：
- 将日志写到本地文件，通过创建日志采集任务写到指定日志流中。
- Docker中产生的日志可以使用CCE接入LTS进行采集，详细请参考[云容器引擎CCE应用日志接入LTS](https://support.huaweicloud.com/usermanual-lts/lts_04_0511.html)。
- C#、Python、Java、PHP、C等可以使用SDK写入LTS，详细请参考[SDK概述](https://support.huaweicloud.com/sdkreference-lts/lts_sdk_0001.html)。
 
 #### 采集Web/移动端页面用户行为日志
关于Web/移动端页面用户行为日志可以分为两类：
- 页面与后台服务器交互日志：例如下单、登录、退出等。
- 页面无后台服务器交互日志：请求直接在前端处理，例如滚屏、关闭页面等。
使用匿名写入采集Web/移动端页面用户行为日志，详细请参见[使用匿名写入采集日志](https://support.huaweicloud.com/usermanual-lts/lts_04_1132.html)。使用匿名写入采集日志功能仅支持华北-北京四、华东-上海一、华南-广州区域的白名单用户使用，如有需要，请[提交工单](https://support.huaweicloud.com/usermanual-ticket/zh-cn_topic_0127038618.html)，其他区域暂不支持申请开通。
 #### 采集服务器日志
服务器日志参考如下：以下示例日志仅供参考，请以实际日志为准。
- Syslog日志
  ```
  Aug 31 11:07:24 zhouqi-mac WeChat[9676]: setupHotkeyListenning event NSEvent: type=KeyDown loc=(0,703) time=115959.8 flags=0 win=0x0 winNum=7041 ctxt=0x0 chars="u" unmodchars="u" repeat=0 keyCode=32
  ```
  
- 应用程序Debug日志
  ```
  __FILE__:build/release64/sls/shennong_worker/ShardDataIndexManager.cpp
  __LEVEL__:WARNING
  __LINE__:238
  __THREAD__:31502
  offset:816103453552
  saved_cursor:1469780553885742676
  seek count:62900
  seek data redo
  log:pangu://localcluster/redo_data/41/example/2016_08_30/250_1472555483
  user_cursor:1469780553885689973
  ```
  
- Trace日志
  ```
  [2013-07-13 10:28:12.772518]    [DEBUG] [26064]  __TRACE_ID__:661353951201    __item__:[Class:Function]_end__  request_id:1734117   user_id:124 context:.....
  ```
  
支持通过以下方法采集服务器日志：
- 将日志写到本地文件，通过创建采集任务写到指定日志流中。
- Docker中产生的日志可以使用CCE接入LTS进行采集，详细请参考[云容器引擎CCE应用日志接入LTS](https://support.huaweicloud.com/usermanual-lts/lts_04_0511.html)。
- C#、Python、Java、PHP、C等日志可以使用SDK写入LTS，详细请参考[SDK概述](https://support.huaweicloud.com/sdkreference-lts/lts_sdk_0001.html)。
 
 #### 采集不同网络环境下的日志数据
LTS在各Region提供访问点，每个Region提供三种方式接入LTS：
- 内网（经典网络）：本Region内服务访问，带宽链路质量好（推荐使用该方式）。
- 公网（经典网络）：可以被任意访问，访问速度取决于链路质量、传输安全保障建议使用HTTPS。
- 私网（专有网络VPC）：本Region内VPC网络访问。
 
