最近在原有30+种数据采集渠道 基础上,何分化方新增MySQL Binlog、钟搭MySQL select等数据库方案,分析仍然主打快捷、可视实时、何分化方稳定、钟搭所见即所得的分析特点。
以下我们以用户登录数据库作为案例。可视公司内非常多的何分化方人员依赖于用户登录数据以及其衍生出来的相关数据:
老板要看大屏,每天UV、钟搭PV增长在哪里?分析
安全要监控登录是否异常,现在用户账户是可视否遭到集体攻击?
客户小二接到用户反馈,如何实时查询用户登录信息?何分化方
BI需要分析用户行为,数据分析如何关联用户登录数据?钟搭
审计上门了,请把您3年前用户的分析登录数据拿出来吧?

接下来我们将演示如何在10分钟内手把手完成从binlog采集到查询、告警、搭建报表等全过程,满足各个老板们的需求:
MySQL Binlog采集
关键字段索引+统计设置
对异常账号进行查询分析
对异常登录进行告警
配置可视化仪表盘
对历史登录信息备份以备数据审计
环境准备
数据库
mysql类型数据库(使用mysql协议,例如RDS、DRDS等),数据库开启binlog,且配置binlog类型为ROW模式(RDS默认开启)
用户登录表结构
复制CREATE TABLE `user_login` ( `id` int(11) unsigned NOTNULL AUTO_INCREMENT COMMENT id, `login_time` datetime NOTNULL, `login_ip` varchar(10) NOT NULLDEFAULT, `dev_type` varchar(10) NOTNULL, `usr_id` int(11) unsigned NOTNULL,`login_result` varchar(10) unsigned NOT NULL,`login_err_times` int(10) unsigned NOTNULL,`next_verify_type` varchar(10) NOTNULL,PRIMARYKEY (`id`), KEY `usr_id_index` (`usr_id`) ) 1.2.3.4.5.6.7.用户登录表中记录了登录id、登录时间、登录ip、登录设备、用户id、登录结果、网站模板连续登录失败次数、下一次校验类型等信息。其中登录验证规则如下:
正常情况只验证账号密码匹配
若用户连续登录失败超过3次或者当前ip和上次登录ip不在同一省,下次登录将弹出验证码
若用户连续登录失败超过5次,则下次登录将使用手机验证码
用户登录时表的更新方案
方案1:
每次用户登录,在user_login中新增一条记录,记录登录的ip、设备类型、时间信息
方案2:
考虑到用户数量非常多,如果每次用户登录都在user_login中新增一条记录,数据量会非常大,所以每次用户登录时,只会根据usr_id更新update表中的数据
对于方案1,优点是数据库中保存了所有用户的登录信息,缺点是user_login表会存在爆掉的问题,需要定期删除历史的数据;对于方案2,优点是user_login表的大小可控,缺点是会丢失历史用户的登录信息。
这里我们推荐使用方案2+logtail binlog采集组成最优的方案3:用户最近一次登录信息依然保存在数据库中,通过logtail的服务器托管binlog功能采集user_login表,logtail会将表中的每次修改事件上传到日志服务,日志服务中的数据可设置保存时间,超时自动删除。同时在日志服务中,可以对实时采集上来的数据进行查询、统计、查看报表、监控报警,也支持将数据对接下游流计算、导入Max Compute/OSS等。

数据采集
安装logtail
根据文档安装logtail,确认版本号在0.16.0及以上。若低于0.16.0版本请根据文档提示升级到最新版本。
采集配置
1. 在日志服务控制台创建一个新的Logstore,采集向导中选择自建软件中的Mysql binlog

2. 在配置页面中输入binlog采集配置,如下:
复制{ "inputs": [ { "type": "service_canal", "detail": { "Host": "

相关文章


精彩导读

热门资讯
关注我们
