2019/04/03

阿里云-日志服务


理解研究阿里云-日志服务的用途是:

  • 1.将聚合sdk和呼哧sdk的操作日志落地,例如用户的登录、注册、充值等日志信息。
  • 2.将投放的点击、展示数据落地,并可通过接口进行查询配对。

日志服务几个概念:

名称 字段名 mysql数据库对应
项目 Project 数据库
日志库 Logstore 数据表
分区 Shard 存储分表
日志 Log 一条记录
日志主题 Topic 记录类型
名称 说明
Logstore 日志库
LogHub 数据采集配置和消费配置
Logtail 数据采集配置
LogShipper 数据投递

注意一个非常重要的问题:
在数据上报中途添加了索引后,旧数据是不会生效,只对新数据索引有效。所以:

  • 1.要么 一开始就开启 全文索引
  • 2.要么 在做数据格式处理时,一定要想清楚对哪些字段进行索引添加。
  • 3.在开启索引后,系统会默认将相关保留字段开启为字段索引,如 __topic__
  • 4.自定义字段索引时,开启统计 默认开启,作用 可以结合 查询语句 和 SQL分析语句,对日志查询结果进行统计分析。

在使用日志服务,永远建议基于mysql数据库和数据表来进行。创建数据库对应日志的项目,创建数据表对应日志的日志库,基于laravel的数据模型存储数据,在调用$model->save()改为将数据上报到 日志服务


将外部数据采集到 Logstore 后,只是存放了最原始的数据源。可对 Logstore 数据投递到 OSS 处进行永远落地保存,防止丢失。投递到 OSS 建议使用 google snappy 进行压缩,减少空间占用。

linux 对 snappy 解压操作:
https://help.aliyun.com/document_detail/108942.html

php 对 snappy 的压缩和解压操作:
https://github.com/kjdev/php-ext-snappy

git clone --recursive --depth=1 https://github.com/kjdev/php-ext-snappy.git
cd php-ext-snappy
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

extension = snappy.so

压缩与解压

$compressed = snappy_compress('Compress me');

$uncompressed = snappy_uncompress($compressed);

echo $uncompressed;

例子:

1、获取当天登录账号id列表

*| SELECT DISTINCT user_id WHERE  login_time>=1554220800 AND login_time<1554307200 LIMIT 0, 10000

如果不带入 LIMIT 域名,日志服务只会返回100条数据,LIMIT 最多检索 10000 条数据,所以我们在编写代码获取数据时要使用while来循环抓取回来。