阅读105 返回首页    go 技术社区[云栖]


Serverless 场景下的日志收集和分析实践

场景描述

共享电动车企业使用函数服务搭建服务端。在函数服务中开启日志,把程序日志写到日志服务,同时在函数代码中使用SDK把运营日志写入到日志服务,使用日志服务进行日志分析。

在日志服务中,用户可以:

  1. 开发查看日志调试程序,确保程序的逻辑符合逻辑。
  2. 运维设置监控和报警,监控服务状态是否正常。
  3. 客服调查用户投诉。
  4. 运营分析数据,创建漏斗,分析留存率、转化率。

实验步骤

1. 开通服务和上传代码包

首先需要开通函数计算、日志服务,开通步骤和准备工作见文档:函数服务实践文章

2. 确认日志服务Project和logstore已经被创建

打开日志服务控制台

可以看到华东2已经创建了一个project,以yunqi-demo-开头,这个project是在函数服务的代码里创建的。

image.png

在logstore列表,我们能看到两个logstore,分别是fc-debug-log程序日志和ebike业务日志:

image.png

3. 配置函数服务的日志

打开函数服务控制台,选择刚刚创建的project和logstore, 选择AliyunLogFullAccess权限,点击保存:

image.png
image.png

image.png

进入 fc_bycycle这个函数:

image.png

左侧选择代码执行:

image.png

点击触发事件,输入事件的json,并且保存。然后点击执行:

image.png

事件样例:

{
    "Uid" : "abc",
    "DeviceId" : "abcdef",
    "Mobile" : "18612345678",
    "SessionId" : 23456,
    "Logitude": 120.0776645,
    "Latitude": 30.131852
}

4.查询

1. 在日志服务控制台,分别打开 两个标签,一个是fc-log,另一个是ebike:

image.png

2. 开发者调查函数调用情况。在 fc-log查询页面:输入fc_bycycle,点击查询:

image.png

此外,可以在ebike logstore中,查询op:unlock 或op:un* 或者unlock。

3. 客服收到用户投诉,某一次请求异常,那我们先找到userid:xxx, 然后找到requestid进入ebike查询: 查询userid:458 ,找到request id:

image.png

4. 点击左侧的图标,打开上下文查询

image.png

在图上搜索smart_lock

image.png

5. 运维同学为了监控线上的异常情况,打开ebike查询页面,查看十分钟内开锁次数最多的用户,输入query:

query No. 1:

op : unlock| select count(1) as pv ,userid group by userid, __time__ - __time__% 600 order by pv desc 

image.png

点击查询,然后右上角点击『另存为快速查询』:

image.png

然后点击『添加到dashboard』,选择新建dashboard,名称为ebike-monitor:

image.png

右上角添加报警,选择刚刚保存的快速查询,输入相关参数和手机号码:

image.png

查看开锁和关锁的延时情况,修改query为:

query No. 2:

op:lock or op : unlock |  select date_format(from_unixtime(__time__ - __time__% 3600),'%m-%d %H:%i') as time, avg(latency)as avg_latency, approx_percentile(latency,0.9) as top_10_percent_latency ,approx_percentile(latency,0.8) as top_20_percent_latency  group by __time__ - __time__% 3600 order by time limit 10000

点击保存到dashboard,选择已经存在的dashboard: ebike_monitor:
image.png

查看函数服务每分钟的请求pv:

query No. 3:

op:lock or op : unlock |  select date_format(from_unixtime(__time__ - __time__% 3600),'%m-%d %H:%i') as time,count(1) as pv  group by __time__ - __time__% 3600 order by time limit 10000

点击保存到dashboad,图表名称命名为ebike_pv

查看电池使用情况:

query No. 4:

op:lock | select sum(used_battery) as hourly_used_battery , date_format (from_unixtime(__time__ - __time__% 3600),'%m-%d %H:%i') as time  group by __time__ - __time__% 3600 order by time limit 25

6. 运营同学需要日志数据做统计分析。在ebike查询页面,输入query:

query No. 5:

* | select sum(case when op = 'lock' then 1 else 0 end) as lock_pv, sum(case when op = 'unlock' then 1 else 0 end) as unlock_pv , date_format(from_unixtime(__time__ - __time__ % 3600),'%m-%d %H:%i') as time group by __time__ - __time__ % 3600 order by time limit 100 

image.png

点击保存到dashboard,参考上文步骤,新建一个dashboard名称为ebike_dashboard:

输入更多query,保存到dashboard中:

一天内的总收入:

query No. 6:

op : lock | select sum(money)    as income

用户的支付手段占比:

query No. 7:

op:lock | select count(1) as pv , pay_channel group by pay_channel

7. 打开保存的dashboard:

左侧选择新建标签:

image.png

在右侧弹出窗口中,选择刚刚创建的dashboard:

image.png
image.png

如果需要修改图表,点击每张图右上角的箭头;如果需要刷新页面,可以点击刷新按钮:

image.png

关注我们

欢迎添加VIP钉钉群进行咨询:

最后更新:2017-10-10 10:34:03

  上一篇:go  Joomla模板下载
  下一篇:go  RDC如何构建一个基于Composer的PHP项目