2015年8月21日

协作在螺旋实验室云解决一个软件问题-如何做远程帮助正确

由雅各布Engblom

jakob-engblom-intro-picture

你可能知道,我们最近宣布并推出了预览版的螺旋云计算实验室.使用Helix Lab Cloud,您可以访问云中的(模拟的)计算机,并且除了其他独特的能力,您可以与其他人共享会话。多亏了底层西米奇技术,共享一个会话涵盖了实验室机器的当前状态和输入输出的历史。共享是一个很好的协作调试工具错误报告在这个博客文章中,我将讲述我认为这是一个真正的问题的第一个应用程序的故事,其中这位作者帮助同事解决了实验机上发生的令人讨厌的编译失败。

故事从实验室云中的一台基于intel的Linux机器开始。我的同事,我们叫他尼莫吧,启动了实验室的机器并将一个相当大的应用程序上传到它的磁盘上。应用程序上传之后,他运行configure设置构建,然后运行make构建。使用在许多其他机器上构建并正确运行的已知好的Linux应用程序,他非常正确地期望它在实验室云中也能顺利构建。

然而,事实并非如此。但却出现了奇怪的错误。配置将成功完成。但是make会抱怨时间戳并再次运行configure。重复。当你的目标是取得进步时,这可不是一个好地方。

那么到底发生了什么?这个问题最初是用正常的方式提出的,过去当您在测试的系统中遇到问题时,您总是以这种方式寻求帮助。我们在Helix Lab Cloud团队中收到了一封来自Nemo的电子邮件,询问为什么事情不能工作,并包含了一个在目标上看到的配置和循环输出的副本(来自目标终端的静态捕获)。又来来回回发了几封邮件,包括一些输出的例子。没有进步。

在这一点上,有人记得我们有一个系统,应该让我们直接分享东西,而不是发送文本复制到电子邮件。所以,尼莫和这位作者分享了他的Lab Cloud会议,展示了这个问题。

hlc-bug-1

下面是螺旋实验室云中的共享;最近从我的账户里被拿走了。注意一些会话是如何被标记为“客人”的,这表明我是这些会话中的客人。其他会话是我创建和控制的。会话此时没有运行。

这为我提供了机器的状态,串行控制台的内容,以及机器磁盘上的所有东西,就像尼莫离开它时一样。由于身处不同的时区,我在第二天的工作中趁尼莫睡觉的时候打开了这个会议,并做了一些分析。

第一个操作就是重复之前的构建尝试,看看是否真的失败了。他们所做的。但是最好的做法是先检查基础知识,并且使用Lab Cloud自动记录和回放,可以非常容易地检查之前发送到目标系统的命令。我只是在Nemo告诉我的时间轴上点击了快照上的“重播”,然后Lab Cloud便从那点开始重播了游戏过程。在回放过程中,我无法向目标系统发送任何输入。相反,我可以看到Nemo在目标控制台输入的所有内容,以及由此产生的目标系统输出。

实验室云记录进入实验室系统的每个单个字符或网络数据包。你可以回顾做了什么,即使做的人不太确定他或她做了什么-实验室云给你完美的记忆!这种始终开启的记录模型减少了用户的心理负担,因为不需要维护单独的操作日志。如果一个用户想帮助另一个用户检查他们的工作,他们应该在工作中有趣的地方添加快照,比如在尝试一个重要的操作之前。

但是我跑题了,重要的是这个bug已经被确认了。那么,到底发生了什么?

基于一种直觉,我决定检查当前目标时间,因为有一些关于时间戳的抱怨。结果证明这是一个正确的猜测。目标系统认为时间是2008年的某个时候。随着2015年的文件被上传并在构建中使用,很明显当前时间和文件时间之间的比较将会导致相当意想不到的结果。特别是当新生成的文件的时间戳比生成脚本本身的时间戳更早时。这个错误的时间设置是机器设置中的配置问题,生成和配置这个特定平台设置的人忘记将模拟机器的虚拟时间设置为当前时间。小错误,容易犯,但副作用并不明显。

对整个系统的访问是执行这个分析的关键。如果不能共享目标系统的当前状态,我们将不得不通过电子邮件继续对话,尝试一件又一件,由于不同的时区,我们每天的尝试很少超过一两次。你们都知道这是多么令人沮丧,支持人员经常只是说“给我一个远程登录,这样我就可以自己检查了”。通过在Helix Lab Cloud系统中共享会话及其状态和历史,我可以调查任何我需要的内容,而无需通过电子邮件往返。如果我有预感,我可以马上去查,而不是让尼莫帮我查。

分享这个过程的另一个好处是我可以测试和验证提出了解决问题的方法,在系统背景下对原问题进行处理。修正(设置日期)正确地应用于显示问题的系统。这实现了两件事。首先,它很容易向尼莫表明,我确实解决了这个问题。这也解决了尼莫的问题。他自己不需要做任何事情来修复,我修补的系统就是他正在使用的。这样,尼摩可以从我讲到的地方继续下去。对于支持用户和解决问题来说,这是一个非常强大的工具。

hlc-bug-2

HLC中的共享维护会话的所有权,但是共享会话的用户可以在会话结束时添加新的快照。由于所有者可以删除这些快照并撤销所有操作,这是完全安全和可控的。

值得注意的是,Lab Cloud的记录、重播和快照技术也意味着我所做的一切都被记录下来以供审查——并有可能撤销。如果我在试图修复系统时完全搞砸了系统,那么Nemo(或我)可以将系统状态恢复到与我分享之前的状态,至少他不会变得更糟。Nemo仍然是会话的所有者,如上图所示,并且有完全的权限撤消和回滚到之前的状态。

今天要尝试螺旋实验室云,请访问实验室云页面https://lab.cloud.windriver.com,点击“注册”,并使用邀请代码BlogInvite。该优惠将于2015年10月到期。

更多关于螺旋实验室云的信息,请参阅之前的一些博客文章:

以前的OPNFV是否会成为NFV兼容性的实际标准?
下一个构建您的物联网:融合IT和OT基础设施的四个考虑因素