Fork me on GitHub

阿里云日志服务使用实录

经常感叹公司的日志服务不好用吗?不实时、提个报表需求要层层审批还得等一周、可视化要自己搞、加个字段要跪求给解析…

是时候摆脱他们了,Now!
阿里云日志服务官网(https://www.aliyun.com/product/sls)

使用阿里云日志服务有什么优点?

1. 自定义打点字段

想加什么字段就加什么字段,然后在日志服务后台添加索引就可以了。当然,也不要乱加,以免自己绕晕了。

2. 支持实时查询

对于报警、定位 Bug,日志可实时查询是必须的!

3. 查询方便

可以按关键字模糊查询,也可以直接写 sql,可选任意时间范围,查询速度是嗖嗖的。常用的查询语句可以保存为“快速查询”

4. 可视化

可以创建仪表盘,支持多种 charts

5. 支持告警

可以自定义告警,支持短信、通知、钉钉等多种方式

6. API 查询

如果上述功能还不能满足需求,或者不能常驻电脑旁(目前日志服务后台只有 PC 版),可以通过 API 获取数据后自行实现

具体使用流程

1. 申请

阿里云->日志服务->Project管理 创建Project
选择所属地域,记一下,打点时需要
alilog_create_project

创建好后点Project名称进入Logstore列表 创建Logstore
因为我们是页面直接打点,这里要打开 WebTracking,其它默认即可
alilog_create_logstore

2. 打点

参考接入指南,这里我们选择Web Tracking
步骤2 收集日志数据中下载JS SDK(loghub-tracking.js),可以看一下代码,没几行,就一个意思,向某个地址发打点请求,可以根据自己的项目做下优化。

1
2
3
4
5
AliLogTracker(host,project,logstore) 初始化时的三个参数
host: 申请Project时选择的所属地域对应的host,我这里选择的是"华北2(北京)",对应的host为cn-beijing.log.aliyuncs.com,可以在[服务入口](https://help.aliyun.com/document_detail/29008.html)查询
project: Project 名
logstore: Logstore 名
那么就向 'http://' + project + '.' + host + '/logstores/' + logstore + '/track?APIVersion=0.6.0' 发请求就可以了

上面说了,打点时想加什么字段就加什么字段。字段示例:

1
2
3
4
5
6
7
type: 打点类型,取值范围(access/ajaxerrro/staticerror/jserror/...)
url: 页面地址
ua: 用户ua
request: type 为 ajaxerrro 时,request 为接口地址
ext: 扩展字段
mid: 用户标识ID
...

完整的打点请求示例:
http://projectname.cn-beijing.log.aliyuncs.com/logstores/logstorename/track?APIVersion=0.6.0&type=access&mid=123&url=xxx&ua=xxx

3. 查看原始日志

在 Logstore 列表中点“预览”
alilog_log_view
看到已经有日志进来
alilog_log_src

4. 查询分析

在 Logstore 列表中点“查询”,可以按关键字模糊查询,也可以直接写 sql 查询
先建立索引:
查询分析属性->设置 中添加“指定字段查询”
给打点字段 type/url/ua 等建立索引
具体的查询方式参考实时分析简介,这里举几个例子:

1
2
3
Android(打点中包含某字符串)
* and ua: Android(某字段中包含某字符串)
| SELECT type, COUNT(*) as count FROM log GROUP BY type(打点总数,按type归类)

常用的查询语句可以保存为“快速查询”

5. 可视化

举个例子,我们需要资源加载失败的实时数量,按分钟计:

1
| SELECT date_format(t, '%H:%i:%s') as time, count FROM (SELECT date_trunc('minute', __time__) as t, COUNT(1) as count FROM log WHERE type='static'  GROUP BY t ORDER BY t LIMIT 1000)

查询出结果后可以“添加到仪表盘”
alilog_chart
将你关心的数据都添加到仪表盘,长这样:
alilog_charts
还支持地图哦~
alilog_chart_map

6. 告警

点chart右上角,可以新建告警
alilog_create_alert
定义告警的阈值,执行间隔,通知方式等
alilog_edit_alert
alilog_edit_alert2
后台告警历史
alilog_alert_history
短信收到的告警
alilog_alert_phone

7. API查询

如果上述功能还不能满足需求,可以通过 API 获取数据后自行实现,参考API 参考
对于前端来说,token呀签名呀还是挺烦的。官方的PHP SDK为 https://github.com/aliyun/aliyun-log-php-sdk ,但并没有调通,最后自己摸索的,折腾了一天才跑通[汗]

小结

阿里的东西用着都挺舒服,现在有用到云服务器ECS、域名解析、日志服务,还有G2和antd,还有蚂蚁森林和蚂蚁庄园算不算。。

-------------感谢您的阅读 有问题请留言(或mailto:frostbelt@sina.cn)-------------