丰富日志信息,日志服务和OSS外表进行关联分析

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 1. 日志信息不够丰富,怎么破 在日志分析场景中,我们经常遇到这样的问题,日志中的信息不完善。例如,日志中包含了用户的点击行为,但是却缺少用户的属性,例如注册信息、资金、道具等信息。 而产品PD、运营同学分析日志的时候,往往需要这种联合分析用户的属性和行为,例如分析用户地域对付费习惯的影响。

1. 日志信息不够丰富,怎么破

在日志分析场景中,我们经常遇到这样的问题,日志中的信息不完善。例如,日志中包含了用户的点击行为,但是却缺少用户的属性,例如注册信息、资金、道具等信息。

而产品PD、运营同学分析日志的时候,往往需要这种联合分析用户的属性和行为,例如分析用户地域对付费习惯的影响。

image.png

想要推动开发同学在日志里边添加一些必要字段?这几乎是不可能的,一方面,跨团队沟通困难,让开发修改程序可能要拖很久;另一方面,有些属性是动态,需要经常改变,例如用户的账户状况。

2. 引入外表,补充日志信息

那么,为了解决信息短缺的问题,我们有什么办法呢?利用SQL中外表概念,和Join语法,把日志抽象成一张表。属性抽象成一张表,两张叫利用外键Join分析。那么属性信息放在哪里呢?

那么属性放在哪里呢?根据信息修改的频率,我们可以选择把数据放在MySQL或者OSS:

image.png

对于更新不频繁的数据。我们可以周期性的写一份数据到OSS对象存储上。那么,只需要支付OSS存储的钱即可,不需要支付MySQL保留的计算实例的钱,可以节省下很大一部分开支。

3. 日志服务(SLS)分析平台,提供日志️OSS(MySQL)的交叉分析能力

日志服务提供的这种跨数据源(OSS)的分析能力,可以帮助用户解决以下问题:

  1. 节省费用:

    • 异构数据,根据数据的特性选择合适的存储系统,最大限度的节省成本。。 对于更新少的数据,选择存放在OSS上,只需要支付少量的存储费用。如果存放在MySQL上,还要支付计算实例的费用。
    • OSS是阿里云的存储系统,可以走内网读取数据,免去了流量费用。
  2. 节省精力

    • 不需要搬迁数据到同一个存储系统中。大家都知道,不同的存储系统,格式和API都不同,要把数据搬迁到同一个系统中,涉及到复杂的数据转换;数据一旦有更新,还要经常维护。在我们轻量级的运行时联合分析平台中,避免数据搬迁,节省了用户精力,解放用户生产力,可以把有限的开发人力投入到主营业务中。
  3. 所见即所得

    • 当用户需要分析数据时,使用一条SQL,在秒级别即可获得结果。
    • 把常用的视图,定义成报表。需要的时候,打开即可看到结果。

使用这种交叉分析,需要通过这几步操作:

  1. 上传CSV格式文件到OSS。
  2. 使用API,在日志服务(SLS)定义虚拟表,定义csv文件格式,映射到OSS文件。
  3. 在日志服务(SLS)控制台,使用SQL引用oss文件。

4. 使用样例

接下来,我们将以实际样例来演示OSS外部存储的使用。

4.1 上传csv文件到OSS

我们定义一份属性文件,在文件中,包含了5列,分别是用户id,用户昵称,性别,省份,年龄

userid,nick,gender,province,age
1,阳光男孩,male,上海,18
2,么么茶,female,浙江,19
3,刀锋1937,male,广东,18

把这份文件,保存成文本user.csv,使用osscmd上传到OSS上(也可以在OSS控制台上传):

osscmd   put  ~/user.csv   oss://testossconnector/user.csv

4.2 在日志服务(SLS)定义外部存储

SLS可以通过SQL定义虚拟外部表,映射到OSS文件。在SQL中,需要指定三部分信息:

  1. 表的schema:包含哪些列,每一列的属性是什么。
  2. OSS访问信息: oss的域名,oss的access id 和access key。
  3. OSS文件信息:文件在哪个bucket下,文件的object路径是什么。

使用这条SQL,定义一个外部存储名为user_meta:

* | create table user_meta  ( userid bigint, nick varchar, gender varchar, province varchar, gender varchar,age bigint) with ( endpoint='oss-cn-hangzhou-internal.aliyuncs.com',accessid='LTA288dDkllsjdsalcxaeewiak',accesskey ='EjsowAkDiq22Ak$kjdskkalclaK',bucket='testossconnector',objects=ARRAY['user.csv'],type='oss')

在SQL中,分别指定了表的属性:

  1. userid为 bigint类型。
  2. nick为varchar类型。
  3. gender为varchar类型。
  4. province为varchar类型。
  5. age为bigint类型。

在SQL的with语法中,分别指定endpoint, accessid, accesskey, bucket, objects。 其中,objects是一个array,在array中,可以是多个OSS文件。

image.png

执行结果result为true,表示执行成功。

为了验证数据是否正确,我们执行SQL : select * from user_meta 查看结果:

image.png

可以看到,在日志服务中,已经成功的定义了外部存储,接下来,我们就可以在SQL中引用该外部存储的信息了。

4.3 日志和OSS文件联合分析

在原始日志中,包含了用户的id信息,那么我们可以通过关联日志中的id和oss文件中的userid,补全日志的信息。

image.png

4.3.1 在SQL中关联日志和OSS,输入SQL :

* | select * from chiji_accesslog l join user_meta1 u on l.userid = u.userid

可以看到,结果中,已经包含了OSS文件的内容。

image.png

4.3.2 接下来,我们可以统计,用户性别的访问情况:

* | select  u.gender, count(1)  from chiji_accesslog l join user_meta1 u on l.userid = u.userid group by u.gender

Jul-17-2018 11-35-49.gif

4.3.3 也可以统计年龄的访问情况:

* | select  u.age, count(1)  from chiji_accesslog l join user_meta1 u on l.userid = u.userid group by u.age

image.png

4.3.4 统计不同年龄段在时间维度上的访问趋势:

* | select  date_trunc('minute',__time__) as minute, count(1) ,u.age from chiji_accesslog l join user_meta1 u on l.userid = u.userid group by u.age,minute

image.png

5 更多日志分析方法

CDN日志分析

Kubernetes下日志采集、存储与处理技术实践

SLB访问日志分析:基于客户端来源和HTTP状态码的实践

阿里云操作审计 - 日志安全分析

阿里云DDoS高防 - 访问与攻击日志实时分析


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
23天前
|
Java
使用Java代码打印log日志
使用Java代码打印log日志
77 1
|
25天前
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
78 1
|
28天前
|
SQL 关系型数据库 MySQL
MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复
对于MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复。二进制日志是MySQL中记录所有数据库更改操作的日志文件。要进行时间点恢复,您需要执行以下步骤: 1. 确保MySQL配置文件中启用了二进制日志功能。在配置文件(通常是my.cnf或my.ini)中找到以下行,并确保没有被注释掉: Copy code log_bin = /path/to/binary/log/file 2. 在需要进行恢复的时间点之前创建一个数据库备份。这将作为恢复的基准。 3. 找到您要恢复到的时间点的二进制日志文件和位置。可以通过执行以下命令来查看当前的二进制日志文件和位
|
1月前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
51 0
|
3天前
|
Java
log4j异常日志过滤规则配置
log4j异常日志过滤规则配置
13 0
|
15天前
|
运维 安全 Ubuntu
`/var/log/syslog` 和 `/var/log/messages` 日志详解
`/var/log/syslog` 和 `/var/log/messages` 是Linux系统的日志文件,分别在Debian和Red Hat系发行版中记录系统事件和错误。它们包含时间戳、日志级别、PID及消息内容,由`rsyslog`等守护进程管理。常用命令如`tail`和`grep`用于查看和搜索日志。日志级别从低到高包括`debug`到`emerg`,表示不同严重程度的信息。注意保护日志文件的安全,防止未授权访问,并定期使用`logrotate`进行文件轮转以管理磁盘空间。
22 1
|
16天前
|
网络协议 应用服务中间件 Linux
centos7 Nginx Log日志统计分析 常用命令
centos7 Nginx Log日志统计分析 常用命令
29 2
|
17天前
|
Ubuntu Linux 网络安全
/var/log/auth.log日志详解
`/var/log/auth.log`是Linux(尤其是Debian系如Ubuntu)记录身份验证和授权事件的日志文件,包括登录尝试(成功或失败)、SSH活动、sudo使用和PAM模块的操作。登录失败、SSH连接、sudo命令及其它认证活动都会在此记录。查看此日志通常需root权限,可使用`tail`、`less`或`grep`命令。文件内容可能因发行版和配置而异。例如,`sudo tail /var/log/auth.log`显示最后几行,`sudo grep "failed password" /var/log/auth.log`搜索失败密码尝试。
70 8
|
29天前
|
监控 Java 测试技术
日志框架到底是Logback 还是 Log4j2
日志框架到底是Logback 还是 Log4j2
20 0
|
30天前
|
XML 运维 监控
【深入探究 C++ 日志库清理策略】glog、log4cplus 和 spdlog 的日志文件管理策略
【深入探究 C++ 日志库清理策略】glog、log4cplus 和 spdlog 的日志文件管理策略
67 0

相关产品