CN111382079B - 应用程序现场还原的方法、装置、设备及存储介质 - Google Patents

应用程序现场还原的方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN111382079B
CN111382079B CN202010181174.8A CN202010181174A CN111382079B CN 111382079 B CN111382079 B CN 111382079B CN 202010181174 A CN202010181174 A CN 202010181174A CN 111382079 B CN111382079 B CN 111382079B
Authority
CN
China
Prior art keywords
information
mirror image
debugging
image
application
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010181174.8A
Other languages
English (en)
Other versions
CN111382079A (zh
Inventor
高华龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Yunkuanzhiye Network Technology Co ltd
Original Assignee
Beijing Yunkuanzhiye Network Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Yunkuanzhiye Network Technology Co ltd filed Critical Beijing Yunkuanzhiye Network Technology Co ltd
Priority to CN202010181174.8A priority Critical patent/CN111382079B/zh
Publication of CN111382079A publication Critical patent/CN111382079A/zh
Application granted granted Critical
Publication of CN111382079B publication Critical patent/CN111382079B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提出一种应用程序现场还原的方法、装置、设备及存储介质,该方法包括:第一设备获取第一镜像和调试信息,其中,第一镜像与第二设备中的第二镜像是同源的镜像,第一镜像包括调试工具和应用程序,第二镜像包括应用程序,调试信息是第二设备运行的应用程序出现故障时第二设备记录的信息;第一设备根据第一镜像和调试信息,还原应用程序的现场。相比于现有技术中故障排查人员在第二设备中运行有该应用程序的容器中安装调试工具,可避免第二设备上的应用程序受到进一步干扰或影响,另外,提高了还原现场的速度,从而提高了故障排查人员定位故障、解决故障的速度。

Description

应用程序现场还原的方法、装置、设备及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种应用程序现场还原的方法、装置、设备及存储介质。
背景技术
随着计算机技术的不断发展,软件供应商可开发出各种不同功能的应用程序,并将应用程序部署到线上的服务器,以便给用户提供服务。
在软件开发领域中,作为开发运维一体化的Devops(过程、方法与系统的统称)越来越被重视,而随着开源的应用容器引擎docker的兴起,极大的改善了Devops的生态环境,从而使得docker成为了实现Devops的关键技术。一个完整的docker通常包括客户端、守护进程、docker镜像和容器这几部分。其中,docker镜像可以看成是停止运行的容器,使用docker镜像可启动一个或多个容器。通常情况下,docker镜像内部是一个精简的操作系统,同时还包括应用程序运行所必须的文件和依赖包。容器可以看成是docker镜像的运行时实例,容器的内部可以运行应用程序。
现有技术中,为了将docker镜像快速的部署到线上的服务器,docker镜像只保留确保容器能够正常启动的最小集合。但是当容器中运行的应用程序出现故障时,故障排查人员需要在容器中安装调试工具,如此可能导致容器中正在运行的应用程序受到进一步干扰或影响。另外,还原现场所需的时间较长,从而导致故障排查人员无法及时定位故障、解决故障。
发明内容
本申请实施例提供一种应用程序现场还原的方法、装置、设备及存储介质,以解决相关技术存在的问题,技术方案如下:
第一方面,本申请实施例提供了一种应用程序现场还原的方法,包括:
第一设备获取第一镜像和调试信息,其中,该第一镜像与第二设备中的第二镜像是同源的镜像,该第一镜像包括调试工具和应用程序,该第二镜像包括该应用程序,该调试信息是该第二设备运行的该应用程序出现故障时该第二设备记录的信息;
该第一设备根据该第一镜像和该调试信息,还原该应用程序的现场。
在一种实施方式中,该第一设备获取第一镜像和调试信息,包括:
该第一设备获取该第二镜像的版本信息和该调试信息所处的位置信息;
该第一设备根据该版本信息获取该第一镜像;
该第一设备根据该位置信息获取该调试信息。
在一种实施方式中,该调试信息存储在第三设备中;
该调试信息所处的位置信息,包括:该调试信息在该第三设备中的存储目录。
在一种实施方式中,该第一设备获取该第二镜像的版本信息和该调试信息所处的位置信息,包括:
该第一设备从第四设备接收该第二镜像的版本信息和该调试信息所处的位置信息。
在一种实施方式中,该第四设备的用户界面包括该第二设备的标识信息、第一图标、第二图标中的至少一个;
其中,该第一图标用于触发该第二设备将该调试信息存储在该第三设备中,该第二图标用于触发该第二设备向该第四设备发送该第二镜像的版本信息。
在一种实施方式中,该第一设备根据该第一镜像和该调试信息,还原该应用程序的现场,包括:
该第一设备根据该第一镜像创建应用容器;
该第一设备将该调试信息添加到该应用容器中,通过该调试工具还原该应用程序的现场。
在一种实施方式中,该第一镜像的接入点为空服务,该第二镜像的接入点为该应用程序对应的业务服务。
第二方面,本申请实施例提供了一种应用程序现场还原的装置,该装置包括:
获取模块,用于获取第一镜像和调试信息,其中,该第一镜像与第二设备中的第二镜像是同源的镜像,该第一镜像包括调试工具和应用程序,该第二镜像包括该应用程序,该调试信息是该第二设备运行的该应用程序出现故障时该第二设备记录的信息;
现场还原模块,用于根据该第一镜像和该调试信息,还原该应用程序的现场。
在一种实施方式中,该获取模块在获取第一镜像和调试信息时,具体用于:
获取该第二镜像的版本信息和该调试信息所处的位置信息;
根据该版本信息获取该第一镜像;
根据该位置信息获取该调试信息。
在一种实施方式中,该调试信息存储在第三设备中;
该调试信息所处的位置信息,包括:该调试信息在该第三设备中的存储目录。
在一种实施方式中,该获取模块包括:接收单元;
该接收单元用于从第四设备接收该第二镜像的版本信息和该调试信息所处的位置信息。
在一种实施方式中,所述第四设备的用户界面包括所述第二设备的标识信息、第一图标、第二图标中的至少一个;
其中,所述第一图标用于触发所述第二设备将所述调试信息存储在所述第三设备中,所述第二图标用于触发所述第二设备向所述第四设备发送所述第二镜像的版本信息。
在一种实施方式中,该现场还原模块包括:应用容器创建单元和现场还原单元;其中,
该应用容器创建单元用于根据该第一镜像创建应用容器;
该现场还原单元用于将该调试信息添加到该应用容器中,通过该调试工具还原该应用程序的现场。
在一种实施方式中,该第一镜像的接入点为空服务,该第二镜像的接入点为该应用程序对应的业务服务。
第三方面,本申请实施例提供了一种应用程序现场还原设备,该设备包括:存储器和处理器。其中,该存储器和该处理器通过内部连接通路互相通信,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,并且当该处理器执行该存储器存储的指令时,使得该处理器执行上述各方面任一种实施方式中的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质存储计算机程序,当计算机程序在计算机上运行时,上述各方面任一种实施方式中的方法被执行。
上述技术方案中的优点或有益效果至少包括:通过第一设备获取与第二设备中的第二镜像同源的第一镜像以及第二设备记录的调试信息,由于第一镜像和第二镜像包括相同的应用程序,第一镜像相比于第二镜像,第一镜像还包括调试工具,因此,第一设备可通过该调试工具、该第一镜像中的应用程序和该调试信息还原出该应用程序的现场,相比于现有技术中故障排查人员在第二设备中运行有该应用程序的容器中安装调试工具,可避免第二设备上的应用程序受到进一步干扰或影响。另外,提高了还原现场的速度,从而提高了故障排查人员定位故障、解决故障的速度。
上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本申请进一步的方面、实施方式和特征将会是容易明白的。
附图说明
在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本申请公开的一些实施方式,而不应将其视为是对本申请范围的限制。
图1为本申请一实施例的应用程序现场还原的方法的流程图;
图2为本申请一实施例的应用场景的示意图;
图3为本申请一实施例的构建精简镜像和调试镜像的流程图;
图4为本申请另一实施例的应用程序现场还原的方法的流程图;
图5为本申请另一实施例的应用场景的示意图;
图6为本申请一实施例的用户界面的示意图;
图7为本申请一实施例的记录并存储调试信息的流程图;
图8为本申请一实施例的共享存储中调试信息的存储目录的示意图;
图9为本申请一实施例的应用程序现场还原的装置的结构框图;
图10为本申请一实施例的应用程序现场还原设备的结构框图。
具体实施方式
在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本申请的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
在软件开发过程中,经常会使用到docker,具体而言,docker是一个开源的应用容器引擎,软件开发者可以将应用程序和该应用程序的依赖包打包到一个可移植的容器中,在本申请实施例中,容器也可称为docker容器或应用容器。每个容器可对应一个镜像,在本申请实施例中,镜像也可称为docker镜像或容器对应的镜像。
通常情况下,在软件开发过程中,研发人员、测试人员和运维人员使用的是相同的docker镜像,从而使得研发人员、测试人员和运维人员分别维护的应用程序的版本一致。但是,这种方式也存在一定的问题,例如,在构建线上使用的docker镜像时,为了能将docker镜像快速的部署到线上的服务器,docker镜像只保留确保容器能够正常启动的最小集合,但是当应用程序出现故障时,故障排查人员例如研发人员需要通过调试工具来了解应用程序中的问题。由于线上的docker镜像中并没有调试工具,因此,研发人员往往需要将调试工具安装到该docker镜像生成的容器中,如此可能导致容器中正在运行的应用程序受到进一步干扰或影响,另外,通过这种方式还原现场的时间较长,从而导致故障排查人员无法及时定位故障、解决故障。为了解决该问题,本申请实施例提供了一种应用程序现场还原的方法,具体的,可以构建两个镜像,这两个镜像是同源的镜像,这两个镜像包括相同的应用程序和动态库,这两个镜像的不同之处在于:其中一个镜像包括调试工具,另一个镜像不包括调试工具。此处,可以将包括调试工具的镜像记为调试镜像,将不包括调试工具的镜像记为精简镜像。其中,精简镜像可以部署到线上的服务器中,该精简镜像可启动一个容器,使得该容器内部运行该应用程序。当该应用程序正常运行时,调试宿主机不需下载调试镜像。当该应用程序出现故障时,研发人员的调试宿主机需下载调试镜像,并根据该调试镜像和线上的服务器所记录的故障信息或调试信息,对应用程序的现场进行还原。下面结合具体的实施例对本申请实施例提供了一种应用程序现场还原的方法进行详细介绍。
图1示出根据本申请一实施例的应用程序现场还原的方法的流程图。如图1所示,该方法可以包括:
S101、第一设备获取第一镜像和调试信息,其中,该第一镜像与第二设备中的第二镜像是同源的镜像,该第一镜像包括调试工具和应用程序,该第二镜像包括该应用程序,该调试信息是该第二设备运行的该应用程序出现故障时该第二设备记录的信息。
在本申请实施例中,第一设备具体可以是如上所述的调试宿主机,第二设备具体可以是如上所述的线上的服务器。第一镜像具体可以是如上所述的调试镜像,第二镜像具体可以是如上所述的精简镜像。
如图2所示,第二设备22上部署有精简镜像,该精简镜像可启动一个容器,该精简镜像中包括的应用程序可运行在该容器中。当该应用程序出现故障时,第二设备22可以记录调试信息,该调试信息可以包括故障前后产生的日志、调试文件(例如,core文件,所谓的core文件可以是指以“core”这个单词或以“core”扩展的单词命名的文件)、故障发生时的状态(例如,第二设备22执行预设指令如date指令、ifconfig指令等的执行结果,其中,“date”和“ifconfig”可以是指令的命名)中的至少一种。
可选的,该调试信息存储在第三设备中;该调试信息所处的位置信息,包括:该调试信息在该第三设备中的存储目录。
例如图2所示,第二设备22可以将调试信息记录在第三设备23中,具体的,调试信息可以存储在第三设备23的某一个目录下,该目录可以与该精简镜像的版本信息对应,也就是说,根据该精简镜像的版本信息,可以确定出存储该调试信息的目录。调试信息所处的位置信息具体可以是第三设备23中存储该调试信息的目录。
在本申请实施例中,第三设备23可以作为共享存储分别与第一设备21和第二设备22进行通信。例如,第一设备21可以远程访问第三设备23,并从第三设备23中读取调试信息。
另外,在本申请实施例中,精简镜像和调试镜像可以由同一个主机生成,例如,可以由如图2所示的主机24生成,主机24可记为第五设备,该第五设备用于生成精简镜像和调试镜像,并将精简镜像和调试镜像推送到镜像仓库。例如,主机24生成精简镜像和调试镜像,以及主机24将精简镜像和调试镜像推送到镜像仓库25的过程,具体如图3所示。具体的,主机24获取两个基础镜像,其中一个基础镜像包括调试工具,一个基础镜像不包括调试工具。其中,包括调试工具的基础镜像用于生成调试镜像,不包括调试工具的基础镜像用于生成精简镜像。进一步,主机24编译应用程序和动态库,生成压缩包。利用该压缩包和两个基础镜像生成调试镜像和精简镜像。例如,调试镜像和精简镜像分别对应不用的Dockerfile文件,并由主机24执行两次dockerbuild指令生成调试镜像和精简镜像。其中,Dockerfile文件的第一行是FROM指令,该FROM指令用于指定基础镜像。另外,Dockerfile文件还用于描述如何生成调试镜像或精简镜像。此外,Dockerfile文件还包括调试镜像或精简镜像的接入点。进一步,还可以在调试镜像的名称中添加debug(调试)后缀,在精简镜像的名称中添加release(发布)后缀。在给该调试镜像和该精简镜像打上相同的版本标签后推送到镜像仓库25。
其中,精简镜像和调试镜像是同源的镜像,所谓的同源可以包括以下情况的至少之一:精简镜像和调试镜像分别对应的基础镜像是源自于同一个镜像生成的;精简镜像和调试镜像分别包括的应用程序是相同的。
在一些实施例中,镜像仓库25不限于docker的远程服务器,还可以是软件供应商自己搭建的公开的服务器,或者还可以是主机24中的存储部件。
可以理解的是,生成精简镜像和调试镜像的设备不限于主机24,例如,还可以由第一设备21生成精简镜像和调试镜像,并将精简镜像和调试镜像推送到镜像仓库25中。或者,在一些实施例中,第一设备21还可以将精简镜像和调试镜像存储在本地。
当第二设备22上运行的应用程序出现故障时,第一设备21可以从镜像仓库25中下载调试镜像。
S102、该第一设备根据该第一镜像和该调试信息,还原该应用程序的现场。
当第一设备21通过上述方法获取到调试镜像和调试信息后,根据该调试镜像和调试信息,还原该应用程序的现场,例如故障现场或其他场景。
在一种可行的实施方式中,该第一设备根据该第一镜像和该调试信息,还原该应用程序的现场,包括:该第一设备根据该第一镜像创建应用容器;该第一设备将该调试信息添加到该应用容器中,通过该调试工具还原该应用程序的现场。
如图4所示,第一设备21可检测本地是否存在与精简镜像创建的容器同名的容器,如果是,则从本地删除该容器以及对应的镜像;否则第一设备21从镜像仓库25中下载调试镜像。进一步,第一设备21根据调试镜像创建应用容器,该应用容器可运行该调试镜像中包括的应用程序,根据图3可知,该应用程序和第二设备22中运行的应用程序是相同的。进一步,第一设备21将共享存储中的调试信息添加到该应用容器中,由于调试镜像中包括调试工具,因此,第一设备21可通过该调试工具还原该应用程序的现场。
可以理解的是,本申请实施例并不限定第一设备21、第二设备22、第三设备23的设备形态,例如,第一设备21可以是笔记本电脑、第二设备22和第三设备23可以是服务器。
本申请实施例通过第一设备获取与第二设备中的第二镜像同源的第一镜像、以及第二设备运行的应用程序出现故障时第二设备记录的调试信息,由于第一镜像和第二镜像包括相同的应用程序,第一镜像相比于第二镜像,第一镜像还包括调试工具,因此,使得第一设备通过该调试工具、该第一镜像中的应用程序和该调试信息,可以还原出该应用程序的现场,相比于现有技术中故障排查人员在第二设备中运行有该应用程序的容器中安装调试工具,可避免第二设备上的应用程序受到进一步干扰或影响,另外,提高了还原现场的速度,从而提高了故障排查人员定位故障、解决故障的速度。
如图5所示,在图2的基础上,当第二设备22运行的应用程序出现故障时,第二设备22可以向运维人员的第四设备26发送故障提示信息,由运维人员通过第四设备26来触发第二设备22记录如上所述的调试信息或/及将该调试信息记录到第三设备23中。本实施例并不限定第四设备26的设备形态,例如,第四设备26可以是智能手机、平板电脑、笔记本电脑等。
可选的,该第四设备的用户界面包括该第二设备的标识信息、第一图标、第二图标中的至少一个;其中,该第一图标用于触发该第二设备将该调试信息存储在该第三设备中,该第二图标用于触发该第二设备向该第四设备发送该第二镜像的版本信息。
如图6所示,60表示第四设备26上显示的用户界面,该用户界面可供运维人员操作。运维人员可以对第二设备22上运行的应用程序进行监控。其中,该用户界面60中包括第二设备22所属的集群的名称(例如,预上线)。另外,该用户界面60还包括第二设备22的某个容器所提供的服务的类型(例如,缓存),可以理解的是,第二设备22可以包括多个容器,不同的容器可以运行不同服务类型的应用程序,例如,第二设备22中的容器1用于运行如上所述的精简镜像中的应用程序,该应用程序的服务类型为缓存,则用户界面60中显示的服务类型具体为容器1的服务类型。如果第二设备22中不同的容器可以运行同一服务类型的应用程序,则用户界面60中还可以进一步包括该服务类型对应的容器的标识信息。此外,第二设备22作为该集群中的一个节点,该用户界面60还包括第二设备22的标识信息(例如,IP地址172.30.46.10)。
如图6所示,该用户界面60还包括第一图标61和第二图标62。本申请实施例中并不限定第一图标61和第二图标62的具体命名,例如,第一图标61的命名可以是“收集该服务的日志”,第二图标62的命名可以是“下载脚本到本地”。当第二设备22运行的应用程序出现故障时,第二设备22向第四设备26发送故障提示信息,该运维人员可根据该故障提示信息点击第一图标61,进一步,第四设备26根据该运维人员对第一图标61的点击操作生成触发信息,并将该触发信息发送给第二设备22,该触发信息用于触发第二设备22记录如上所述的调试信息,并将该调试信息记录在第三设备23中与如上所述的精简镜像的版本信息对应的目录中。
如图7所示为运维人员点击第一图标61后,第二设备22将调试信息记录在第三设备23中与精简镜像的版本信息对应的目录中的过程。在本实施例中,第二设备22记录的调试信息可包括日志、core文件、第二设备22执行预设指令后的执行结果中的至少一种。其中,预设指令可以是第四设备26在接收到故障提示信息后,由第四设备26发送给第二设备22的。进一步,第二设备22执行该预设指令并记录相应的执行结果,该预设指令可以是一个或多个。如图7所示,该过程包括如下几个步骤:
S701、在共享存储中建立与故障日期相关的收集根目录。
如图8所示,与精简镜像的版本信息对应的目录可以预先建立在共享存储中,第二设备22可以在该共享存储中建立与故障日期相关的收集根目录。
S702、判断精简镜像对应的容器中是否存在core文件,若是,则执行S703;否则执行S704。
例如,当第二设备22中精简镜像对应的容器中运行的应用程序挂掉时,该精简镜像对应的容器中会生成core文件。
S703、将core文件存储到收集根目录下的core子目录中。
若精简镜像对应的容器中包括core文件,则第二设备22将该core文件存储到收集根目录下的core子目录中。
S704、将精简镜像对应的容器中的日志存储到收集根目录下的log(日志)子目录中。
若精简镜像对应的容器中不包括core文件,或第二设备22将该core文件存储到收集根目录下的core子目录中之后,第二设备22还可以将精简镜像对应的容器中的日志存储到收集根目录下的log子目录中。
S705、判断是否存在预设指令,若是,则执行S706;否则,结束。
S706、运行该预设指令,并将执行结果存储在收集根目录下的文件中,该文件的文件名与该预设指令相关。
例如,该预设指令包括“ifconfig”指令和“docker ps-a”指令,则当第二设备22执行“ifconfig”指令和“docker ps-a”指令后,将执行“ifconfig”指令后的执行结果存储在收集根目录下的“ifconfig.cmd”文件中,将执行“dockerps-a”指令后的执行结果存储在收集根目录下的“docker.ps”文件中。其中,“ifconfig”和“docker ps-a”是指令的命名,“ifconfig.cmd”和“docker.ps”是文件的命名。
如图8所示,core子目录、log子目录、“ifconfig.cmd”文件和“docker.ps”文件在同一层级上。
此外,当运维人员点击如图6所示的第二图标62时,第四设备26还可以向第二设备22发送获取请求,该获取请求用于获取精简镜像的版本信息。当该第二设备22接收到该获取请求后,将精简镜像的版本信息发送给第四设备26,第四设备26根据该精简镜像的版本信息,可确定出与该版本信息对应的目录。进一步,第四设备26可根据该精简镜像的版本信息以及该版本信息对应的目录下存储有调试信息的目录生成脚本。也就是说,该脚本中可包括该精简镜像的版本信息和存储有调试信息的目录。进一步,运维人员可通过第四设备26将该脚本发送给第一设备21。
在一种可行的实施方式中,该第一设备获取第一镜像和调试信息,包括:该第一设备获取该第二镜像的版本信息和该调试信息所处的位置信息;该第一设备根据该版本信息获取该第一镜像;该第一设备根据该位置信息获取该调试信息。
可选的,该第一设备获取该第二镜像的版本信息和该调试信息所处的位置信息,包括:该第一设备从第四设备接收该第二镜像的版本信息和该调试信息所处的位置信息。
例如,第一设备21从第四设备26接收如上所述的脚本,该脚本中可包括该精简镜像的版本信息和存储有调试信息的目录。在其他一些实施例中,该脚本中还可以包括镜像仓库的地址信息,从而使得第一设备21可以根据该镜像仓库的地址信息,访问该镜像仓库,并根据该精简镜像的版本信息,从该镜像仓库中获取与该版本信息一致的调试镜像。另外,第一设备21还可以远程访问共享存储,并从该共享存储中存储有调试信息的目录下获取该调试信息,例如,图8所示的core子目录、log子目录、“ifconfig.cmd”文件和“docker.ps”文件下的信息。
本申请实施例通过第四设备上的用户界面显示第二设备的标识信息,可使得运维人员对第二设备上运行的某种服务类型的应用程序进行监控,通过该用户界面可提高运维人员监控应用程序的便捷性。当该应用程序出现故障时,通过运维人员点击第四设备上的第一图标,可触发第二设备将调试信息记录在第三设备即共享存储中,通过运维人员点击第四设备上的第二图标,可触发第二设备向第四设备发送精简镜像的版本信息,第四设备可根据该版本信息生成脚本,并将该脚本发送给第一设备,从而使得第一设备执行该脚本即可还原现场,进一步,提高了还原故障现场的速度。
在一种可行的实现方式中,该第一镜像的接入点为空服务,该第二镜像的接入点为该应用程序对应的业务服务。
如上所述的调试镜像对应的Dockerfile文件可包括该调试镜像的接入点,精简镜像对应的Dockerfile文件可包括该精简镜像的接入点。在一些场景中,精简镜像生成的容器可能无法以正常方式启动,例如,该容器在刚启动之后就停止运行,从而导致定位问题较为困难,针对该问题,本申请实施例提出了一种方法,即在上述实施例的基础上,将精简镜像的接入点设置为该应用程序对应的业务服务,将调试镜像的接入点设置为空服务,也就是说,调试镜像中包括应用程序,但是,调试镜像生成的容器中不启动该应用程序,而是启动一个空服务。进一步,将精简镜像生成的容器中的日志、core文件等信息拷贝到调试镜像生成的容器中,从而有助于研发人员通过该空服务对该精简镜像进行调试并定位故障、解决故障。
图9示出根据本申请一实施例的应用程序现场还原的装置的结构框图。在本申请实施例中,该装置具体可以是如上实施例中的第一设备,或第一设备中的部件。如图9所示,该装置90可以包括:获取模块91和现场还原模块92;其中,获取模块91用于获取第一镜像和调试信息,其中,该第一镜像与第二设备中的第二镜像是同源的镜像,该第一镜像包括调试工具和应用程序,该第二镜像包括该应用程序,该调试信息是该第二设备运行的该应用程序出现故障时该第二设备记录的信息;现场还原模块92用于根据该第一镜像和该调试信息,还原该应用程序的现场。
可选的,该现场还原模块92包括:应用容器创建单元921和现场还原单元922;其中,该应用容器创建单元921用于根据该第一镜像创建应用容器;该现场还原单元922用于将该调试信息添加到该应用容器中,通过该调试工具还原该应用程序的现场。
可选的,该获取模块在获取第一镜像和调试信息时,具体用于:获取该第二镜像的版本信息和该调试信息所处的位置信息;根据该版本信息获取该第一镜像;根据该位置信息获取该调试信息。
可选的,该调试信息存储在第三设备中;该调试信息所处的位置信息,包括:该调试信息在该第三设备中的存储目录。
可选的,该获取模块91包括:接收单元911;该接收单元911用于从第四设备接收该第二镜像的版本信息和该调试信息所处的位置信息。
可选的,该第一镜像的接入点为空服务,该第二镜像的接入点为该应用程序对应的业务服务。
可选的,第四设备的用户界面包括第二设备的标识信息、第一图标、第二图标中的至少一个;其中,第一图标用于触发第二设备将调试信息存储在第三设备中,第二图标用于触发第二设备向第四设备发送第二镜像的版本信息。
本申请实施例各装置中的各模块的功能可以参见上述方法中的对应描述,在此不再赘述。
图10示出根据本申请一实施例的应用程序现场还原设备的结构框图。在本申请实施例中,该应用程序现场还原设备具体可以是如上实施例中的第一设备。如图10所示,该应用程序现场还原设备包括:存储器1010和处理器1020,存储器1010内存储有可在处理器1020上运行的计算机程序。处理器1020执行该计算机程序时实现上述实施例中的应用程序现场还原的方法。存储器1010和处理器1020的数量可以为一个或多个。
该应用程序现场还原设备还包括:
通信接口1030,用于与外界设备进行通信,进行数据交互传输。
如果存储器1010、处理器1020和通信接口1030独立实现,则存储器1010、处理器1020和通信接口1030可以通过总线相互连接并完成相互间的通信。该总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(PeripheralComponent Interconnect,PCI)总线或扩展工业标准体系结构(Extended IndustryStandard Architecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器1010、处理器1020及通信接口1030集成在一块芯片上,则存储器1010、处理器1020及通信接口1030可以通过内部接口完成相互间的通信。
本申请实施例提供了一种计算机可读存储介质,其存储有计算机程序,该程序被处理器执行时实现本申请实施例中提供的方法。
本申请实施例还提供了一种芯片,该芯片包括,包括处理器,用于从存储器中调用并运行存储器中存储的指令,使得安装有芯片的通信设备执行本申请实施例提供的方法。
本申请实施例还提供了一种芯片,包括:输入接口、输出接口、处理器和存储器,输入接口、输出接口、处理器以及存储器之间通过内部连接通路相连,处理器用于执行存储器中的代码,当代码被执行时,处理器用于执行申请实施例提供的方法。
应理解的是,上述处理器可以是中央处理器(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(fieldprogrammablegate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。值得说明的是,处理器可以是支持进阶精简指令集机器(advancedRISC machines,ARM)架构的处理器。
进一步地,可选的,上述存储器可以包括只读存储器和随机存取存储器,还可以包括非易失性随机存取存储器。该存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以包括只读存储器(read-onlymemory,ROM)、可编程只读存储器(programmableROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以包括随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用。例如,静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic random access memory,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(enhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本申请的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分。并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
应理解的是,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。上述实施例方法的全部或部分步骤是可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。上述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。该存储介质可以是只读存储器,磁盘或光盘等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (13)

1.一种应用程序现场还原的方法,其特征在于,所述方法包括:
第一设备获取第一镜像和调试信息,其中,所述第一镜像与第二设备中的第二镜像是同源的镜像,所述第一镜像包括调试工具和应用程序,所述第二镜像包括所述应用程序,所述调试信息是所述第二设备运行的所述应用程序出现故障时所述第二设备记录的信息;
所述第一设备根据所述第一镜像和所述调试信息,还原所述应用程序的现场;
其中,所述第一设备获取第一镜像和调试信息,包括:
所述第一设备获取所述第二镜像的版本信息和所述调试信息所处的位置信息;
所述第一设备根据所述版本信息从镜像仓库中获取所述第一镜像;
所述第一设备根据所述位置信息获取所述调试信息。
2.根据权利要求1所述的方法,其特征在于,所述调试信息存储在第三设备中;
所述调试信息所处的位置信息,包括:所述调试信息在所述第三设备中的存储目录。
3.根据权利要求1所述的方法,其特征在于,所述第一设备获取所述第二镜像的版本信息和所述调试信息所处的位置信息,包括:
所述第一设备从第四设备接收所述第二镜像的版本信息和所述调试信息所处的位置信息。
4.根据权利要求3所述的方法,其特征在于,所述第四设备的用户界面包括所述第二设备的标识信息、第一图标、第二图标中的至少一个;
其中,所述第一图标用于触发所述第二设备将所述调试信息存储在第三设备中,所述第二图标用于触发所述第二设备向所述第四设备发送所述第二镜像的版本信息。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述第一设备根据所述第一镜像和所述调试信息,还原所述应用程序的现场,包括:
所述第一设备根据所述第一镜像创建应用容器;
所述第一设备将所述调试信息添加到所述应用容器中,通过所述调试工具还原所述应用程序的现场。
6.根据权利要求1至4中任一项所述的方法,其特征在于,所述第一镜像的接入点为空服务,所述第二镜像的接入点为所述应用程序对应的业务服务。
7.一种应用程序现场还原的装置,其特征在于,所述装置包括:
获取模块,用于获取第一镜像和调试信息,其中,所述第一镜像与第二设备中的第二镜像是同源的镜像,所述第一镜像包括调试工具和应用程序,所述第二镜像包括所述应用程序,所述调试信息是所述第二设备运行的所述应用程序出现故障时所述第二设备记录的信息;
现场还原模块,用于根据所述第一镜像和所述调试信息,还原所述应用程序的现场;
其中,获取第一镜像和调试信息,包括:
获取所述第二镜像的版本信息和所述调试信息所处的位置信息;
根据所述版本信息从镜像仓库中获取所述第一镜像;
根据所述位置信息获取所述调试信息。
8.根据权利要求7所述的应用程序现场还原的装置,其特征在于,所述调试信息存储在第三设备中;
所述调试信息所处的位置信息,包括:所述调试信息在所述第三设备中的存储目录。
9.根据权利要求8所述的应用程序现场还原的装置,其特征在于,所述获取模块包括:接收单元;
所述接收单元用于从第四设备接收所述第二镜像的版本信息和所述调试信息所处的位置信息。
10.根据权利要求7至9中任一项所述的应用程序现场还原的装置,其特征在于,所述现场还原模块包括:应用容器创建单元和现场还原单元;其中,
所述应用容器创建单元用于根据所述第一镜像创建应用容器;
所述现场还原单元用于将所述调试信息添加到所述应用容器中,通过所述调试工具还原所述应用程序的现场。
11.根据权利要求7至9中任一项所述的应用程序现场还原的装置,其特征在于,所述第一镜像的接入点为空服务,所述第二镜像的接入点为所述应用程序对应的业务服务。
12.一种应用程序现场还原设备,其特征在于,包括:处理器和存储器,所述存储器中存储指令,所述指令由处理器加载并执行,以实现如权利要求1至6任一项所述的方法。
13.一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-6中任一项所述的方法。
CN202010181174.8A 2020-03-16 2020-03-16 应用程序现场还原的方法、装置、设备及存储介质 Active CN111382079B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010181174.8A CN111382079B (zh) 2020-03-16 2020-03-16 应用程序现场还原的方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010181174.8A CN111382079B (zh) 2020-03-16 2020-03-16 应用程序现场还原的方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN111382079A CN111382079A (zh) 2020-07-07
CN111382079B true CN111382079B (zh) 2021-08-24

Family

ID=71221561

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010181174.8A Active CN111382079B (zh) 2020-03-16 2020-03-16 应用程序现场还原的方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN111382079B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112269738B (zh) * 2020-10-26 2023-04-07 杭州光通天下网络科技有限公司 Ctf靶场调试方法、装置、电子设备及介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7526422B1 (en) * 2001-11-13 2009-04-28 Cypress Semiconductor Corporation System and a method for checking lock-step consistency between an in circuit emulation and a microcontroller
CN102779094A (zh) * 2012-08-21 2012-11-14 深圳中兴网信科技有限公司 终端和软件异常测试方法
CN102799522A (zh) * 2012-06-28 2012-11-28 浪潮(北京)电子信息产业有限公司 一种软件版本追溯测试的管理方法和系统
CN108268364A (zh) * 2018-01-19 2018-07-10 百度在线网络技术(北京)有限公司 异常事件回放方法、装置及设备
CN109739680A (zh) * 2019-02-02 2019-05-10 广州视源电子科技股份有限公司 应用系统的故障查找方法、装置、设备及介质
CN109800475A (zh) * 2018-12-27 2019-05-24 北京百度网讯科技有限公司 自动驾驶数据处理方法、装置、设备和计算机存储介质
CN110674043A (zh) * 2019-09-24 2020-01-10 聚好看科技股份有限公司 应用调试的处理方法及服务器
CN110704324A (zh) * 2019-09-30 2020-01-17 聚好看科技股份有限公司 应用调试方法、装置及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9292330B2 (en) * 2012-11-29 2016-03-22 International Business Machines Corporation Replacing virtual machine disks
CN108427634A (zh) * 2017-11-21 2018-08-21 平安科技(深圳)有限公司 电子装置、测试的方法及计算机可读存储介质
CN109408361A (zh) * 2018-08-15 2019-03-01 中国平安人寿保险股份有限公司 Monkey测试复原方法、装置、电子设备及计算机可读存储介质
CN110659202A (zh) * 2019-08-12 2020-01-07 网宿科技股份有限公司 客户端自动化测试方法及装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7526422B1 (en) * 2001-11-13 2009-04-28 Cypress Semiconductor Corporation System and a method for checking lock-step consistency between an in circuit emulation and a microcontroller
CN102799522A (zh) * 2012-06-28 2012-11-28 浪潮(北京)电子信息产业有限公司 一种软件版本追溯测试的管理方法和系统
CN102779094A (zh) * 2012-08-21 2012-11-14 深圳中兴网信科技有限公司 终端和软件异常测试方法
CN108268364A (zh) * 2018-01-19 2018-07-10 百度在线网络技术(北京)有限公司 异常事件回放方法、装置及设备
CN109800475A (zh) * 2018-12-27 2019-05-24 北京百度网讯科技有限公司 自动驾驶数据处理方法、装置、设备和计算机存储介质
CN109739680A (zh) * 2019-02-02 2019-05-10 广州视源电子科技股份有限公司 应用系统的故障查找方法、装置、设备及介质
CN110674043A (zh) * 2019-09-24 2020-01-10 聚好看科技股份有限公司 应用调试的处理方法及服务器
CN110704324A (zh) * 2019-09-30 2020-01-17 聚好看科技股份有限公司 应用调试方法、装置及存储介质

Also Published As

Publication number Publication date
CN111382079A (zh) 2020-07-07

Similar Documents

Publication Publication Date Title
US10628290B2 (en) Generating an inner cloud environment within an outer cloud environment for testing a microservice application
CN109597677B (zh) 用于处理信息的方法和装置
US8140905B2 (en) Incremental problem determination and resolution in cloud environments
CN106844136B (zh) 一种程序崩溃信息的收集方法及系统
US6550021B1 (en) Internet-implemented method supporting component repair services
CN110569035B (zh) 软件开发项目的代码编译方法、装置、设备和存储介质
CN110187914B (zh) 应用开发方法、系统及装置
CN106951345B (zh) 一种虚拟机磁盘数据的一致性测试方法及装置
WO2019019643A1 (zh) 应用程序热更新方法、装置、终端和存储介质
US8539506B2 (en) Dynamic injection of code into running process
CN107783795A (zh) 应用程序启动方法、装置、计算机设备和存储介质
CN111240892B (zh) 数据备份方法及装置
CN112860645A (zh) 一种离线压缩文件的处理方法、装置、计算机设备及介质
CN111382079B (zh) 应用程序现场还原的方法、装置、设备及存储介质
CN113157487A (zh) 数据恢复方法及其设备
CN112286543B (zh) 一种应用服务部署方法及装置
CN113867768A (zh) 操作系统处理方法、装置、电子设备及存储介质
CN108388440A (zh) 一种web应用系统自动更新的方法
CN111176653B (zh) 程序编译合包方法、装置、电子设备及存储介质
CN114443065A (zh) 平台部署方法、装置、电子设备和存储介质
CN114816445A (zh) 系统平台架构、函数发布方法及装置、平台及存储介质
CN113760701A (zh) 测试处理方法及装置
CN113760442A (zh) 一种应用的运行和访问方法、装置及设备
CN112115056B (zh) 一种项目部署方法和装置、服务器、存储介质
CN114911710A (zh) 代码测试方法和电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant