EMAS 远程日志-端上问题排查利器 | 学习笔记

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
移动研发平台 EMAS,开发者版免费套餐
简介: 快速学习 EMAS 远程日志-端上问题排查利器

开发者学堂课程【基于EMAS应用开发实战: EMAS 远程日志-端上问题排查利器】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/770/detail/13487


EMAS 远程日志-端上问题排查利器

内容介绍:

一. 远程日志是什么

二. SDK 接入

三. 新建任务

四. 智能筛选任务

五. 崩溃分析联动

六. 智能拉取

七. 未来展望

 

一. 远程日志是什么

1. 远程日志

远程日志将端上日志以文件的形式存储在 App 的本地,通过控制台去创建相应的任务,App 接受到相应任务后上报日志,后在 web 控制台展现相应日志,提供搜索和一些报表能力,协助问题的排查。

2.支持平台

安卓和 iOS

3.解决什么问题

移动端设备一经发布,没办法获取到日志

4.适用场景

适合查看单台设备的日志流水来排查定位问题,提升我们 App 的质量。

5. 步骤拆解

image.png

客户端在日常运行的过程中,做相应的日志打印,远程 SDK 会将日志以加密文件的形式存储在本地,App 的开发者,可以在控制台创建现在的任务,选取设备去创建任务。端上,指定条件的设备,接受到相应的任务后,把这个日志上传到远程日志的控制台,控制台做相应的解析,在微博端提供给我们相应的日志展现和搜索以及相应的报表,排查问题时,步骤就是这样拆解的。

举例说明:电商,或者本地服务类的 app,经常会遇到支付失败。

常规办法:遇到这类问题我们常规的办法只能靠猜。是不是页面逻辑写错,是不是后端的问题,是不是登录状态过期,或者是网络错误,只能逐一的去排查。

远程日志提供了移动端问题排查的新思路和新方法。

 

二. SDK 接入

以 iOS 接入为例

image.png

Pod 依赖。

做相应的这个 SDK 的集成:在我们的项目里面的去做头文件的依赖和相应的 SDK 初始化。

③ 在我们需要打印日志的地方写入我们打印日志的逻辑,整个接入就已经完成。

除了 Pod 接入,还支持这个 SDK 直接导入的接入。这个是以 iOS 接入为例,安卓接入同样简单。

SDK 接入以后,我们就可以在控制台创建相应的任务。


三.新建任务

1.远程日志控制台组成结构。

image.png

顶部是远程日志的 APP,在 EMS 平台创建的 App。左侧是任务列表,在任务列表里面,可以创建任务。

然后是设备日志,就你所创建任务以后选取那些设备,会以两个视角,任务视角和设备视角去查看日志。还有一些相关的拉取设置以及计费和帮助相关的一些帮助项。

任务列表里有任务的名称,拉取的模式,创建的时间和这个任务进度;同时你还可以去追加现在的设备或结束现在这个项目的任务,这是任务列表的页面。

我们也可以看到左上角有一个新建任务,这就是我们的目的。我们刚刚碰到的那个支付失败的问题,我们就可以通过新建任务来解决。

2.用户拉取的模式。

用户拉取模式,是我们去选取特定的这个 ID 做拉取,刚刚我们支付失败的问题,用户可能会通过反馈渠道来反馈,让我们知道用户的 ID,在拉取设备列表里面去做相应的这个筛选。

image.png

拉选设备里面我们展现设备 ID 和名称信息。名称其实就是可以去在端上绑定业务侧的名称,比如说给这个设备绑定一个用户昵称或者用户 ID。

同时还提供应用版本、系统版本、地域、品牌、机型的筛选,和在线时间的筛选。筛选这些问题设备,我们就可以创建相应的任务。任务创建成功之后,如何知道是否拉取成功,何时有日志,同时也提供相应的通知设置。

通知的设置的分为两个阶段。第一个阶段是有一台设备上报成功,这时候可以查看相应的日志,提供一个通知的开关。如果选取设备全部拉取成功,也会提供一个开关去做相应的通知,通知使用短信和邮件。选取了设备,添加了通知的配置,就可以去创建相应的任务,创建相应的任务以后,端上接受到任务后,会把相应的日志上传到后端做相应的分析。

拉取成功了,在任务详情里面,可通过任务列表进入任务详情去查看我们刚刚拉取的移动端设备的日志。

我们来到任务详情页面。

image.png

这个页面展现了我们主要的工作界面,告诉我们任务信息,设备的信息,以及我们拉取到的日志。任务拉取成功或者任务在过程中都可以进入页面去查看相应的志。

对这个界面能去逐一的介绍。

区域 1 是刚创建任务的时的任务相关的信息。

区域 2 是这个设备相关信息,比如说设备在这个任务里面的状态是怎么样的,是开始拉取了,还在上传,是已经拉取成功还是失败,我们都会把相应的状态归类并展示到这个区案里面。

刚刚支付失败那台设备,已经拉取成功了,我们就会在左侧区案里优先展示。

在区域 3 里可以做筛选。我们想看指定时间的日志,不同级别的日志,或者用特定的关键词做搜索,就可以在这里去做相应的筛选。对于想本地分析云端研发同学来说,我们还提供下载日志的这一个按钮,可以把日志下载下来,自己去做相应的分析。

在区域 4 提供了筛选条件选取以后或者默认的这个筛选条件,移动端 APP 日志链的走势,就是我们最重要的模块。

区域 5 是日志模块。我们把日志时间、级别、模块,和日志本身都展示出来了。可以看到我们刚刚的排查问题是支付失败,我们看到就明确告诉我们这次失败的原因,返回错误为 403,其实他就告诉了你,其实钱不够,这个问题我们就排查解决了。

像这种情况,可能我们在端上加一些逻辑提示,明确的提示他们。这样的话就可以避免一些用户反馈,解决这个端上的一些问题。

除了手动拉取以外,我们还支持选取不同的条件去拉取相应的日志。

我们先说设备问题,我们可以通过任务维度,也可以通过日志维度。刚刚我们筛选相应的设备进入到任务详里面也是可以的。

 

四.智能筛选任务

除了就刚刚说到的选取大概设备,我们还可以做智能筛选做拉取任务。

比如某一天某个应用版本,在某个地域发生的问题,这覆盖面是比较广的,前面我们手动拉取,可能会有两个问题:选取的那些设备很有可能长时间没上线,导致任务失败,即使任务失败,可能也会隔一段时间再上线上传这个日志,这样的话就会等待很长的时间,这个体验感不是很好。

image.png

我们刚刚那种场景,在某个应用版本的,某个地域里面经常会出现支付失败,在智能筛选里面也可以直接去选取相应的条件,然后再去填写一个拉取的设备链。设备链和条件就可以创建新的任务,我们会在后台帮你筛选最快上线的那些设备,把这个日志尽快的拉取到远程日志控制台,提供更好的体验。这就是我们智能筛选任的形式。

同时如果我们筛选的的设备没有很快的上线的话,我们还会去做相应的设备扩容。比如说填的是 3,比如过一段时间就有两个设备上来,那我把三个设备,三个备选设备是扩成 6 个,就有更多的设备命中条件,6-2 的这 4 台设备里面有一个上报了,那我们就把相应的项目任务结束了,因为有三台已经上报了。我们可能有几倍的备选的设备值,当达到选取的设备链以后,我们就把任务结束掉,其实就达到要求,我们就会这个任务视为成功。

能够更快的完成设备拉取,更方便去排查问题。

 

五.崩溃分析联动

image.png

一般的这个情况下,我们反馈渠道除了用户反馈以外,还有一个问题就是用户崩溃了,可能没有反馈,继续打开用。那这样的情况和我们 EMS 另一个产品崩溃分析去做了相关的联动。

崩溃分析中,崩溃,卡顿异常的列表里面,我们做了一些更便捷的操作,我们在一个崩溃分析列表里面可以拉取相应日志。

崩溃,可能涉及了几百台设备,会把这一个设备传入到远程日志里面,在这个远程日志里面,选取相应的设备链去做拉取,我们就把这个崩溃分析跟远程日志做了打通,在崩溃分析去感知问题,通过远程日志拉取就可以定位问题,可以解决问题。这样就更方便感知问题和定位问题。

 

六.智能拉取

崩溃分析还有一个问题,就是当发生崩溃以后,感知到崩溃以后,再去拉取。从拉取到拉取成功,还是会有一个时间。拉取后这个时间就只能等待,可能几个小时,也可能会失败,其实还是会打断问题的排查思路。

image.png

智能拉取就是为了解决这样的问题。所以你在远程控制台排查问题的时候,日志就已经在那,我们就提供一个智能拉取的功能。

就是在前面崩溃分析跟远程控制数据联动的情况下,做了更加深的一步:我们次日七点前,会对前一天的 top 10 的问题,或者是第一次出现的问做自动的拉取,自动拉取后会自动去创建任务。自动7点创建任务,那可能 8.9 点上班的时候,这些日志就已经在那,极大的便捷了排查问题的路径,就不需要再去拉取日志。

上线以后通过分析,直接可以去查看日志,这样就能够更快地去定位、解决问题。

 

七.未来展望

1.增加上报形式

我们现在只提供在某些条件下去创建任务,端上接收到到任务再去上报。这种情况下做上报其实有局限性,在某些情况下我们希望提供有主动上报功能。比如说端上自主决策什么时候上报。比如移动端开发者可能写相应的逻辑,捕捉到连续的 crash 就会把日志主动上报,因为这些问题比较严重。或者说,用户在 App 内反馈问题,通过反馈这个按钮,点击反馈的时候我们就把相应日志上传,排查问题的时候日志就直接在那里。

2.丰富采集数据

我们现在的数据并不丰富,我们现在的这个数据只支持用户自己的埋点,还需要更多的无痕埋点,解放用户。更完善的做一些监控,去打印日志。远程 SDK 可以帮助用户记录 App 的操作路径,比如点击某个按钮打开某个页面、APP 的内存报警、或者一些网络安慰的操作,都会给用户无痕的记录下来,丰富日志数据数据,更能够通过这个过程去完整的复现用户的操作流水,机器状态的变化,更精确的定位问题。

3.更多产品联动

我们还想做更多的产品联动,重视性能问题,功能决定现在,性能决定未来。后续我们会思考如何把性能日志和远程日志打通,更好地服务移动端的开发者。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
6月前
|
开发工具 开发者
应用研发平台EMAS在接入崩溃分析、性能分析和远程日志的时候
【2月更文挑战第28天】应用研发平台EMAS在接入崩溃分析、性能分析和远程日志的时候
50 6
|
6月前
|
运维 监控 数据挖掘
应用研发平台EMAS产品常见问题之将阿里后台的日志落到我们后台失败如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
|
28天前
|
Java Shell
「sh脚步模版自取」测试线排查的三个脚本:启动、停止、重启、日志保存
「sh脚步模版自取」测试线排查的三个脚本:启动、停止、重启、日志保存
36 1
|
28天前
|
Java 程序员 应用服务中间件
「测试线排查的一些经验-中篇」&& 调试日志实战
「测试线排查的一些经验-中篇」&& 调试日志实战
20 1
「测试线排查的一些经验-中篇」&& 调试日志实战
|
4月前
|
SQL Java Serverless
实时计算 Flink版操作报错合集之在写入SLS(Serverless Log Service)时出现报错,该如何排查
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
6月前
|
SQL Oracle 关系型数据库
oracle11g SAP测试机归档日志暴增排查(二)
oracle11g SAP测试机归档日志暴增排查(二)
312 1
|
6月前
|
Oracle 关系型数据库 Shell
oracle11g SAP测试机归档日志暴增排查(一)
oracle11g SAP测试机归档日志暴增排查(一)
76 1
|
2月前
|
Java
日志框架log4j打印异常堆栈信息携带traceId,方便接口异常排查
日常项目运行日志,异常栈打印是不带traceId,导致排查问题查找异常栈很麻烦。
|
3月前
|
JavaScript Serverless Linux
函数计算产品使用问题之遇到Node.js环境下的请求日志没有正常输出时,该如何排查
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
4月前
|
存储 弹性计算 监控
函数计算产品使用问题之程序正常运行,但无法在 /home/lang_serve_severless_log 下找到日志文件,该如何排查
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。

热门文章

最新文章