CN105389243B - 一种容器监控方法和装置 - Google Patents

一种容器监控方法和装置 Download PDF

Info

Publication number
CN105389243B
CN105389243B CN201510704797.8A CN201510704797A CN105389243B CN 105389243 B CN105389243 B CN 105389243B CN 201510704797 A CN201510704797 A CN 201510704797A CN 105389243 B CN105389243 B CN 105389243B
Authority
CN
China
Prior art keywords
monitored object
multiple monitored
monitoring
transmission monitor
monitor
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
CN201510704797.8A
Other languages
English (en)
Other versions
CN105389243A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201510704797.8A priority Critical patent/CN105389243B/zh
Publication of CN105389243A publication Critical patent/CN105389243A/zh
Priority to EP16858896.0A priority patent/EP3340057B1/en
Priority to PCT/CN2016/101689 priority patent/WO2017071460A1/zh
Priority to US15/926,453 priority patent/US10635558B2/en
Application granted granted Critical
Publication of CN105389243B publication Critical patent/CN105389243B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3086Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves the use of self describing data formats, i.e. metadata, markup languages, human readable formats
    • 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/3495Performance evaluation by tracing or monitoring for systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/20Arrangements for monitoring or testing data switching networks the monitoring system or the monitored elements being virtualised, abstracted or software-defined entities, e.g. SDN or NFV
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Mathematical Physics (AREA)
  • General Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Library & Information Science (AREA)
  • Debugging And Monitoring (AREA)
  • Measuring And Recording Apparatus For Diagnosis (AREA)
  • Telephonic Communication Services (AREA)

Abstract

本发明实施例公开了一种容器监控方法和装置,用于对物理机上运行的多个被监控对象进行监控,该多个被监控对象的类型包括容器、容器内的进程和容器内的线程中的至少一种,该物理机包括主监控器,该主监控器接收该多个被监控对象各自上报的监控信息,该多个被监控对象中相同类型的被监控对象的监控信息是采用相同的通道上报的,该主监控器根据该监控信息和该标识确定该多个被监控对象各自的服务状态,能减少现有技术的监控过程中对资源的消耗,进一步解决了由于资源消耗大,从而无法满足对容器的多维度监控的需求的问题。

Description

一种容器监控方法和装置
技术领域
本发明涉及物理机领域,更具体的涉及一种容器监控方法和装置。
背景技术
容器(Container)技术是当前云计算的热点技术,它是一种轻量级虚拟化技术,通过进程组管理达到资源隔离的目的。由于容器具有易部署,启动速度快等优点,目前互联网行业已经大量部署容器,例如***的GAE(*** app engine)等。云计算厂商***,redhat等都在基于容器技术提供服务。近年来,容器密集化部署的趋势越来越明显,一台物理机上部署的容器数量已可以达到成百上千,并且随着技术的发展还会持续增多,而多数容器中又分布着多个进程或线程。
为了保证容器在运行时的可靠性和可服务性(指可以确保为需要的应用提供合格的服务),需要对容器及其内部进程和线程的运行状态进行监控,准确获悉容器运行中出现的问题,并采用合理的策略解决。该监控具体可以包括对容器的监控,对容器内进程的监控和对容器内线程的监控。
现有的容器监控方法中,由于容器的密集部署,而容器内又分布着诸多进程和/或线程,因此如果要全面监控容器及容器内进程和线程的运行情况,需要耗费大量的资源,严重影响物理机的性能,而在物理机的资源受限的情况下,甚至难以满足对容器的多维度监控的需求。
发明内容
有鉴于此,本发明实施例提供了一种用于容器的监控方法和装置,能够解决容器监控中资源开销过大的问题,进而能够满足对物理机上部署的容器进行多维度的监控的需求。
第一方面,本发明实施例提供了一种容器监控方法,用于对物理机上运行的多个被监控对象进行监控,所述多个被监控对象的类型包括容器、容器内的进程和容器内的线程中的至少一种,所述物理机包括主监控器,所述监控方法包括:所述主监控器获得所述多个被监控对象各自上报的监控信息,其中,所述多个被监控对象中相同类型的被监控对象的监控信息是采用相同的通道上报的,所述多个被监控对象中的每一个被监控对象都具有唯一的标识,所述每一个被监控对象的监控信息包括心跳信息和服务质量报告中的至少一种,所述心跳信息表示上报所述心跳信息的被监控对象在心跳周期内的运行状态,所述服务质量报告用于记载上报所述服务质量报告的被监控对象承载的应用的服务质量QoS;所述主监控器根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态。
这种容器监控的方法能够解决容器监控中资源开销过大的问题,进而能够满足对物理机上部署的容器进行多维度的监控的需求。
在上报的监控信息包括心跳信息的情况下,被监控对象的服务状况包括该被监控对象的运行状态;在上报的监控信息包括服务质量报告的情况下,被监控对象的服务状况包括被监控对象所承载的应用的服务质量。当然,在上报的监控信息包括心跳信息和服务质量报告的情况下,被监控对象的服务状况包括该被监控对象的运行状态和被监控对象所承载的应用的服务质量。
在第一方面的第一种可能的实现方式中,所述主监控器根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态,包括:所述主监控器通过所述多个被监控对象的监控信息所在的数据区与所述多个被监控对象的标识间的对应关系,确定上报所述监控信息的所述多个被监控对象各自的服务状态,所述数据区是上报所述监控信息的所述多个被监控对象的数据区,所述数据区包括堆和栈中的至少一种。
需理解的是,在该操作***运行过程中,该标识也注册在该操作***的内存中。具体的,该标识注册在该操作***内核态的内存中。
需要说明的是,现有技术中由于容器的隔离性,运行在用户态的该多个被监控对象的视角有局限性,无法获知自己在操作***中的唯一标识,也就无法通过在监控信息中加上标识的方式来使主监控器区分出监控信息的上报者的身份,因此现有技术方案是通过建立的与每个被监控对象一一对应的通道来标识被监控对象的。而本发明实施例的方案中,主监控器根据该上报的监控信息所在的数据区和存储在内存中的该多个被监控对象的属性信息(具体是该标识)的对应关系,确定上报的监控信息的上报者,从而能够多个被监控对象共用一个通道上报监控信息,达到节省资源的效果。
结合第一方面和第一方面第一种可能的实现方式中的任一种,在第一方面的第二种可能的实现方式中,所述通道为文件或者进程间的通信连接。
结合第一方面到第一方面第二种实现方式,在第三种可能的实现方式中,所述通道为Proc文件***,所述主监控器接收所述多个被监控对象各自上报的监控信息包括:所述主监控器接收所述多个被监控对象通过Proc文件***中的一个或多个文件上报的各自的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享所述Proc文件***中的同一个文件,以用于所述监控信息的上报。
结合第一方面到第一方面第二种实现方式中的任一种,在第四种可能的实现方式中,所述通道为设备文件,所述主监控器接收所述多个被监控对象各自上报的监控信息包括:所述主监控器接收所述多个被监控对象通过一个或多个设备文件上报的各自的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享同一个设备文件,以用于所述监控信息的上报。
结合第一方面到第一方面第二种实现方式中的任一种,在第五种可能的实现方式中,所述通道为Socket通信连接,其中,所述主监控器接收所述多个被监控对象各自上报的监控信息包括:所述主监控器接收所述多个被监控对象通过一个或多个Socket通信连接上报的各自的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享同一个Socket通信连接的地址,以用于所述监控信息的上报。
需要说明的是,具体的,该Socket通信连接可以是Unix Domain Socket通信连接。
结合第一方面到第一方面第二种实现方式的任一种实现方式,在第六种可能的实现方式中,所述通道为进程间通信通道IPC,所述多个被监控对象包括线程和进程中的至少一种,每个所述多个被监控对象所在的容器包括一监控线程,每个所述多个被监控对象所在的容器包括一监控线程,其中,所述主监控器接收所述多个被监控对象各自上报的监控信息包括:所述主监控器接收所述多个被监控对象通过各自对应的监控线程上报的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享同一个IPC与所述主监控器通信,以用于所述监控信息的上报。
结合第一方面到第一方面第六种实现方式中的任意一种,在第七种可能的实现方式中,在第一种可能的实现方式中,所述监控信息为所述心跳信息,所述方法还包括:所述主监控器确定所述多个被监控对象的配置信息,所述多个被监控对象的配置信息包括所述多个被监控对象的身份信息、心跳信息上报方式和所述心跳周期,所述多个被监控对象的身份信息包括所述多个被监控对象的标识,所述心跳信息上报方式指示所述通道的类型,所述心跳周期表示被监控对象在运行正常情况下上报心跳信息的时间间隔;所述主监控器向所述多个被监控对象推送各自的心跳信息上报方式,所述多个被监控对象是由所述身份信息中的标识确定的;相应的,所述主监控器获得所述多个被监控对象各自上报的监控信息,包括:所述主监控器获得所述多个被监控对象各自上报的心跳信息,所述心跳信息是根据所述多个被监控对象各自对应的心跳信息上报方式上报的;相应的,所述主监控器根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态,包括:所述主监控器根据所述多个被监控对象的所述心跳周期和所述心跳信息,确定所述多个被监控对象各自的运行状态。
该实现方式中,该多个被监控对象的确定以及需要上报的信息和方式都是由主监控器根据配置信息确定的,监控更有针对性,并且是可以根据用户需要定制和修改的。
结合第一方面第七种实现方式,在第八种可能的实现方式中,所述物理机还包括管理器,所述方法还包括:所述主监控器根据所述运行异常情况下的处理策略确定所述多个被监控对象中运行异常的被监控对象和关联被监控对象的处理动作,所述关联被监控对象与所述运行异常的被监控对象中的至少一个具有从属关系或者配合关系;所述管理器根据所述处理动作对所述多个被监控对象中运行异常的被监控对象和关联被监控对象进行处理。
第一方面的第八种实现方式实现了对运行异常的被监控对象和关联被监控对象的处理,由于容器、进程和线程之间的运行是有关联的,这样将关联关联被监控对象一并处理能够更彻底地解决运行异常给操作***带来的问题。
结合第一方面到第一方面第六种实现方式中的任意一种,在第九种可能的实现方式中,所述监控信息为所述服务质量报告,所述方法还包括:所述主监控器确定所述多个被监控对象的配置信息,所述多个被监控对象的配置信息包括所述多个被监控对象的身份信息、服务质量报告上报方式和服务质量要求,所述多个被监控对象的身份信息包括所述多个被监控对象的标识,所述服务质量报告上报方式指示所述通道的类型,所述服务质量要求用于确定所述多个被监控对象承载的应用的QoS是否合格;所述主监控器向所述多个被监控对象推送各自的服务质量报告上报方式,所述多个被监控对象是由所述身份信息中的标识确定的;相应的,所述主监控器获得所述多个被监控对象各自上报的监控信息,包括:所述主监控器获得所述多个被监控对象各自上报的服务质量报告,所述服务质量报告是根据所述多个被监控对象各自对应的服务质量报告上报方式上报的;相应的,所述根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态包括:所述主监控器根据所述多个被监控对象的服务质量要求和的所述服务质量报告,确定所述多个被监控对象各自承载的应用的服务质量是否合格。
该实现方式中,该多个被监控对象的确定以及需要上报的信息和方式都是由主监控器根据配置信息确定的,监控更有针对性,并且是可以根据用户需要定制和修改的。
需要理解的是,该监控信息还可以包括该心跳信息和服务质量报告,这种情况下的实现方式参照第一方面第六种实现方式到第一方面第九种实现方式。
结合第一方面第九种实现方式,在第十种可能的实现方式中,所述物理机还包括管理器,所述方法还包括:所述主监控器根据所述服务质量不合格的情况下的处理策略确定所述多个被监控对象中服务质量不合格的被监控对象和关联被监控对象的处理动作,所述关联被监控对象与所述服务质量不合格的被监控对象中的至少一个具有从属关系或者配合关系;
所述管理器根据所述处理动作对所述多个被监控对象中服务质量不合格的被监控对象和关联被监控对象进行处理。
第一方面的第十种实现方式实现了对服务质量不合格的被监控对象和关联被监控对象的处理,由于容器、进程和线程之间在承载应用方面往往存在相关联的关系,这样将关联关联被监控对象一并处理能够更彻底地解决运行异常给操作***带来的问题。
结合第一方面到第一方面第十种实现方式中的任一种,在第十一种可能的实现方式中,所述物理机还包括发送模块,所述方法还包括:所述发送模块向管理服务器发送处理指令,所述处理指令包括处理动作和待处理的被监控对象的标识,所述处理指令被所述管理服务器用于将所述待处理的被监控对象对应的应用部署到其他至少一台物理机上,所述处理动作是所述主监控器根据所述多个被监控对象的服务状态和服务状态异常的情况下的处理策略确定的。
该第十一种实现方式可以实现服务状态异常的情况下,通过管理服务器对被监控对象上的应用进行跨物理机的重新部署,更加灵活和全局化。
结合第一方面到第一方面第十一种实现方式中的任意一种可能的实现方式,在第十二种可能的实现方式中,所述物理机还包括备监控器,所述方法还包括:在所述主监控器未在第一配置时长内收到所述备监控器的心跳信息的情况下,所述主监控器触发所述备监控器退出运行状态以便所述被监控器重新被启动,所述备监控器的心跳信息表示所述备监控器在一时间周期内运行正常;在所述备监控器未在第二配置时长内收到所述主监控器的心跳信息的情况下,所述备监控器触发所述主监控器退出运行状态,所述备监控器接管所述被监控对象使所述备监控器为当前的主监控器,所述主监控器所在的物理机重新启动所述主监控器使所述主监控器为当前的备监控器,所述主监控器的心跳信息表示所述主监控器在一时间周期内运行正常。
该第十二种实现方式实现了对主监控器的监控和主备监控器的倒换,保证了该方法运行过程中***的稳定性。
第二方面,本发明实施例提供了一种物理机,所述物理机包括接收模块和主监控模块,所述物理机上运行多个被监控对象,所述接收模块用于提供所述多个被监控对象上报监控信息的通道,所述通道被所述多个被监控对象用于向所述主监控模块上报所述监控信息,所述主监控模块用于通过所述接收模块接收所述监控信息,其中,所述多个被监控对象中相同类型的被监控对象的监控信息是采用相同的通道上报的,所述多个被监控对象的类型包括容器、容器内的进程和容器内的线程中的至少一种,所述多个被监控对象中的每一个被监控对象都具有唯一的标识,所述每一个被监控对象的监控信息包括心跳信息和服务质量报告中的至少一种,所述心跳信息表示上报所述心跳信息的被监控对象在心跳周期内的运行状态,所述服务质量报告用于记载上报所述服务质量报告的被监控对象承载的应用的服务质量QoS;所述主监控模块还用于根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态。
本发明实施例第二方面提供的这种物理机,是该第一方面提供的方法所对应的装置,能够解决容器监控中资源开销过大的问题,进而能够满足对物理机上部署的容器进行多维度的监控的需求。
关于该第二方面中物理机,可以进一步根据第一方面记载的容器监控方法的各种实现方式进行具体实施方式的扩展,故该第二方面中物理机的实现方式请参阅第一方面记载的第一到第十二种实现方式的叙述。第三方面,本发明实施例提供了另一种物理机,包括硬件层,以及运行于所述硬件层之上的操作***OS,其特征在于,所述OS上运行有多个被监控对象和主监控器,所述多个被监控对象的类型包括容器、容器内的进程和容器内的线程中的至少一种,所述主监控器用于获得所述多个被监控对象各自上报的监控信息,其中,所述多个被监控对象中相同类型的被监控对象的监控信息是采用相同的通道上报的,所述多个被监控对象中的每一个被监控对象都具有唯一的标识,所述每一个被监控对象的监控信息包括心跳信息和服务质量报告中的至少一种,所述心跳信息表示上报所述心跳信息的被监控对象在心跳周期内的运行状态,所述服务质量报告用于记载上报所述服务质量报告的被监控对象承载的应用的服务质量QoS;所述主监控器还用于根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态。
本发明实施例第三方面提供的这种物理机,是该第一方面提供的方法所对应的另一种装置,能够解决容器监控中资源开销过大的问题,进而能够满足对物理机上部署的容器进行多维度的监控的需求。
关于该第三方面中物理机的具体实施方式,可以进一步根据第一方面记载的容器监控方法的各种实现方式进行具体实施方式的扩展,故该第三方面中物理机的实现方式请参阅第一方面记载的第一到第十二种实现方式的叙述第四方面,本发明实施例提供另一种容器监控的方法,该容器监控方法用于对物理机上运行的多个被监控对象进行监控,所述多个被监控对象的类型包括容器、容器内的进程和容器内的线程中的至少一种,所述物理机包括主监控器,该监控方法包括:所述主监控器通过检测所述多个被监控对象的指令执行信息,确定所述多个被监控对象的服务状态,所述指令具有指定的地址,其中,所述服务状态包括运行状态和服务质量中的至少一种。
具体的,该指令可以是一些指定的函数。该主监控器根据指定函数的调用情况,确定所述多个被监控对象的服务状态。该监控方法中被监控对象不需要自己上报状态,这样既可以减少编程麻烦,同时也能支持使用其他第三方应用的监控方法,能够解决容器监控中资源开销过大的问题,进而能够满足对物理机上部署的容器进行多维度的监控的需求。
在第四方面的第一种实现方式中,所述多个被监控对象中的每一个被监控对象具有唯一的标识,在所述主监控器通过检测所述多个被监控对象的指令执行信息,确定所述多个被监控对象的服务状态的方面,所述主监控器通过存储所述指令执行信息的数据区与所述多个被监控对象的标识间的对应关系,确定所述多个被监控对象各自的服务状态,所述数据区是上报所述监控信息的所述多个被监控对象的数据区,所述数据区包括堆和栈中的至少一种。
结合第四方面到第四方面第一种实现方式中的任意一种,在第二种实现方式中,该方法还包括:所述主监控器确定所述多个被监控对象的身份信息和运行异常情况下的处理策略,所述多个被监控对象的身份信息包括所述多个被监控对象的从属关系和配合关系中的至少一种和所述多个被监控对象的标识;所述主监控器根据所述多个被监控对象的身份信息、所述运行状态和所述运行异常情况下的处理策略,确定对运行异常的被监控对象和关联被监控对象的处理动作,所述关联被监控对象与所述运行异常的被监控对象中的至少一个具有从属关系或者配合关系;所述管理器根据所述处理动作对所述多个被监控对象中运行异常的被监控对象和关联被监控对象进行处理。
结合第四方面到第四方面第二种实现方式中的任意一种,在第三种实现方式中,该方法还包括:所述主监控器确定所述多个被监控对象的身份信息和服务质量不合格的情况下的处理策略,所述多个被监控对象的身份信息包括所述多个被监控对象的从属关系和配合关系中的至少一种和所述多个被监控对象的标识;所述主监控器根据所述多个被监控对象的身份信息、所述服务质量和所述服务质量不合格的情况下的处理策略,确定对服务质量不合格的被监控对象和关联被监控对象的处理动作,所述关联被监控对象与所述服务不合格的被监控对象中的至少一个具有从属关系或者配合关系;所述管理器根据所述处理动作对所述多个被监控对象中服务不合格的被监控对象和关联被监控对象进行处理。结合第四方面到第四方面第三种实现方式中的任意一种,在第四种实现方式中,该方法还包括:所述主监控器确定所述多个被监控对象的身份信息和服务质量不合格的情况下的处理策略,所述多个被监控对象的身份信息包括所述多个被监控对象的从属关系和配合关系中的至少一种和所述多个被监控对象的标识;所述主监控器根据所述多个被监控对象的身份信息、所述服务质量和所述服务质量不合格的情况下的处理策略,确定对服务质量不合格的被监控对象和关联被监控对象的处理动作,所述关联被监控对象与所述服务不合格的被监控对象中的至少一个具有从属关系或者配合关系;所述管理器根据所述处理动作对所述多个被监控对象中服务不合格的被监控对象和关联被监控对象进行处理。
第三种和第四种实现方式中,该多个被监控对象的确定以及需要上报的信息和方式都是由主监控器根据配置信息确定的,监控更有针对性,并且是可以根据用户需要定制和修改的。另一方面实现了对服务质量不合格的被监控对象和关联被监控对象的处理,由于容器、进程和线程之间在承载应用方面往往存在相关联的关系,这样将关联关联被监控对象一并处理能够更彻底地解决运行异常给操作***带来的问题。
需要理解的是,该监控信息还可以包括该心跳信息和服务质量报告,这种情况下的实现方式参照第四方面第三种实现方式和第四种实现方式。
结合第四方面到第四方面第四种实现方式中的任一种,在第五种可能的实现方式中,所述物理机还包括发送模块,所述方法还包括:所述发送模块向管理服务器发送处理指令,所述处理指令包括处理动作和待处理的被监控对象的标识,所述处理指令被所述管理服务器用于将所述待处理的被监控对象对应的应用部署到其他至少一台物理机上,所述处理动作是所述主监控器根据所述多个被监控对象的服务状态和服务状态异常的情况下的处理策略确定的。
该第五种实现方式可以实现服务状态异常的情况下,通过管理服务器对被监控对象上的应用进行跨物理机的重新部署,更加灵活和全局化。
结合第四方面到第四方面第五种实现方式中的任一种,在第六种可能的实现方式中,所述物理机还包括备监控器,所述方法还包括:在所述主监控器未在第一配置时长内收到所述备监控器的心跳信息的情况下,所述主监控器触发所述备监控器退出运行状态以便所述被监控器重新被启动,所述备监控器的心跳信息表示所述备监控器在一时间周期内运行正常;在所述备监控器未在第二配置时长内收到所述主监控器的心跳信息的情况下,所述备监控器触发所述主监控器退出运行状态,所述备监控器接管所述被监控对象使所述备监控器为当前的主监控器,所述主监控器所在的物理机重新启动所述主监控器使所述主监控器为当前的备监控器,所述主监控器的心跳信息表示所述主监控器在一时间周期内运行正常。
该第六种实现方式实现了对主监控器的监控和主备监控器的倒换,保证了该方法运行过程中***的稳定性。
第五方面,本发明实施例提供了一种物理机,所述物理机包括主监控模块,所述物理机上运行多个被监控对象,所述主监控模块用于通过检测所述多个被监控对象的指令执行信息,确定所述多个被监控对象的服务状态,所述指令具有指定的地址,其中,所述服务状态包括运行状态和服务质量中的至少一种。
本发明实施例第五方面提供的这种物理机,是该第四方面提供的方法所对应的装置,能够解决容器监控中资源开销过大的问题,进而能够满足对物理机上部署的容器进行多维度的监控的需求。关于该第五方面中物理机的具体实施方式,可以进一步根据第四方面记载的容器监控方法的各种实现方式进行具体实施方式的扩展,故该第五方面中物理机的实现方式请参阅第四方面记载的第一到第六种实现方式的叙述。
第六方面,本发明实施例提供了另一种物理机,包括硬件层,以及运行于所述硬件层之上的操作***OS,其特征在于,所述OS上运行有多个被监控对象和主监控器,所述多个被监控对象的类型包括容器、容器内的进程和容器内的线程中的至少一种,所述主监控器用于通过检测所述多个被监控对象的指令执行信息,确定所述多个被监控对象的服务状态,所述指令具有指定的地址,其中,所述服务状态包括运行状态和服务质量中的至少一种。
本发明实施例第六方面提供的这种物理机,是该第四方面提供的方法所对应的另一种装置,能够解决容器监控中资源开销过大的问题,进而能够满足对物理机上部署的容器进行多维度的监控的需求。关于该第六方面中物理机的具体实施方式,可以进一步根据第四方面记载的容器监控方法的各种实现方式进行具体实施方式的扩展,故该第六方面中物理机的实现方式请参阅第四方面记载的第一到第六种实现方式的叙述。与现有的技术相比,以上第四到第六方面的实施例具有如下有益效果:
本发明实施例中,提供的一种容器监控方法和装置,该监控方法用于物理机,该物理机上运行着多个被监控对象,这些被监控对象的种类包括容器、容器内的进程和容器内的线程中的至少一种,其中该多个被监控对象中的每一个被监控对象具有唯一的标识,大大减少了现有技术的监控过程中对资源(如线程和socket端口的数量)的消耗,也解决了出于对线程和端口资源的考虑现有技术中只能对容器进行粗粒度的监控,从而无法满足对容器监控需求的问题,使得对轻量级虚拟化***可以从容器、进程、线程甚至管理器和主监控器的多维度的监控,并使这种多维度监控同样适用在现在越来越多的密集容器分布的场景中。
与现有的技术相比,以上第一到第三方面的实施例具有如下有益效果:
在本发明实施例中,提供的一种容器监控方法和装置,该监控方法用于物理机,该物理机上运行着多个被监控对象,这些被监控对象的种类包括容器、容器内的进程和容器内的线程中的至少一种,其中该多个被监控对象中的每一个被监控对象具有唯一的标识,通过该多个被监控对象上报的监控信息确定该多个被监控对象的服务状态,在这个过程中,相同种类的被监控对象采用相同的通道上报监控信息,减少了现有技术的监控过程中对资源的消耗,进一步解决了由于资源消耗大,现有技术中只对容器进行粗粒度的监控,从而无法满足对容器的多维度监控的需求的问题,使得可以从容器、容器内进程和容器内线程的多个维度对容器进行监控,并使这种多维度监控同样适用在容器密集部署的场景中。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a为本发明实施例的一个***架构示意图;
图1b为本发明实施例的一个逻辑架构示意图;
图2为本发明实施例提供的容器监控方法的一种流程示意图;
图3为本发明实施例提供的容器监控方法的一种信息交互示意图;
图4为本发明实施例提供的另一种容器监控方法的一种信息交互示意图;
图5为本发明实施例提供的一种物理机的结构示意图;
图6为本发明实施例提供的另一种物理机的结构示意图;
图7为本发明实施例提供的又一种物理机设备的结构示意图。
具体实施方式
本发明实施例提供了一种容器监控方法和装置,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
容器(Container)虚拟化是一种操作***级、非常快速和高效的虚拟化技术,其原理是基于操作***内核对不同的运行进程提供了不同的***视图。容器虚拟化可以用于在保证安全和效率的情况下授权访问硬件资源,例如CPU和I/O(Input/Output,输入输出)带宽;一个容器内的进程对其他容器内的行为不可见。容器可以应用在不同种类的操作***中,如Linux操作***、WINDOWS操作***以及一些嵌入式***等,本发明实施例不做限定。容器可以运行在虚拟机(Virtual Machine,VM)上,也可以直接运行在物理机上,本发明实施例不做限定,物理机也称宿主机或寄主机(HOST),是相对于虚拟机的具有硬件环境的实体计算机。在Linux操作***中,容器技术通过cgroup和namespace实现。为了便于说明,本发明实施例以Linux***为例叙述容器监控方法的具体内容。
图1a所示的是本发明实施例提供的容器监控方法所适用的一种典型的***架构示意图,该***架构可以理解为物理机,该物理机可以是单机也可以是网络中的网元。该***架构包括:操作***和硬件层。
操作***可以分为操作***的用户空间(用户态)和操作***内核(内核态)。
本发明各个实施例中的多个被监控对象均运行在用户态,其中,多个被监控对象包括容器、容器内的进程和容器内的线程中的至少一种。例如,图1a中示例地画出了多个容器,该多个容器中可以包括一个或多个进程,该多个进程中可以包括一个或多个线程。需要说明的是,图1a中示意的容器上运行应用(Application,App),本领域技术人员应明白,容器中的应用都是承载在容器的进程和/或线程上的,对用户来说,是一个个应用,而对计算机的处理逻辑来说,应用的运行和管理都是通过进程和/或线程来体现的。
主监控器是具有监控能力的模块,可分为用户态部分和内核态部分,其用户态部分运行于操作***用户态,其内核态部分运行于操作***内核态。进一步的,如图1a所示还包括管理器,管理器是用于处理服务状态异常的被监控对象的模块,也可分为用户态部分和内核态部分(主要是内核态),该用户态部分运行于操作***用户态,该内核态部分运行于操作***内核态,有关主监控器和管理器的进一步说明请参照下文,包括图1b的相关内容。该硬件层包括处理器,存储器,总线和I/O设备(输入/输出设备),上层的操作***通过调用硬件层的资源完成各种任务。具体的,若物理机是网络中的网元,则一台或多台物理机(如应用服务器等)可以组成业务环境,该业务环境中运行着一个或多个为应用提供服务的容器。
以下结合图1b来进一步对运行在操作***中的与本发明实施例中有关的部分进行说明,图1b的逻辑架构图中所示的业务环境具体是一台应用服务器,关于该应用服务器的整体架构可参阅图1a,该应用服务器的操作***上运行着多个容器,应理解,图1b以Linux操作***为例,但本发明实施例不对操作***做限定。例如在Linux操作***中,通常通过Linux初始进程(运行在操作***上)来启动管理器,该管理器可以是Docker(一个开源的容器引擎)或一个线程或一个进程,用于执行创建、结束、重启、重新分配容器和创建容器中的一号进程等操作中的任意一种。其中,Linux初始进程(通常称为init进程)用于***初始化,或者用于检测该初始进程启动的子进程或服务是否退出。主监控器,可以用于监控被监控对象(可以是容器、容器内进程、容器内线程和管理器中的任意一种)的服务状态,还可以根据被监控对象的服务状态确定相应的处理动作,故管理器还可以根据该处理动作对相应的被监控对象进行操作。需要说明的是,本发明实施例中的主监控器就是一个监控器,下文中提到“监控器”如无特殊说明则代指“主监控器”,命名为主监控器是为了与可能存在的用于监控主监控器运行状况的备监控器进行区分。比如,主监控器可以是一个线程或者进程。另外,在一台应用物理机上,也可以有多个执行主监控器功能的模块,各模块间可以通行,并且各模块分管不同的一组容器。需要说明的是,实际情况中,管理器和监控器可以是独立的模块,也可以是模块与子模块的关系(如一个或多个监控器内嵌在一个管理器中),还可以是一个模块,该模块既具有管理器的功能又具有监控器的功能,本发明实施例对管理器和监控器的具体形式和它们之间的对应关系均不做限定,对应关系可以是一对一或多对一甚至是一对多或多对多,比如,一个监控器向一个管理器下发处理策略,或者多个监控器向一个管理器下发处理策略等等,。但是一般场景下,出于节省资源的考虑,一台物理机上往往需要一个管理器(即一个线程或进程)。在本发明实施例中,以管理器和主监控器是独立的线程(即管理器和主监控器是两个独立的模块)的情况为例进行说明,并且在本发明实施例的某些场景中,至少一台物理机上有两个监控器和一个管理器,这两个监控器互为主备并可对该管理器下发处理策略。
在实际组网中,往往有多台应用服务器(物理机),该多台应用服务器中的一台或者多台还可以有容器配置下发器(运行于操作***中),该模块用于向主监控器下发被监控对象的配置信息以便主监控器对被监控对象的服务状态和处理策略进行确定。可选的,该容器配置下发器还可以根据主监控器的反馈信息去更新和修改配置信息。下发的配置信息可以是用户输入的、用户服务器事先定制的、或者是从其他网元(如其他应用服务器或者网络中的管理服务器)获得的,本发明实施例并不做限定。另一方面,该容器配置下发器也可以设置在网络的管理环境中,管理环境指除了该多台应用服务器外的其他用于分配网络资源的网元,如管理服务器(具体可以是网管等),即被监控对象的配置信息从管理环境下发到业务环境,使业务环境根据配置信息监控被监控对象,本发明实施例并不做限定。另一方面,可选的,业务环境也可以将反馈信息上报到管理环境,使管理环境根据反馈信息对配置信息进行修改和更新。需要说明的是,图1a和图1b的***架构图仅作解释说明用,本发明实施例不限于此。
下面结合图2到图4对本发明实施例的方法进行说明。图2所示的是本发明实施例中容器监控方法的一个流程示意图。图3是图2所示方法在一种实现方式下的部署了容器的物理机中信息交互示意图,用于表示图2对应的监控方法中的一些可能的信息交互,其中的箭头表示了各模块间的交互信息的方向。图2所示的方法用于物理机,用于对物理机上运行的多个被监控对象进行监控,该多个被监控对象的类型包括容器、容器内的进程和容器内的线程中的至少一种,该物理机包括主监控器,包括以下步骤:
S201:所述主监控器获得所述多个被监控对象各自上报的监控信息,其中,所述多个被监控对象中相同类型的被监控对象的监控信息是采用相同的通道上报的,所述多个被监控对象中的每一个被监控对象都具有唯一的标识,所述每一个被监控对象的监控信息包括心跳信息和服务质量报告中的至少一种,所述心跳信息表示上报所述心跳信息的被监控对象在心跳周期内的运行状态,所述服务质量报告用于记载上报所述服务质量报告的被监控对象承载的应用的服务质量QoS;
所述每一个被监控对象的监控信息包括心跳信息和服务质量报告中的至少一种。其中,在一种实现方式中,心跳信息可以不包括上报心跳信息的被监控对象的运行状态的具体信息,如只是一个字符串或一个信号,在这种实现方式中,该心跳信息具体表示上报该心跳信息的被监控对象在一段时间内运行正常,也就是说,被监控对象发送了心跳信息,就意味着被监控对象经过自检,有关被监控对象运行的各项指标正常。在另一种实现方式中,心跳信息包括上报心跳信息的被监控对象的运行状态的具体信息,例如是一个数据包,这种实现方式下,无论上报该心跳信息的被监控对象在一段时间内的运行状态正常或者失常,心跳信息都会被发送,这种实现方式中,主监控器根据心跳信息的内容确定被监控的对象的运行状态是否正常。当然,也可以心跳信息包括上报心跳信息的被监控对象的运行状态的具体信息,心跳信息具体表示上报该心跳信息的被监控对象在一段时间内运行正常,显然,这种方式会占用不必要的资源,本发明实施例对心跳信息的具体形式不做限制。
具体的,该心跳信息是周期上报的,有对应的心跳周期,该心跳周期可以是变化的。
其中,被监控对象运行正常表示该被监控对象的任务正在运行态,没有死锁,没有死循环也没有逻辑错误,并且可以为应用提供服务,而不单单是该被监控对象的任务有无退出。
其中,在上报的监控信息包括心跳信息的情况下,被监控对象的服务状况包括该被监控对象的运行状态;在上报的监控信息包括服务质量报告的情况下,被监控对象的服务状况包括被监控对象所承载的应用的服务质量。当然,在上报的监控信息包括心跳信息和服务质量报告的情况下,被监控对象的服务状况包括该被监控对象的运行状态和被监控对象所承载的应用的服务质量。
由于多个被监控对象中的每一个被监控对象都具有唯一的标识,在该多个被监控对象和该主监控器运行过程中,该标识存储在各被监控对象的数据区中,另一方面,该多个被监控对象上报的监控信息也对应存储于各被监控对象的数据区中,该各被监控对象的数据区在该物理机的内存中,因此该物理机操作***的内存可以区分每个被监控对象。具体为,各监控对象的标识会存储在该操作***内的内核态内存中,该内核态内存中包括该各被监控对象的数据区,监控器的内核态通过访问该内核态内存中的数据区来识别各监控信息的上报者。因此运行过程中,监控器通过访问内存可以区分出被监控对象的身份,而不需通过被监控对象上报监控信息的通道来区分被监控对象的身份(具体是用不同的通道接口来区分),从而使相同类型的不同被监控对象可以共用通道。需要说明的是,对于物理机上运行的容器,容器内进程和容器内线程,其对应关系,即一线程属于哪个进程,该进程属于哪个容器,对操作***是可知的,可以以该唯一标识的形式来表达,也可以以映射表等的形式存在。例如对于容器中的线程,该标识可以是一个容器-进程-线程三元组。
S202:所述主监控器根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态。
需要说明的是,所述多个被监控对象可以直接向主监控器传递监控监控信息,这种形式称为集中上报;也可以以容器为单位,被监控的容器中有一个监控代理(一般是一个线程),用于监控被监控对象的服务状态,以及将该容器内被监控对象的监控信息上报给主监控器,这种形式可称为分级上报,具体可以是监控代理从主监控器获取相关信息,记录在容器本地的内存中,并推送给该容器的各监控对象如图4所示。分级上报可以用在只对某一些特定容器及这些容器内的线程和进程做细致的监控,而又只需要对其他的容器进行容器级粗粒度监控的情况下。
上述的实施例中提供的容器监控方法用于物理机,该物理机上运行着多个被监控对象,这些被监控对象的种类包括容器、容器内的进程和容器内的线程中的至少一种,其中该多个被监控对象中的每一个被监控对象具有唯一的标识,通过该多个被监控对象上报的监控信息确定该多个被监控对象的服务状态,在这个过程中,相同种类的被监控对象采用相同的通道上报监控信息,减少了现有技术的监控过程中对资源的消耗,进一步解决了由于资源消耗大,现有技术中只对容器进行粗粒度的监控,从而无法满足对容器的多维度监控的需求的问题,使得可以从容器、容器内进程和容器内线程的多个维度对容器进行监控,并使这种多维度监控同样适用在容器密集部署的场景中。
具体的,所述主监控器根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态,包括:
所述主监控器根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态,包括:
所述主监控器通过所述多个被监控对象的监控信息所在的数据区与所述多个被监控对象的标识间的对应关系,确定上报所述监控信息的所述多个被监控对象各自的服务状态,所述数据区是上报所述监控信息的所述多个被监控对象的数据区,所述数据区包括堆和栈中的至少一种。
需要说明的是,监控信息的上报者指上报该监控信息的被监控对象。
需要说明的是,现有技术中由于容器的隔离性,运行在用户态的该多个被监控对象的视角有局限性,无法获知自己在操作***中的唯一标识,也就无法通过在监控信息中加上标识的方式来使主监控器区分出监控信息的上报者的身份,因此现有技术方案是通过建立的与每个被监控对象一一对应的通道来标识被监控对象的。而本发明实施例的方案中,由于运行过程中,操作***的内存中也保存着该多个被监控对象的所有属性信息,主监控器通过通道的接口接收该多个被监控对象的监控信息,主监控器根据该上报的监控信息所在的数据区和存储在内存中的该多个被监控对象的属性信息(具体是该标识)的对应关系,确定上报的监控信息分别来自哪个被监控对象。从而能够多个被监控对象共用一个通道上报监控信息,达到节省资源的效果。具体的,该数据区是堆和栈中的至少一种。
需理解的是,在该操作***运行过程中,该标识也注册在该操作***的内存中。具体的,该标识注册在该操作***内核态的内存中。
进一步的,主监控器的内核态通过所述监控信息所在的数据区与所述标识的对应关系,确定所述监控信息的上报者,所述数据区包括堆和栈中的至少一种,所述数据区是上报所述监控信息的所述多个被监控对象的数据区;
所述主监控器的用户态根据所述已知上报者的监控信息确定所述多个被监控对象各自的服务状态。
另一方面,主监控器的用户态可以根据该标识来获知上报的被监控信息的被监控对象,可以有多种实现方式,例如,具体的可以是主监控器的内核态根据上述方法(这种情况下该标识注册在内核的内存中)识别出上报监控信息的被监控对象后,在该监控信息中加上对应的被监控对象的标识,以便主监控器的用户态感知,也可以主监控器的用户态不通过内核态来获知上报的被监控信息的被监控对象,本发明实施例不做限定。
在本发明实施例中,该多个被监控对象根据各自的运行状态,周期性地使用通信信道向最近的“监控者”(主监控器或者监控代理)上报心跳消息。具体的,一种实现方式可以是:
1)线程发送自己的心跳消息。
2)进程由该进程中的一个线程以“进程的名义”发送心跳消息。此时该心跳消息只能表示发送该心跳消息的线程所在进程的运行状态,不能表示该线程所在进程中其他线程的运行状态和该线程的其他资源的情况。“以进程的名义”可以是在心跳消息中携带进程的标识。
3)容器由该容器中的一个进程中的线程以“容器的名义”发送心跳消息。此时该心跳消息只能表示发送该心跳消息的线程所在容器的运行状态,不能表示该线程所在容器中其他线程和其他进程的运行状态,“以进程的名义”可以是在心跳消息中携带进程的标识.需要说明的是,可以设置具体的发送心跳信息的规则,例如有一个容器C,有1个进程P1,P1有T1和T2两个线程.,如果规则为“容器C、进程P1”2者上报,不需要细到线程,那么收到“容器C、进程P1”的2个心跳,就认为也包含了T1和T2线程的运行状态。如果规则为C、P1、T1、T2都需要上报,那么如果只有C、P1上报,则它们不包含T1、T2的状态,T1、T2这种配置情况需要自行独立上报。
4)(注:这里以及下文提到的“监控者”表示“监控代理”或“主监控器”。如果应用采用集中上报,最近的“监控者”是指“主监控器”;如果应用采用分布上报,最近的“监控者”是指“监控代理”。下文中出现的“监控者”等同于最近的“监控者”。另外被监控对象本身并不感知这个区别,因为不管是“监控代理”还是“主监控器”,均对服务提供者提供统一格式的接口和通道,只是通道的另一端的接收者有差异)。
具体的,所述通道为文件或者进程间的通信连接。
需要说明的是,通道指的是被监控对象用于向主监控器传递监控监控信息的通信信道,可以是文件。每个通道都有一个对应的接口。在集中上报的情况下,通道一般是主监控器创建的,并且对被监控对象上报的监控信息进行监听;在分级上报的情况下,通道一般是各监控代理创建的,并且对被监控对象上报的监控信息进行监听。
具体的,所述通道为文件或者进程间的通信连接。
需要说明的是,在具体的实现中,该通道一般是该主监控器建立的。
下面结合具体的通道的实现方式对S202进行说明,以下的四种方式中,不具体说明的,集中上报和分级上报均适用。需要说明的是,下文中的例子只用于解释说明,不对本发明实施例中方法的实施方式构成限定。
在一种实现方式下,所述通道为Proc文件***,则S202:所述主监控器获得所述多个被监控对象各自上报的监控信息具体包括:
所述主监控器接收所述多个被监控对象通过Proc文件***中的一个或多个文件上报的各自的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享所述Proc文件***中的同一个文件,以用于所述监控信息的上报。例如,这种情况下,主监控器的内核态部分,提供3个proc文件用于上报监控信息。服务提供者通过写不同的proc文件来表明监控信息的上报者的类型。
a)所有的线程,通过文件/proc/$PID/task/$TID/heartbeat输出各自的心跳信息。
b)所有的进程,通过文件/proc/$PID/heartbeat输出各自的心跳信息。
c)所有的容器,通过文件/proc/heartbeat输出各自的心跳信息。(多在集中上报中使用)
主监控器的用户态部分,周期性地读取文件。
在另一种实现方式下,所述通道为设备文件,则S202:所述主监控器获得所述多个被监控对象各自上报的监控信息,具体包括:
所述主监控器接收所述多个被监控对象通过一个或多个设备文件上报的各自的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享同一个设备文件,以用于所述监控信息的上报。
本领域技术人员应当理解,Proc文件***中的文件是虚拟文件,设备文件不可能是Proc文件***中的文件。
当然,为了节省资源,所有被监控对象可以都共享一个设备文件上报监控信息,在该设备文件中通过一个命令字,或者一个标记位等标记被监控对象的类型,本发明实施例不做限定。
例如,“监控者”的内核态部分,创建设备文件(如/dev/watchdog)作为通道,并通过定义3个命令字(如THREAD_HB,PROCESS_HB,CONTAINER_HB)表明监控信息的上报者类型。各被监控对象通过设备文件上报各自的监控信息给该主监控器.
“监控者”的用户态部分,也通过读取设备文件获取不同类型的被监控对象上报的监控消息。
在又一种实现方式下,所述通道为Socket通信连接,则S202:所述主监控器获得所述多个被监控对象各自上报的监控信息,具体包括:
所述主监控器接收所述多个被监控对象通过一个或多个Socket通信连接上报的各自的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享同一个Socket通信连接的地址,以用于所述监控信息的上报。
具体的,该Socket通信连接可以为Unix Domain Socket通信连接。
例如,这种情况下,“监控者”的用户态部分,提供3个Socket通道并接收监控
信息,所有的同一类型的被监控对象共用同一个通道:
a)所有的线程,使用一相同的Unix Domain Socket地址发送消息。
b)所有的进程,使用又一相同的Unix Domain Socket地址发送消息。
c)所有的容器,使用另一相同的Unix Domain Socket地址发送消息(多用在集中上报中)。
在监控信息上报后,“监控者”的内核态部分,在Unix Domain Socket数据发送路径上,拦截监控信息,识别发送者的身份,然后在报文中补充被监控对象的身份,比如容器、进程、线程标识三元组,以便“监控者”的用户态部分得到已知上报者的监控信息。
在又一种实现方式下,所述通道为进程间通信通道(Inter-ProcessCommunication,IPC),所述多个被监控对象包括线程和进程中的至少一种,每个所述多个被监控对象所在的容器包括一监控线程,其中,所述主监控器获得所述多个被监控对象各自上报的监控信息包括:
所述主监控器接收所述多个被监控对象通过各自对应的监控线程上报的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享同一个IPC与所述主监控器通信,以用于所述监控信息的上报。
该实施方式一般用于分级上报中。例如,在这种情况下,该模式下,“监控者”的用户态部分,创建POSIX IPC或SystemV IPC的2个Key(由于主监控器与各容器处于不同的IPCnamespace,该方案只能用于分级上报,分别用于进程和线程的监控信息上报)并进行队列的接收。所有的同一类型的被监控对象共用同一个Key(即通道)。“监控者”的内核态部分,拦截上报的报文,识别发送者的身份,然后在报文中补充监控信息上报者的身份信息,比如容器、进程、线程标识三元组,以便“监控者”的用户态部分得到已知上报者的监控信息。
同理,在分级上报中,监控代理向主监控器上报也可以采取上述四种模式,本发明实施例不再赘述。
进一步的,在本实施例中,在S201前,还包括:
S200:主监控器确定所述多个被监控对象的配置信息。
具体的,一方面,在该监控信息为该心跳信息的情况下,S200包括:所述主监控器确定所述多个被监控对象的配置信息,所述多个被监控对象的配置信息包括所述多个被监控对象的身份信息、心跳信息上报方式和所述心跳周期,所述多个被监控对象的身份信息包括所述多个被监控对象的标识,所述心跳信息上报方式指示所述通道的类型,所述心跳周期表示被监控对象在运行正常情况下上报心跳信息的时间间隔。以及所述主监控器向所述多个被监控对象推送各自的心跳信息上报方式,所述多个被监控对象是由所述身份信息中的标识确定的。
需要说明的是,所述通道的类型指示该通道是实现方式,如上文中提到的Proc文件***中的文件、设备文件、Socket通信连接或者IPC通道等。
相应的,在这种情况下,S201具体包括:
S201a:所述主监控器获得所述多个被监控对象各自上报的心跳信息,所述心跳信息是根据所述多个被监控对象各自对应的心跳信息上报方式上报的;
相应的,S202具体包括S202a:所述主监控器根据所述多个被监控对象的所述心跳周期和所述心跳信息,确定所述多个被监控对象各自的运行状态。
具体的,心跳信息是周期上报的,周期是心跳信息上报阈值,因此心跳信息可以表示上报该心跳信息的被监控对象在一段时间内(即心跳信息上报阈值内)的运行状态,如果一被监控对象未在心跳信息上报阈值内上报心跳信息,则可认为该被监控对象运行失常。如果一被监控对象在心跳信息上报阈值内上报了心跳信息,且该心跳信息中包括了描述运行状态的具体信息,则主监控器可根据该信息确定该被监控对象是否运行正常,本发明实施例不做限定。
更进一步的,所述多个被监控对象的配置信息还包括所述多个被监控对象运行异常情况下的处理策略,所述身份信息还包括所述多个被监控对象的从属关系和配合关系中的至少一种,所述物理机还包括管理器,这种情况下该方法还包括S203,具体的S203在这里是S203a:
S203a:所述主监控器根据所述运行异常情况下的处理策略确定所述多个被监控对象中运行异常的被监控对象和关联被监控对象的处理动作,所述关联被监控对象与所述运行异常的被监控对象中的至少一个具有从属关系或者配合关系;
所述管理器根据所述处理动作对所述多个被监控对象中运行异常的被监控对象和关联被监控对象进行处理。
需要说明的是,该关联被监控对象可以包括该多个被监控对象中的一个或多个,也可以包括除该多个被监控对象外,在该物理机的操作***上的除该多个被监控对象外的其他容器和/或其他在容器中的进程和/或其他在容器中的线程。也就是说,该关联被监控对象包括该物理机的操作***上的容器、容器中的进程和容器中的线程的至少一种。本发明实施例中下文提到的关联被监控对象都作此解释,下文不再赘述。
当然,对于S202a和S203a,如果主监控器没有接到一个被监控对象在心跳信息上报阈值内上报的心跳信息,则说明该被监控对象运行异常,主监控器可以不用确定该被监控对象的运行状态直接触发下发处理动作等信息到管理器的步骤,使管理器对该监控对象进行处理。
另一方面,在该监控信息为该服务质量报告的情况下,S200包括:
所述主监控器确定所述多个被监控对象的配置信息,所述多个被监控对象的配置信息包括所述多个被监控对象的身份信息、服务质量报告上报方式和服务质量要求,所述多个被监控对象的身份信息包括所述多个被监控对象的标识,所述服务质量报告上报方式指示所述通道的类型,所述服务质量要求用于确定所述多个被监控对象承载的应用的QoS是否合格;
以及所述主监控器向所述多个被监控对象推送各自的服务质量报告上报方式,所述多个被监控对象是由所述身份信息中的标识确定的。
需要说明的是,所述通道的类型指示该通道是实现方式,如上文中提到的Proc文件***中的文件、设备文件、Socket通信连接或者IPC通道等。
相应的,在这种情况下,S201具体包括:
S201b:所述主监控器获得所述多个被监控对象各自上报的服务质量报告,所述服务质量报告是根据所述多个被监控对象各自对应的服务质量报告上报方式上报的;
相应的,在这种情况下,S202具体包括:
S202b:所述主监控器根据所述多个被监控对象的服务质量要求和所述服务质量报告确定所述多个被监控对象各自承载的应用的服务质量是否合格。
更进一步的,所述多个被监控对象的配置信息还包括服务质量不合格的情况下的处理策略,所述身份信息还包括所述多个被监控对象的从属关系和配合关系中的至少一种,所述物理机还包括管理器,这种情况下该方法还包括S203,具体的S203在这里是S203b:
S203:所述主监控器根据所述多个被监控对象的身份信息、所述运行状态和所述运行异常情况下的处理策略确定运行异常情况下的处理动作;
所述管理器根据所述处理动作对所述多个被监控对象中运行异常的被监控对象和关联被监控对象进行处理,所述关联被监控对象与所述运行异常的被监控对象中的至少一个具有从属关系或者配合关系。上述两种情况可以总结为:该主监控器确定了该多个被监控对象的服务状态和处理动作后,将其中服务状态异常的被监控对象的身份信息和处理动作下发给管理器,管理器对这些服务状态异常的被监控对象和关联被监控对象进行处理。
需要说明的是,本发明实施例中,被监控对象之间的从属关系表示一个对象中包括另一个或多个对象,如容器中包括的进程或进程中包括的线程等等,或者一个对象创建了另一个或多个对象,具体的也被称为父子关系,如一个进程创建了另一进程或线程等。被监控对象之间的配合关系表示多个被监控对象执行同一任务或者服务于同一应用,比如某应用部署在多个容器上或者某个进程提供服务需要依赖于其他进程等,有时可以被称为服务依赖关系。
可以理解的是,该监控信息也可以包括所述心跳信息和所述服务质量信息,则被监控对象的服务状况包括该被监控对象的运行状态和被监控对象所承载的应用的服务质量,这种情况下配置信息的所包括的内容以及S203的具体实现请参照上文,此处不再赘述。这种情况下,监控更加全面,不仅可以监控到容器和容器内线程、进程的运行状况,还可以监控到对应用的服务质量是否合格。
综上,在该虚拟环境的物理机包括管理器的情况下,S203可以总结为:
S2031:该主监控器根据该上报的监控信息和该配置信息向该管理器下发该多个被监控对象服务状态异常情况下的处理动作;
该管理器根据该处理动作对该多个被监控对象中服务状态异常情况的被监控对象及关联被监控对象进行处理。
具体细节参照上文对S203的叙述,不再赘述。
需要说明的是,上述监控方法中,被监控对象还可以包括管理器,具体的实施细节和上述方法中相同,使得管理器的服务状态(包括运行状态和服务质量中的至少一种)也能够被监控,并且在该管理器失效或故障的情况下对其依据处理策略进行处理(如重启等),此处不再赘述。综上,本发明实施例支持管理器、容器、进程和线程四个维度的全方面监控,提供了全面的对轻量级虚拟化环境(具体指容器技术)的可以根据需求进行定制和修正处理策略的解决方案,有助于优化***的RAS(Reliability,Availability andServiceability可靠性、可用性和可服务性)能力。
需要说明的是,主监控器和管理器都是从功能上进行命名的模块,在一些情况下,主监控器也具有管理器的功能,则主监控器另一方面也就是本发明实施例中的管理器,也就是说主监控器和管理器也有可能是同一模块,具体的,该模块可以包括一个或多个线程(或进程),或者说另一实施例中,主监控器有兼具上述实施例中主监控器和管理器的功能,则S203可以总结为:
S2032:该主监控器根据该上报的监控信息和该多个被监控对象配置信息,对该多个被监控对象中服务状态异常情况的被监控对象及关联被监控对象进行处理。
具体细节参照上文对S203的叙述,不再赘述。
需要说明的是,包括步骤200的实施例描述的,是主监控器根据该多个被监控对象的配置信息对该多个被监控对象进行一些操作,从而使被监控对象上报监控信息给主监控器的过程。其中,该配置信息可以是预先存储定制在主监控器中的,也可以是进行监控之前由用户输入的,更多的情况下,是容器配置下发器下发给主监控器的,本发明不做限定。
该多个被监控的对象的配置信息可以包括:
该多个被监控对象的身份信息,比如该多个被监控对象(可以包括管理器、容器、容器内的进程和容器内的线程中至少一种)的列表,该列表中包括该多个被监控对象的标识、该多个被监控对象之间的父子关系和服务依赖关系等。在需要监控运行是否失常的情况下,该配置信息还包括:各被监控对象的心跳信息上报方式,比如上文提到的几种方式和一些其他的能够同一种被监控对象使用同一通道上报的实现方式;可靠性失效承受时长,即所述心跳周期,比如,主监控器检测到某个被监控对象在60s内未上报心跳信息,则触发运行异常情况下的处理策略;在各被监控对象运行异常情况下的处理策略,比如在进程运行异常的情况下复位进程,或者复位进程和该进程所在的容器或者复位失常的容器和与之相关的容器等等。在心跳信息是一个数据包且其中包括该被监控对象的运行信息的情况下,该配置信息还包括用于根据该运行信息判断是否运行异常的信息,如某一字段取A值表示某指标不正常可以认定为运行异常或者某一字段表示运行异常的原因。
在需要监控服务质量是否合格的情况下,该配置信息还包括该多个被监控对象中每个被监控对象的服务项目,比如一个列表;服务质量报告上报方式,比如上文提到的几种方式或者一些其他的能够同一种被监控对象使用同一通道上报的实现方式;服务质量要求,比如Web服务进程的一个页面读取的时间不多于5us等;服务质量不合格的情况下的处理策略,处理策略比如若Web服务进程读取一页面崩溃n次则复位进程,或者复位进程和该进程所在的容器或者复位失常的容器和与之相关的容器等等。
以上结合了例子说明在实际应用的一些场景中,该配置信息具体可以包括哪些内容。
下面举例说明不同种类的被监控对象在运行异常或者承载的应用的服务质量不合格的情况下的处理策略可能的内容,需要说明的是,处理策略都是可以定制和修改的。
下文中,“承载的应用的服务质量不合格”简称“服务质量不合格”。
对于容器,若运行异常或者服务质量不合格,复位该容器和与之有配合关系的关联被监控对象,进一步的,如果某容器在一定时间内重启次数超过一阈值,则重启整个HOST;或者直接重启整个HOST,或者对容器上的服务进行重新调度。
对于容器内的进程,若运行异常或者服务质量不合格,复位该容器内的进程和与之有配合关系或者父子关系的关联被监控对象,进一步的,如果某容器内的进程在一定时间内重启次数超过一阈值,则重启该进程;或者重启该进程所在的容器。
对于容器内的线程,若运行异常或者服务质量不合格,重启该线程所在的进程。
需要理解的是,处理动作是根据被监控对象的服务状态和处理策略确定的对被监控对象的具体操作,一般情况下,管理器执行主监控器下发的处理动作,即直接按照处理动作对相应的被监控对象及其关联被监控对象进行操作。以容器为例,若容器的服务状态是运行异常或者服务质量不合格,其处理策略是若运行异常或者服务质量不合格,复位该容器和与之有配合关系的关联被监控对象,则处理动作为复位该容器和与之有配合关系的关联被监控对象,则管理器按照处理动作复位该容器和与之有配合关系的关联被监控对象,更具体的一个例子,处理策略为某容器在一定时间内重启次数超过3次,则重启整个HOST,该容器的服务状态为在一定时间内重启了4次,则处理动作为重启整个HOST。类似的,对线程和进程的服务状态、处理策略和处理动作间的关系,以及处理动作的确定方式本发明实施例不再赘述。
可选的,所述物理机还包括发送模块,相应的,该方法还可以包括:
S205:所述发送模块向管理服务器发送处理指令,所述处理指令包括处理动作和待处理的被监控对象的标识,所述处理指令被所述管理服务器用于将所述待处理的被监控对象对应的应用部署到其他至少一台物理机上,所述处理动作是所述主监控器根据所述多个被监控对象的服务状态和服务状态异常的情况下的处理策略确定的。
该可选步骤中的处理动作具体是该物理机中的监控器根据所述多个被监控对象的服务状态和所述多个被监控对象服务状态不合格情况下的处理策略确定的。
要说明的是,在某些情况下,该方法的实施例包括S203或者与S203对应的步骤以及S205,或者在一些情况下该方法的实施例也可以不包括S203或者与S203对应的步骤(见上文)而只包括S205。
S205多数出现在:某被监控对象的服务状态不合格的处理策略是重新调度该被监控对象,比如重新调度该被监控对象、或者该被监控对象上的应用(或服务),更具体的,如将一个被监控对象上的应用部署到另一台物理机中的某被监控对象上。该重新调度可以是跨物理机节点的。需要说明的是,S205中,该被监控对象的类型一般为容器。
具体的,本发明实施例中的物理机还可以包括调度器,用于在某个被监控对象运行异常或者服务质量不合格的情况下,执行主监控器下发的将该被监控对象上的应用或服务重新调度的处理动作,该处理动作是根据主监控器该被监控对象所在的物理机资源或者该物理机所在的网络资源确定的;或者用于根据主监控器下发的处理策略执行相应的处理动作,该处理策略为在某个被监控对象运行异常或者服务质量不合格的情况下,将该被监控对象上的应用或服务根据该被监控对象所在的物理机资源或者该物理机所在的网络资源重新调度。比如在该被监控对象为容器的情况下,将某一容器上应用或服务分配到其他一个或者几个容器上,该一个或几个容器中可以有容器与该被监控对象不在同一物理物理机上。该调度器模块类似管理器模块或者主监控器模块,可以是一个进程或线程也可以是多个进程或者线程,需要说明的是,调度器是从功能上进行命名的,在一些情况下的实现中,管理器或者主监控器也可以支持调度器的功能,则该支持调度器功能的管理器或者主监控器另一方面也是本发明实施例中所说的调度器,也就是说管理器和调度器或者主监控器、管理器和调度器也有可能是同一模块,具体的,该模块可以包括一个或多个线程(或进程),可以在业务环境(如与要处理的被监控对象在同一台或不同的物理机上),也可以在管理环境,如管理服务器(也可以叫网关、调度服务器等)。S205描述的是该调度器存在于,或者也存在于管理环境的情况,这种情况更适合全局地调度网络资源,本发明实施例不限定S205与S203的先后顺序。本发明实施例对通过调度器重新部署被监控对象的具体实现方式不做限定。
另一方面,用户还可以通过主监控器对处理策略进行修改或优化,比如根据配置信息和主监控器收集的监控信息,更进一步的,主监控器还可以将修改或优化后的处理策略通过输出单元发送给管理环境中的物理机(如管理服务器),以便该管理环境中的物理机对存储的原处理策略进行更新。该物理机将该部分处理策略上发送给管理服务器,管理服务器可以根据该部分处理策略对管理服务器中的处理策略进行修改、替换或者增加。这样使管理服务器中的处理策略可以得到更新和修改,该修改和更新还是监控器根据实际的服务情况作出的,保证了准确性和场景贴合性。
需要说明的是,上述方法实施例中对各步骤和各相关名词的解释说明,在与该方法相应的装置实施例(图5的实施例和图7对应的第一个实施例)中同样适用,在图5和图7的装置实施例中,将不再重复。
综上,上述实施例中的监控方法,用于物理机,其中,主监控器向多个被监控对象推送所述多个被监控对象各自的监控信息的上报方式,该多个被监控对象包括容器、容器内的进程和容器内的线程中的至少一个类型,该多个被监控对象中的每一个被监控对象具有唯一的标识,该多个被监控对象中相同的类型采用相同的文件模式或者通道上报监控信息,大大减少了现有技术的监控过程中对线程和socket端口的数量的消耗,也解决了出于对线程和端口资源的考虑现有技术中只能对容器进行粗粒度的监控,从而无法满足对容器监控需求的问题,使得对轻量级虚拟化***可以从容器、进程、线程甚至管理器和主监控器的多维度的监控,并使这种多维度监控同样适用在现在越来越多的密集容器分布的场景中,进一步的,主监控器可以根据有关该多个被监控对象的配置信息对该多个被监控对象进行一些操作,从而使被监控对象上报监控信息给主监控器,主监控器再使管理器对服务状态异常的被监控对象进行处理,从而提供了一整套的针对提高轻量级虚拟化的容器技术的可靠性和可服务性的解决方案,可以更好地满足该应用场景下对定制化细粒度的监控和异常处理的要求。
本发明实施例中描述的另一种容器监控方法中,被监控对象不需要自己上报状态,这样既可以减少编程麻烦,同时也能支持使用其他第三方应用的监控方法,可以称为智能检测上报。该容器监控方法用于对物理机上运行的多个被监控对象进行监控,所述多个被监控对象的类型包括容器、容器内的进程和容器内的线程中的至少一种,所述物理机包括主监控器,该监控方法包括:
所述主监控器通过检测所述多个被监控对象的指令执行信息,确定所述多个被监控对象的服务状态,所述指令具有指定的地址,其中,所述服务状态包括运行状态和服务质量中的至少一种。
具体的,所述多个被监控对象中的每一个被监控对象具有唯一的标识,在所述主监控器通过检测所述多个被监控对象的指令执行信息,确定所述多个被监控对象的服务状态的方面,所述主监控器通过存储所述指令执行信息的数据区与所述多个被监控对象的标识间的对应关系,确定所述多个被监控对象各自的服务状态,所述数据区是上报所述监控信息的所述多个被监控对象的数据区,所述数据区包括堆和栈中的至少一种。
具体的,该指令可以是一些指定的函数。该主监控器根据指定函数的调用情况,确定所述多个被监控对象的服务状态。具体的,指定的函数一般是该多个被监控对象在运行或提供服务的过程中循环调用(如间隔一段时间就会调用)的,还可以是一些关键函数,即通过这些关键函数的执行情况来监控。例如某关键函数执行失败或者返回值为x~y,则运行异常。具体的,可以通过插桩或者探针来探测指令的执行情况。
不同的被监控对象可以对应不同的指定的函数,因此可以通过这些指定函数来确定该多个被监控对象的服务状态。
对于一类被监控对象,该指令具体可以是syscall***调用,这是一个函数,这种情况下,可以根据被监控对象的***任务状态和被监控对象执行syscall***调用来制定判断规则。
也就是说,主监控器根据被监控对象的***任务状态和执行syscall***调用的情况来确定该被监控对象的服务状态。服务状态包括被监控对象的运行状态和服务质量中的至少一种。该判断规则适用的所述多个被监控对象的第一子集,其中的被监控对象在运行和服务应用的过程中都会频繁地执行syscall***调用,故主监控器可以通过内核中对各监控对象执行syscall***调用的情况的探测,结合被监控对象所在的***任务状态,准确确定出被监控对象的服务状态是否异常。例如,该判断规则可以是:线程A在***状态为X或Y,超过T秒为异常,例外情况是执行select或poll***调用执行时(例如这样可以检测死循环、死锁状态);或者线程K在5秒内调用一次write syscall,即状态为正常;或者线程A、线程B状态正常,则进程C状态正常;或者进程D、进程E状态正常,则容器F状态正常等等;或者容器A中的所有进程状态正常,则容器正常;或者容器中的关键进程A状态正常,则容器正常或者容器中的所有进程状态正常,且容器的CPU占用率、内存占用率不超过一阈值,则容器正常。
应当了解,对于不同操作***下的不同种类的被监控对象,其***任务状态具体可以是不同的,例如,本领域技术人员通常认为:线程的五大状态为新建状态(New)、就绪状态(Runnable)、运行状态(Running)、阻塞状态(Blocked)以及死亡状态(Dead)。进程的状态一般是运行(TASK_RUNNING)、就绪和阻塞。具体的在Linux***下,进程的状态就分得比较细致,例如,R(TASK_RUNNING),可执行状态(包括很多操作***教科书将正在CPU上执行的进程定义为RUNNING状态、而将可执行但是尚未被调度执行的进程定义为READY状态);S(TASK_INTERRUPTIBLE),可中断的睡眠状态;D(TASK_UNINTERRUPTIBLE),不可中断的睡眠状态;T(TASK_STOPPED or TASK_TRACED),暂停状态或跟踪状态;Z(TASK_DEAD-EXIT_ZOMBIE),退出状态(进程成为僵尸进程);X(TASK_DEAD-EXIT_DEAD),退出状态,进程即将被销毁。当然,在一些情况下,***任务状态也可以由用户定义。
另一方面,该被监控对象还可能包括一类较少执行或者不执行syscall***调用的容器、进程或者线程,这是由于这类被监控对象所述服务的应用很少访问syscall***调用(比如采用独占核轮询忙转处理),这种情况通过判断规则监控服务状态的准确性和有效性会降低。这种情况下可以采用探针或者插桩的方式探测容器内的线程或进程的某些具有指定的地址的指令(一些情况下具体是某些指定函数)的执行情况或者监控某些执行数据来确定被监控对象的服务状态,具有指定的地址的指令是指:每当执行这些指令时,处理器访问的地址是固定的。这些指定函数和具有指定的地址的指令通常是根据具体的被监控对象有针对性地设置的,一般都是被监控对象在运行和提供服务的过程中要反复执行的函数或者指令,或者是被监控对象在运行和提供服务的过程中一些重要的、关键的函数或者指令。需要说明的是,由于容器的隔离性,用探针或者插桩的方式探测容器内的进程和线程与探测容器外的进程和线程是不同的。例如,可以采用systemtap+uprobe+“用户态规则”的方案来判断一个线程的状态。用户态规则举例如下:
1)样例1:线程A在5s内运行到函数F,返回值为0,即状态正常。
2)样例2:线程B在1s内运行到函数P,参数X为0~100范围,即状态正常。
3)样例3:线程C在1s内运行到线程的二进制地址0xABCDEF0,即状态正常。
4)样例4:线程D在1s内运行到函数K,全局变量Y每秒++,即状态正常。
上述的一种用于容器监控方法,该监控方法用于物理机,其中,该主监控器通过指定的指令执行信息确定多个被监控对象的服务状态,该多个被监控对象的类型包括容器、容器内的进程和容器内的线程中的至少一个类型,大大减少了现有技术的监控过程中对资源(如线程和socket端口的数量)的消耗,减少了现有技术的监控过程中对资源的消耗,也解决了出于对线程和端口资源的考虑现有技术中只能对容器进行粗粒度的监控,从而无法满足对容器监控需求的问题,使得对容器可以从容器、进程和线程的多维度的监控,并使这种多维度监控同样适用在容器密集部署的场景中。
可选的,在服务状态为所述运行状态的情况下,所述物理机还包括管理器,上述方法还包括:
所述主监控器确定所述多个被监控对象的身份信息和运行异常情况下的处理策略,所述多个被监控对象的身份信息包括所述多个被监控对象的从属关系和配合关系中的至少一种和所述多个被监控对象的标识;
所述主监控器根据所述多个被监控对象的身份信息、所述运行状态和所述运行异常情况下的处理策略,确定对运行异常的被监控对象和关联被监控对象的处理动作,所述关联被监控对象与所述运行异常的被监控对象中的至少一个具有从属关系或者配合关系;
所述管理器根据所述处理动作对所述多个被监控对象中运行异常的被监控对象和关联被监控对象进行处理。
需要说明的是,在这种实施方式中,所述主监控器通过检测所述多个被监控对象的指令执行信息,确定所述多个被监控对象的服务状态,所述指令具有指定的地址,其中,所述多个被监控对象中的每一个被监控对象具有唯一的标识,所述多个被监控对象是主监控器根据所述身份信息中的标识确定的,所述服务状态包括运行状态和服务质量中的至少一种。
可选的,在所述服务状态为所述服务质量的情况下,所述物理机还包括管理器,上述方法还包括:
所述主监控器确定所述多个被监控对象的身份信息和服务质量不合格的情况下的处理策略,所述多个被监控对象的身份信息包括所述多个被监控对象的从属关系和配合关系中的至少一种和所述多个被监控对象的标识;
所述主监控器根据所述多个被监控对象的身份信息、所述服务质量和所述服务质量不合格的情况下的处理策略,确定对服务质量不合格的被监控对象和关联被监控对象的处理动作,所述关联被监控对象与所述服务不合格的被监控对象中的至少一个具有从属关系或者配合关系;
所述管理器根据所述处理动作对所述多个被监控对象中服务不合格的被监控对象和关联被监控对象进行处理。
需要说明的是,在这种实施方式中,所述主监控器通过检测所述多个被监控对象的指令执行信息,确定所述多个被监控对象的服务状态,所述指令具有指定的地址,其中,所述多个被监控对象中的每一个被监控对象具有唯一的标识,所述多个被监控对象是主监控器根据所述身份信息中的标识确定的,所述服务状态包括运行状态和服务质量中的至少一种。
上述两种情况可以总结为:主监控器确定了该多个被监控对象的服务状态和处理动作,将其中服务状态异常的被监控对象处理动作下发给管理器,管理器对这些服务状态异常的被监控对象及其关联被监控对象进行处理。
需要说明的是,本发明实施例中,被监控对象之间的从属关系表示一个对象中包括另一个或多个对象,如容器中包括的进程或进程中包括的线程等等,或者一个对象创建了另一个或多个对象,具体的也被称为父子关系,如一个进程创建了另一进程或线程等。被监控对象之间的配合关系表示多个被监控对象执行同一任务或者服务于同一应用,比如某应用部署在多个容器上或者某个进程提供服务需要依赖于其他进程等,有时可以被称为服务依赖关系。
需要说明的是,本发明实施例中的监控方法,是主监控器根据有关该多个被监控对象的配置信息对该多个被监控对象进行一些操作,从而使主监控器获得被监控对象的监控信息的过程,这里的配置信息主要包括身份信息、判断策略(如判断规则,或者指定函数的调用情况或指令执行信息)和处理策略。其中,该配置信息可以是预先存储定制在主监控器中的,也可以是进行监控之前由用户输入的,更多的情况下,是容器配置下发器下发给主监控器的,本发明不做限定。关于被监控对象的身份信息、被监控对象在运行异常情况下的处理策略和被监控对象在服务质量不合格情况下的处理策略的说明,请参照本发明实施例中采用监控信息上报的监控方法中的叙述部分,此处不再赘述。另一方面,用户还可以通过主监控器对处理策略进行修改或优化,比如根据配置信息和主监控器收集的监控信息,更进一步的,主监控器还可以将修改或优化后的处理策略通过输出单元发送给管理环境中的物理机(如管理服务器),以便该管理环境中的物理机对存储的原处理策略进行更新。
需要理解的是,处理动作是根据被监控对象的服务状态和处理策略确定的对被监控对象的具体操作,一般情况下,管理器执行主监控器下发的处理动作,即直接按照处理动作对相应的被监控对象及其关联被监控对象进行操作。以容器为例,若容器的服务状态是运行异常或者服务质量不合格,其处理策略是若运行异常或者服务质量不合格,复位该容器和与之有配合关系的关联被监控对象,则处理动作为复位该容器和与之有配合关系的关联被监控对象,则管理器按照处理动作复位该容器和与之有配合关系的关联被监控对象,更具体的一个例子,处理策略为某容器在一定时间内重启次数超过3次,则重启整个HOST,该容器的服务状态为在一定时间内重启了4次,则处理动作为重启整个HOST。类似的,对线程和进程的服务状态、处理策略和处理动作间的关系,以及处理动作的确定方式本发明实施例不再赘述。
需要说明的是,上述监控方法中,被监控对象还可以包括管理器,具体的实施细节和上述方法中相同,使得管理器的服务状态(包括运行状态和服务质量中的至少一种)也能够被监控,并且在该管理器失效或故障的情况下对其依据处理策略进行处理(如重启等),此处不再赘述。综上,本发明实施例支持管理器、容器、进程和线程四个维度的全方面监控,提供了全面的对轻量级虚拟化环境(具体指容器技术)的可以根据需求进行定制和修正处理策略的解决方案,有助于优化***的RAS(Reliability,Availability andServiceability可靠性、可用性和可服务性)能力。
需要说明的是,主监控器和管理器都是从功能上进行命名的模块,在一些情况下,主监控器也具有管理器的功能,则主监控器另一方面也就是本发明实施例中的管理器,也就是说主监控器和管理器也有可能是同一模块,具体的,该模块可以包括一个或多个线程(或进程),或者说另一实施例中,主监控器有兼具上述实施例中主监控器和管理器的功能,这种情况下的采用判断规则或者指定地址的指令或者指定函数进行监控的方法的具体实施,请参照上文,此处不再赘述。
可选的,另一方面所述物理机还包括发送模块,该方法还可以包括以下步骤:
所述发送模块向管理服务器发送处理指令,所述处理指令包括处理动作和待处理的被监控对象的标识,所述处理指令被所述管理服务器用于将所述待处理的被监控对象对应的应用部署到其他至少一台物理机上,所述处理动作是所述主监控器根据所述多个被监控对象的服务状态和服务状态异常的情况下的处理策略确定的。
需要说明的是,该可选步骤中的处理动作具体是该物理机中的监控器根据所述多个被监控对象的服务状态和所述多个被监控对象服务状态不合格情况下的处理策略确定的。
本可选步骤多数出现在:某被监控对象的服务状态不合格的处理策略是重新调度该被监控对象,比如重新调度该被监控对象、或者该被监控对象上的应用(或服务),更具体的,如将一个被监控对象上的应用部署到另一台物理机中的某被监控对象上。该重新调度可以是跨物理机节点的。需要说明的是,通常该被监控对象的类型是容器。
具体的,本发明实施例中的物理机还可以包括调度器,用于在某个被监控对象运行异常或者服务质量不合格的情况下,执行主监控器下发的处理动作,具体的是将该被监控对象上的应用或服务重新调度的处理动作,该处理动作是根据主监控器该被监控对象所在的物理机资源或者该物理机所在的网络资源确定的;或者用于根据主监控器下发的处理策略执行相应的处理动作,该处理策略在某个被监控对象运行异常或者服务质量不合格的情况下,将该被监控对象上的应用或服务根据该被监控对象所在的物理机资源或者该物理机所在的网络资源重新调度。比如在该被监控对象为容器的情况下,将某一容器上应用或服务分配到其他一个或者几个容器上,该一个或几个容器中可以有容器与该被监控对象不在同一物理物理机上。该调度器模块类似管理器模块或者主监控器模块,可以是一个进程或线程也可以是多个进程或者线程,需要说明的是,调度器是从功能上进行命名的,在一些情况下的实现中,管理器或者主监控器也可以支持调度器的功能,则该支持调度器功能的管理器或者主监控器另一方面也是本发明实施例中所说的调度器,也就是说管理器和调度器或者主监控器、管理器和调度器也有可能是同一模块,具体的,该模块可以包括一个或多个线程(或进程),可以在业务环境(如与要处理的被监控对象在同一台或不同的物理机上),也可以在管理环境,如管理服务器(也可以叫网关、调度服务器等)。该可选步骤描述的是该调度器存在于,或者也存在于管理环境的情况,这种情况更适合全局地调度网络资源。本发明实施例对通过调度器重新部署被监控对象的具体实现方式不做限定。
另一方面,用户还可以通过主监控器对处理策略进行修改或优化,比如根据配置信息和主监控器接收的监控信息,更进一步的,主监控器还可以将修改或优化后的处理策略通过输出单元发送给管理环境中的物理机(如管理服务器),以便该管理环境中的物理机对存储的原处理策略进行更新。该物理机将该部分处理策略上发送给管理服务器,管理服务器可以根据该部分处理策略对管理服务器中的处理策略进行修改、替换或者增加。这样使管理服务器中的处理策略可以得到更新和修改,该修改和更新还是监控器根据实际的服务情况作出的,保证了准确性和场景贴合性。
需要说明的是,上述方法实施例中对各步骤和各相关名词的解释说明,在与该方法相应的装置实施例(图6的实施例和图7对应的第二个实施例)中同样适用,在图6和图7的装置实施例中,将不再重复。
可选的,上文中提到的两类容器监控方法中,还包括:
所述主监控器在所述主监控器未在第一配置时长内收到所述备监控器的心跳信息的情况下,触发所述备监控器退出运行状态以便所述被监控器重新被启动,所述备监控器的心跳信息表示所述备监控器在一时间周期内运行正常;
所述操作***上还运行有备监控器,所述备监控器在所述备监控器未在第二配置时长内收到所述主监控器的心跳信息的情况下,触发所述主监控器退出运行状态,所述备监控器接管所述被监控对象使所述备监控器为当前的主监控器,所述主监控器所在的物理机重新启动所述主监控器使所述主监控器为当前的备监控器,所述主监控器的心跳信息表示所述主监控器在一时间周期内运行正常。
需要说明的是,和上文中提到的被监控对象上报的心跳信息类似,这里提到的主监控器和备监控器的心跳信息,在其他具体实施方式中的其具体说明和形式可以参照对被监控对象上报的心跳信息的叙述,此处不再赘述,也就是说,在另一种实现方式中,运行异常的情况下也是可以上报心跳信息的,在这种情况下,主监控器(或备监控器)可以根据心跳信息的上报情况确定上报心跳信息的备监控器(或主监控器)的运行状态是否异常,从而在运行异常的情况下按照上文中实现方式的步骤(主备倒换或重启等)进行处理。
该步骤能够更好地保证有监控器处于运行正常的状态并能够保证对被监控对象的监控,具体的是保证本实施例在本场景下至少存在两个监控器以主备方式同时运行,主备监控器之间相互检测对方的存在,并根据需要完成两个监控器状态的转换,在一种实施方式中:
如果主监控器未在配置的时长(对应第一配置时长,如5ms,)内收到备监控器的心跳信息,则表示备监控器失效或故障,则主监控器可以使该备监控器退出,备监控器的父进程(如Linux初始进程或者其他进程)检测到备监控器退出后重新启动备监控器。进一步的,如果备监控器在一定时间内的重新启动超过一个阈值,则复位HOST。该配置时长、该一定时间和该阈值可以是预先存储的也可以是用户输入的或者从容器配置下发器等模块获得的,本发明实施例不做限定。
如果备监控器未在配置的时长内(对应第二监控时长,可以与第一监控时长相同或者不同,该时长可以是预先存储的也可以是用户输入的或者从容器配置下发器等模块获得的,本发明实施例不做限定。)收到主监控器的心跳信息,则表示主监控器失效或故障,备监控器可以使该主监控器退出,置自身状态为“主”,即备监控器接管被监控对象的监控,原备监控器为当下的主监控器。原主监控器的父进程(如Linux初始进程或者其他进程)检测到原主监控器退出后重新启动原主监控器,置自身状态为“备”,即原主监控器为当下的备监控器。进一步的,如果主备监控器在一定时长内的交互次数超过一个阈值,则复位HOST。该配置时长、该一定时间和该阈值可以是预先存储的也可以是用户输入的或者从容器配置下发器等模块获得的,本发明实施例不做限定,本说明书文中涉及到的关于一定时长和阈值的来源说明均可参照此处,在其他部分不再重复说明。
上述主备监控器的设置保证了有监控器处于运行正常的状态并能够保证对被监控对象的监控,提升了监控器的稳定性,也使得容器监控的解决方案更加完整和全面。
需要说明的是,上述方法实施例中对各步骤和各相关名词的解释说明,在与该方法相应的装置实施例(图6的实施例和图7对应的第二个实施例)中同样适用,在图6的装置实施例和图7相应的装置实施例中,将不再重复。
综上,上述实施例中的监控方法,用于物理机,其中,该主监控器通过指定的指令执行信息确定多个被监控对象的服务状态,该多个被监控对象的类型包括容器、容器内的进程和容器内的线程中的至少一种,该多个被监控对象中的每一个被监控对象具有唯一的标识,大大减少了现有技术的监控过程中对资源(如线程和socket端口的数量)的消耗,也解决了出于对线程和端口资源的考虑现有技术中只能对容器进行粗粒度的监控,从而无法满足对容器监控需求的问题,使得对轻量级虚拟化***可以从容器、进程、线程甚至管理器和主监控器的多维度的监控,并使这种多维度监控同样适用在现在越来越多的密集容器分布的场景中,进一步的,主监控器可以根据有关该多个被监控对象的配置信息对该多个被监控对象进行一些操作,从而使被监控对象上报监控信息给主监控器,主监控器再使管理器对服务状态异常的被监控对象进行处理,从而提供了一整套的针对提高轻量级虚拟化的容器技术的可靠性和可服务性的解决方案,可以更好地满足该应用场景下对定制化细粒度的监控和异常处理的要求。
图5所示的是本发明实施例中一种物理机500的结构示意图,
所述物理机500包括接收模块501和主监控模块503,所述物理机500上运行多个被监控对象,所述接收模块501用于提供所述多个被监控对象上报监控信息的通道,所述通道被所述多个被监控对象用于向所述主监控模块503上报所述监控信息,所述主监控模块503用于通过所述接收模块501接收所述监控信息,其中,所述多个被监控对象中相同类型的被监控对象的监控信息是采用相同的通道上报的,所述多个被监控对象的类型包括容器、容器内的进程和容器内的线程中的至少一种,所述多个被监控对象中的每一个被监控对象都具有唯一的标识,所述每一个被监控对象的监控信息包括心跳信息和服务质量报告中的至少一种,所述心跳信息表示上报所述心跳信息的被监控对象在心跳周期内的运行状态,所述服务质量报告用于记载上报所述服务质量报告的被监控对象承载的应用的服务质量QoS;
所述主监控模块503还用于根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态。
例如在图5中示意的,多个被监控对象可以包括如被监控对象L(如线程)、被监控对象M(如进程)和被监控对象N(如容器)等,还可以包括未标明的关联被监控对象,图5只做示意性表示。
上述的物理机500,可以监控运行在其上的多种被监控对象的服务状态,其中,主监控模块503向多个被监控对象推送所述多个被监控对象各自的监控信息的上报方式,该多个被监控对象包括容器、容器内的进程和容器内的线程中的至少一个类型,通过该多个被监控对象上报的监控信息确定该多个被监控对象的服务状态,在这个过程中,相同种类的被监控对象采用相同的通道上报监控信息,减少了现有技术的监控过程中对资源的消耗,进一步解决了由于资源消耗大,现有技术中只对容器进行粗粒度的监控,从而无法满足对容器的多维度监控的需求的问题,使得可以从容器、容器内进程和容器内线程的多个维度对容器进行监控,并使这种多维度监控同样适用在容器密集部署的场景中。具体的,在所述根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态的方面,所述主监控模块503用于通过所述多个被监控对象的监控信息所在的数据区与所述标识的对应关系,确定上报所述监控信息的所述多个被监控对象各自的服务状态,所述数据区包括堆和栈中的至少一种。
进一步的,在所述根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态的方面,所述主监控模块503用于通过所述多个被监控对象的监控信息所在的数据区与所述多个被监控对象的标识间的对应关系,确定上报所述监控信息的所述多个被监控对象各自的服务状态,所述数据区是上报所述监控信息的所述多个被监控对象的数据区,所述数据区包括堆和栈中的至少一种。
具体的,所述通道为文件或者进程间的通信连接。
可选的,所述通道为Proc文件***,在所述通过所述接收模块501接收所述监控信息的方面,所述主监控模块503用于通过所述接收模块501接收所述多个被监控对象通过Proc文件***中的一个或多个文件上报的各自的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享所述Proc文件***中的同一个文件,以用于所述监控信息的上报。
可选的,所述通道为设备文件,在所述通过所述接收模块501接收所述监控信息的方面,所述主监控模块503用于通过所述接收模块501接收所述多个被监控对象通过一个或多个设备文件上报的各自的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享同一个设备文件,以用于所述监控信息的上报。
可选的,所述通道为Socket通信连接,在所述通过所述接收模块501接收所述监控信息的方面,所述主监控模块503用于通过所述接收模块501接收所述多个被监控对象通过一个或多个Socket通信连接上报的各自的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享同一个Socket通信连接的地址以用于所述监控信息的上报。
可选的,所述通道为进程间通信通道IPC,所述多个被监控对象包括线程和进程中的至少一种,每个所述多个被监控对象所在的容器包括一监控线程,其中,在所述通过所述接收模块501接收所述监控信息的方面,所述主监控模块503用于通过所述接收模块501接收所述多个被监控对象通过各自对应的监控线程上报的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享同一个IPC与所述主监控器通信,以用于所述监控信息的上报。
可选的,所述监控信息为所述心跳信息,所述主监控模块503还用于确定所述多个被监控对象的配置信息,所述多个被监控对象的配置信息包括所述多个被监控对象的身份信息、心跳信息上报方式和所述心跳周期,所述多个被监控对象的身份信息包括所述多个被监控对象的标识,所述心跳信息上报方式指示所述通道的类型,所述心跳周期表示被监控对象在运行正常情况下上报心跳信息的时间间隔;
所述主监控模块503还用于向所述多个被监控对象推送各自的心跳信息上报方式,所述多个被监控对象是由所述身份信息中的标识确定的;
相应的,在所述通过所述接收模块501接收所述监控信息的方面,
所述主监控模块503用于通过所述接收模块501获得所述多个被监控对象各自上报的心跳信息,所述心跳信息是根据各自对应的心跳信息上报方式上报的;
相应的,在根据根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态的方面,
所述主监控模块503用于根据所述多个被监控对象的所述心跳周期和所述心跳信息,确定所述多个被监控对象各自的运行状态。
进一步的,所述多个被监控对象的配置信息还包括所述多个被监控对象运行异常情况下的处理策略,所述身份信息还包括所述多个被监控对象的从属关系和配合关系中的至少一种,所述物理机还包括管理模块505,
所述主监控模块503还用于根据所述运行异常情况下的处理策略确定所述多个被监控对象中运行异常的被监控对象和关联被监控对象的处理动作,所述关联被监控对象与所述运行异常的被监控对象中的至少一个具有从属关系或者配合关系;
所述管理模块505用于根据所述身份信息和所述处理动作对所述多个被监控对象中运行异常的被监控对象和关联被监控对象进行处理。
可选的,所述监控信息为所述服务质量报告,相应的,
所述主监控模块503还用于确定所述多个被监控对象的配置信息,所述多个被监控对象的配置信息包括所述多个被监控对象的身份信息、服务质量报告上报方式和服务质量要求,所述多个被监控对象的身份信息包括所述多个被监控对象的标识,所述服务质量报告上报方式指示所述通道的类型,所述服务质量要求用于确定所述多个被监控对象承载的应用的QoS是否合格;
所述主监控模块503还用于向所述多个被监控对象推送各自的服务质量报告上报方式,所述多个被监控对象是由所述身份信息中的标识确定的;
相应的,在所述通过所述接收模块501接收所述监控信息的方面,
所述主监控模块503用于通过所述接收模块501获得所述多个被监控对象各自上报的服务质量报告,所述服务质量报告是根据各自对应的服务质量报告上报方式上报的;
相应的,在根据根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态的方面,所述主监控模块503用于根据所述多个被监控对象的服务质量要求和所述服务质量报告确定所述多个被监控对象各自承载的应用的服务质量是否合格。
进一步的,所述多个被监控对象的配置信息还包括服务质量不合格的情况下的处理策略,所述身份信息还包括包括所述多个被监控对象的从属关系和配合关系中的至少一种,所述物理机还包括管理模块505,
所述主监控模块503还用于根据所述服务质量不合格的情况下的处理策略确定所述多个被监控对象中服务质量不合格的被监控对象和关联被监控对象的处理动作,所述关联被监控对象与所述服务质量不合格的被监控对象中的至少一个具有从属关系或者配合关系;
所述管理模块505用于根据所述身份信息和所述处理动作对所述多个被监控对象中服务质量不合格的被监控对象和关联被监控对象进行处理。
需要说明的是,上述监控信息可以包括所述心跳信息和服务质量报告,在这种情况下,相应的主监控模块503执行的步骤和配置信息的内容请参见分别说明的情况,这里不再赘述。
可选的,所述物理机还包括发送模块506,所述发送模块506用于向管理服务器发送处理指令,所述处理指令包括处理动作和待处理的被监控对象的标识,所述处理指令被所述管理服务器用于将所述待处理的被监控对象对应的应用部署到其他至少一台物理机上,所述处理动作是所述主监控器根据所述多个被监控对象的服务状态和服务状态异常的情况下的处理策略确定的。
可选的,所述物理机还包括备监控模块507,
所述主监控模块503还用于在所述主监控器未在第一配置时长内收到所述备监控模块507的心跳信息的情况下,所述主监控模块503触发所述备监控模块507退出运行状态以便所述被监控器重新被启动,所述备监控模块507的心跳信息表示所述备监控模块507在一时间周期内运行正常;
在所述备监控模块507未在第二配置时长内收到所述主监控模块503的心跳信息的情况下,所述备监控模块507触发所述主监控模块503退出运行状态,所述备监控模块507接管所述被监控对象使所述备监控模块507为当前的主监控模块503,所述主监控模块503所在的物理机重新启动所述主监控模块503使所述主监控模块503为当前的备监控模块507,所述主监控模块503的心跳信息表示所述主监控模块503在一时间周期内运行正常。
可选的,所述物理机500还可以包括容器配置下发器509,用于向主监控器501下发所述多个被监控对象的配置信息,有关容器配置下发器509和配置信息的相关叙述,请参照对应的方法实施例。注意,图5中虚线框的各模块都是可选模块。
需要说明的是,有关图5和下文中图7对应第一个的装置实施例中的内容的解释说明,请参照其对应的方法实施例中的相关叙述(图2到图4对应的),此处不再赘述。另一方面,图5中各个组成部分的连接关系只是示意性表述,并不对实施例造成限制。上述图5对应的物理机,可以监控运行在其上的多种被监控对象的服务状态,并对其中服务状态异常的被监控对象根据处理策略进行处理,其中,主监控模块向多个被监控对象推送所述多个被监控对象各自的监控信息的上报方式,该多个被监控对象包括容器、容器内的进程和容器内的线程中的至少一个类型,该多个被监控对象中的每一个被监控对象具有唯一的标识,该多个被监控对象中相同的类型采用相同的文件模式或者通道上报监控信息,大大减少了现有技术的监控过程中对资源(如线程和socket端口的数量)的消耗,进一步解决了由于资源消耗大,现有技术中只对容器进行粗粒度的监控,从而无法满足对容器的多维度监控的需求的问题,使得可以从容器、容器内进程和容器内线程的多个维度对容器进行监控,并使这种多维度监控同样适用在容器密集部署的场景中。进一步的,主监控器可以根据有关该多个被监控对象的配置信息对该多个被监控对象进行一些操作,从而使被监控对象上报监控信息给主监控器,主监控器再使管理器对服务状态异常的被监控对象进行处理,从而提供了一整套的针对提高轻量级虚拟化的容器技术的可靠性和可服务性的解决方案,可以更好地满足该应用场景下对定制化细粒度的监控和异常处理的要求。
图6所示的是本发明实施例中另一种物理机600的装置示意图,所述物理机上运行多个被监控对象,所述物理机包括主监控模块601,所述主监控模块601用于所述主监控模块通过检测所述多个被监控对象的指令执行信息,确定所述多个被监控对象的服务状态,所述指令具有指定的地址,其中,所述服务状态包括运行状态和服务质量中的至少一种。
具体的,所述多个被监控对象中的每一个被监控对象具有唯一的标识,在所述主监控模块601通过检测所述多个被监控对象的指令执行信息,确定所述多个被监控对象的服务状态的方面,所述主监控模块601用于通过存储所述指令执行信息的数据区与所述多个被监控对象的标识间的对应关系,确定所述多个被监控对象各自的服务状态,所述数据区是上报所述监控信息的所述多个被监控对象的数据区,所述数据区包括堆和栈中的至少一种。
例如在图6中示意的,多个被监控对象可以包括如被监控对象X(如线程)、被监控对象Y(如进程)和被监控对象Z(如容器)等,还可以包括未标明的关联被监控对象,图6只做示意性表示。
上述的物理机600,可以监控运行在其上的多种被监控对象的服务状态,其中,该主监控模块601通过指定的指令执行信息确定多个被监控对象的服务状态,该多个被监控对象包括容器、容器内的进程和容器内的线程中的至少一个类型,大大减少了现有技术的监控过程中对线程和socket端口的数量的消耗,也解决了出于对线程和端口资源的考虑现有技术中只能对容器进行粗粒度的监控,从而无法满足对容器监控需求的问题,使得对容器可以从容器、进程和线程的多维度的监控,并使这种多维度监控同样适用在现在越来越多的密集容器分布的场景中。
可选的,在服务状态为所述运行状态的情况下,所述物理机600还包括管理模块603,上述方法还包括:
所述主监控模块601用于确定所述多个被监控对象的身份信息和运行异常情况下的处理策略,所述多个被监控对象的身份信息包括所述多个被监控对象的从属关系和配合关系中的至少一种和所述多个被监控对象的标识;
所述主监控模块601用于根据所述多个被监控对象的身份信息、所述运行状态和所述运行异常情况下的处理策略,确定对运行异常的被监控对象和关联被监控对象的处理动作,所述关联被监控对象与所述运行异常的被监控对象中的至少一个具有从属关系或者配合关系;
所述管理模块603用于根据所述处理动作对所述多个被监控对象中运行异常的被监控对象和关联被监控对象进行处理。
可选的,在所述服务状态为所述服务质量的情况下,所述物理机600还包括管理模块603,上述方法还包括:
所述主监控模块601用于确定所述多个被监控对象的身份信息和服务质量不合格的情况下的处理策略,所述多个被监控对象的身份信息包括所述多个被监控对象的从属关系和配合关系中的至少一种和所述多个被监控对象的标识;
所述主监控模块601用于根据所述多个被监控对象的身份信息、所述服务质量和所述服务质量不合格的情况下的处理策略,确定对服务质量不合格的被监控对象和关联被监控对象的处理动作,所述关联被监控对象与所述服务不合格的被监控对象中的至少一个具有从属关系或者配合关系;
所述管理模块603用于根据所述处理动作对所述多个被监控对象中服务不合格的被监控对象和关联被监控对象进行处理。
可选的,所述物理机600还包括发送模块604,所述发送模块604用于向管理服务模块发送处理指令,所述处理指令包括处理动作和待处理的被监控对象的标识,所述处理指令被所述管理服务模块用于将所述待处理的被监控对象对应的应用部署到其他至少一台物理机上,所述处理动作是所述主监控模块601根据所述多个被监控对象的服务状态和服务状态异常的情况下的处理策略确定的。
可选的,所述物理机600还包括备监控模块605,在所述主监控模块601未在第一配置时长内收到所述备监控模块605的心跳信息的情况下,所述主监控模块601还用于使所述备监控模块605退出运行状态以便于所述物理机600重启所述备监控模块605,所述备监控模块605的心跳信息表示所述备监控模块605在一段时间内运行正常;
在所述备监控模块605未在第二配置时长内收到所述主监控模块601的心跳信息的情况下,所述备监控模块605用于使所述主监控模块601退出运行状态,以及接管所述被监控对象使所述备监控模块605为当前的主监控模块601,以便于所述物理机600重新启动所述主监控模块601使所述主监控模块601为当前的备监控模块605,所述主监控模块601的心跳信息表示所述主监控模块601在一段时间内运行正常。
可选的,所述物理机600还可以包括容器配置下发模块607,用于向主监控模块601下发所述多个被监控对象602的配置信息,有关容器配置下发模块607和配置信息的相关叙述,请参照对应的方法实施例。注意,图6中虚线框的各模块都是可选模块。
需要说明的是,图5和图6对应的实施例中所提到的各种模块,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成为一个模块,例如可以是能够实现相应功能的一个或多个线程,或者可以是能够实现相应功能的一个或多个进程,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
需要说明的是,有关图6和图7对应的第二个的装置实施例中的内容的解释说明,请参照其对应的方法实施例中的相关叙述,此处不再赘述。另一方面,图6中各个组成部分的连接关系只是示意性表述,并不对实施例造成限制。
上述图6对应的实施例中的物理机,其中,该主监控器通过指定的指令执行信息确定多个被监控对象的服务状态,该多个被监控对象的类型包括容器、容器内的进程和容器内的线程中的至少一种,该多个被监控对象中的每一个被监控对象具有唯一的标识,大大减少了现有技术的监控过程中对资源(如线程和socket端口的数量)的消耗,也解决了出于对线程和端口资源的考虑现有技术中只能对容器进行粗粒度的监控,从而无法满足对容器监控需求的问题,使得对轻量级虚拟化***可以从容器、进程、线程甚至管理器和主监控器的多维度的监控,并使这种多维度监控同样适用在现在越来越多的密集容器分布的场景中,进一步的,主监控器可以根据有关该多个被监控对象的配置信息对该多个被监控对象进行一些操作,从而使被监控对象上报监控信息给主监控器,主监控器再使管理器对服务状态异常的被监控对象进行处理,从而提供了一整套的针对提高轻量级虚拟化的容器技术的可靠性和可服务性的解决方案,可以更好地满足该应用场景下对定制化细粒度的监控和异常处理的要求。
图7是本发明实施例提供的又一种物理机的结构示意图。该物理机可以是服务器,个人电脑(PC)等。该物理机700可包括硬件层,具体可以包括输入/输出(I/O,Input/Output)设备701(比如:网卡)、处理器702、存储器703以及总线705。具体的,处理器702可以是多核的。以及运行于所述硬件层之上的操作***OS,所述OS上运行有多个被监控对象和主监控器,所述多个被监控对象的类型包括容器、容器内的进程和容器内的线程中的至少一种。可选的,该OS上还运行有管理器和备监控器中的至少一种。
存储器703可以包括只读存储器和随机存取存储器,并向处理器702提供指令和数据。存储器703的一部分还可以包括非易失性随机存取存储器(NVRAM)。
存储器703存储了如下的元素,可执行模块或者数据结构,或者它们的子集,或者它们的扩展集:
操作指令:包括各种操作指令,用于实现各种操作。
操作***:包括各种***程序,用于实现各种基础业务以及处理基于硬件的任务。
在一些实施方式中,存储器703存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集,在一些实施方式中,存储器703存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集,比如为了保证硬件的兼容性,在一些实施方式中以下提到的被监控对象、主监控器、备监控器、管理器和容器配置下发器中的一种或多种都是可以安装在虚拟机上的;当然在另一些实现方式中,以下提到的被监控对象、主监控器、备监控器、管理器和容器配置下发器中的一种或多种都是可以安装在宿主机上的,本发明实施例不做限定。另外,上文中提到的主监控器、备监控器、管理器和容器配置下发器在图7实施例中都可以理解为物理机的线程或者进程,其数据存储在存储器703内,处理器702调用这些数据执行该线程或进程对应的指令。
宿主机7031:作为管理层,用以完成硬件资源的管理、分配;为虚拟机呈现虚拟硬件平台;实现虚拟机的调度和隔离。其中,Host可能是虚拟机监控器(VMM);此外,有时VMM和1个特权虚拟机配合,两者结合组成Host。其中,虚拟硬件平台对其上运行的各个虚拟机提供各种硬件资源,如提供虚拟处理器、内存、虚拟磁盘、虚拟网卡等等。其中,该虚拟磁盘可对应Host的一个文件或者一个逻辑块设备。虚拟机则运行在Host为其准备的虚拟硬件平台上,Host上运行一个或多个虚拟机。
虚拟机7032:通过虚拟机软件可以在一台物理物理机上模拟出一台或者多台虚拟的物理机,而这些虚拟机就像真正的物理机那样进行工作,虚拟机上可以安装操作***和应用程序,虚拟机还可访问网络资源。对于在虚拟机中运行的应用程序而言,虚拟机就像是在真正的物理机中进行工作。
在图7对应的一个实施例中,处理器702通过调用存储器703存储的操作指令(该操作指令可存储在操作***中)使主监控器执行如下操作:
获得所述多个被监控对象各自上报的监控信息,其中,所述多个被监控对象中相同类型的被监控对象的监控信息是采用相同的通道上报的,所述多个被监控对象中的每一个被监控对象都具有唯一的标识,所述每一个被监控对象的监控信息包括心跳信息和服务质量报告中的至少一种,所述心跳信息表示上报所述心跳信息的被监控对象在心跳周期内的运行状态,所述服务质量报告用于记载上报所述服务质量报告的被监控对象承载的应用的服务质量QoS;
以及根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态。
需要说明的是,这个实施例可以认为是图5对应的实施例的一种具体实现方式,其中,主监控模块,接收模块,管理模块以及备监控模块是处理器702通过调用存储器703存储的操作指令来实现的,发送模块的硬件部分对应I/O设备701,通过处理器702调用存储器703存储的相关操作指令来实现其功能。可选的,在所述主监控器根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态的方面,处理器702可以通过调用存储器703存储的操作指令(该操作指令可存储在操作***中),使主监控器执行如下操作:通过所述多个被监控对象的监控信息所在的数据区与所述多个被监控对象的标识间的对应关系,确定上报所述监控信息的所述多个被监控对象各自的服务状态,所述数据区是上报所述监控信息的所述多个被监控对象的数据区,所述数据区包括堆和栈中的至少一种。
具体的,所述通道为文件或者进程间的通信连接。
可选的,所述通道为Proc文件***,在获得所述多个被监控对象各自上报的监控信息的方面,处理器702可以通过调用存储器703存储的操作指令(该操作指令可存储在操作***中),使主监控器执行如下操作:接收所述多个被监控对象通过Proc文件***中的一个或多个文件上报的各自的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享所述Proc文件***中的同一个文件,以用于所述监控信息的上报。
可选的,所述通道为设备文件,在所述获得所述多个被监控对象各自上报的监控信息的方面,处理器702可以通过调用存储器703存储的操作指令(该操作指令可存储在操作***中),使主监控器执行如下操作:接收所述多个被监控对象通过一个或多个设备文件上报的各自的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享同一个设备文件,以用于所述监控信息的上报。
可选的,所述通道为Socket通信连接,在所述获得所述多个被监控对象各自上报的监控信息的方面,处理器702可以通过调用存储器703存储的操作指令(该操作指令可存储在操作***中),使主监控器执行如下操作:接收所述多个被监控对象通过一个或多个Socket通信连接上报的各自的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享同一个Socket通信连接的地址,以用于所述监控信息的上报。
可选的,所述通道为进程间通信通道IPC,所述多个被监控对象包括线程和进程中的至少一种,每个所述多个被监控对象所在的容器包括一监控线程,其中,在所述获得所述多个被监控对象各自上报的监控信息的方面,处理器702可以通过调用存储器703存储的操作指令(该操作指令可存储在操作***中),使主监控器执行如下操作:接收所述多个被监控对象通过各自对应的监控线程上报的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享同一个IPC与所述主监控器通信,以用于所述监控信息的上报。
可选的,所述监控信息为所述心跳信息,处理器702可以通过调用存储器703存储的操作指令(该操作指令可存储在操作***中)使主监控器执行如下操作:确定所述多个被监控对象的配置信息,所述多个被监控对象的配置信息包括所述多个被监控对象的身份信息、心跳信息上报方式和所述心跳周期,所述多个被监控对象的身份信息包括所述多个被监控对象的标识,所述心跳信息上报方式指示所述通道的类型,所述心跳周期表示被监控对象在运行正常情况下上报心跳信息的时间间隔;向所述多个被监控对象推送各自的心跳信息上报方式,所述多个被监控对象是由所述身份信息中的标识确定的;
相应的,在获得所述多个被监控对象各自上报的监控信息的方面,处理器702可以通过调用存储器703存储的操作指令(该操作指令可存储在操作***中),使主监控器执行如下操作:获得所述多个被监控对象各自上报的心跳信息,所述心跳信息是根据各自对应的心跳信息上报方式上报的;
相应的,在根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态的方面,处理器702可以通过调用存储器703存储的操作指令(该操作指令可存储在操作***中),使主监控器执行如下操作:根据所述多个被监控对象的所述心跳周期和所述心跳信息,确定所述多个被监控对象各自的运行状态。
进一步的,所述多个被监控对象的配置信息还包括所述多个被监控对象运行异常情况下的处理策略,所述身份信息还包括所述多个被监控对象的从属关系和配合关系中的至少一种,所述操作***上还运行有管理器,处理器702可以通过调用存储器703存储的操作指令(该操作指令可存储在操作***中),使操作***中的主监控器执行如下操作:根据所述运行异常情况下的处理策略确定所述多个被监控对象中运行异常的被监控对象和关联被监控对象的处理动作,所述关联被监控对象与所述运行异常的被监控对象中的至少一个具有从属关系或者配合关系;
以及使操作***中的管理器执行如下操作:根据所述身份信息和所述处理动作对所述多个被监控对象中运行异常的被监控对象和关联被监控对象进行处理。
另一方面,所述监控信息为所述服务质量报告,处理器702可以通过调用存储器703存储的操作指令(该操作指令可存储在操作***中),使主监控器还执行如下操作:确定所述多个被监控对象的配置信息,所述多个被监控对象的配置信息包括所述多个被监控对象的身份信息、服务质量报告上报方式和服务质量要求,所述多个被监控对象的身份信息包括所述多个被监控对象的标识,所述服务质量报告上报方式指示所述通道的类型,所述服务质量要求用于确定所述多个被监控对象承载的应用的QoS是否合格;向所述多个被监控对象推送各自的服务质量报告上报方式,所述多个被监控对象是由所述身份信息中的标识确定的;
相应的,在获得所述多个被监控对象各自上报的监控信息的方面,处理器702可以通过调用存储器703存储的操作指令(该操作指令可存储在操作***中),使主监控器执行如下操作:获得所述多个被监控对象各自上报的服务质量报告,所述服务质量报告是根据各自对应的服务质量报告上报方式上报的;
相应的,在根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态的方面,处理器702可以通过调用存储器703存储的操作指令(该操作指令可存储在操作***中),使主监控器执行如下操作:根据所述多个被监控对象的服务质量要求和所述服务质量报告确定所述多个被监控对象各自承载的应用的服务质量是否合格。
进一步的,所述多个被监控对象的配置信息还包括服务质量不合格的情况下的处理策略,所述身份信息还包括所述多个被监控对象的从属关系和配合关系中的至少一种,处理器702可以通过调用存储器703存储的操作指令(该操作指令可存储在操作***中),使该主监控器执行如下操作:根据所述服务质量不合格的情况下的处理策略确定所述多个被监控对象中服务质量不合格的被监控对象和关联被监控对象的处理动作,所述关联被监控对象与所述服务质量不合格的被监控对象中的至少一个具有从属关系或者配合关系;
所述操作***上还运行有管理器,处理器702可以通过调用存储器703存储的操作指令(该操作指令可存储在操作***中),使该管理器执行如下操作:根据所述身份信息和所述处理动作对所述多个被监控对象中服务质量不合格的被监控对象和关联被监控对象进行处理。
所述I/O设备用于向管理服务器发送处理指令,所述处理指令包括处理动作和待处理的被监控对象的标识,所述处理指令被所述管理服务器用于将所述待处理的被监控对象所承载的应用部署到其他至少一台物理机上,所述处理动作是所述主监控器根据所述多个被监控对象的服务状态和服务状态异常的情况下的处理策略确定的。
可选的,处理器702可以通过调用存储器703存储的操作指令(该操作指令可存储在操作***中),使该主监控器执行如下操作:在所述主监控器未在第一配置时长内收到所述备监控器的心跳信息的情况下,触发所述备监控器退出运行状态以便所述被监控器重新被启动,所述备监控器的心跳信息表示所述备监控器在一时间周期内运行正常;
所述操作***上还运行有备监控器,处理器702可以通过调用存储器703存储的操作指令(该操作指令可存储在操作***中),使该备监控器执行如下操作:在所述备监控器未在第二配置时长内收到所述主监控器的心跳信息的情况下,触发所述主监控器退出运行状态,所述备监控器接管所述被监控对象使所述备监控器为当前的主监控器,所述主监控器所在的物理机重新启动所述主监控器使所述主监控器为当前的备监控器,所述主监控器的心跳信息表示所述主监控器在一时间周期内运行正常。
上述的物理机,可以监控运行在该物理机的操作***上的多种被监控对象的服务状态,并对其中服务状态异常的被监控对象根据处理策略进行处理,其中,该多个被监控对象包括容器、容器内的进程和容器内的线程中的至少一个类型,该多个被监控对象中的每一个被监控对象具有唯一的标识,该多个被监控对象中相同的类型采用相同的文件模式或者通道上报监控信息,大大减少了现有技术的监控过程中对资源(如线程和socket端口的数量)的消耗,也解决了出于对资源的考虑现有技术中只能对容器进行粗粒度的监控,从而无法满足对容器监控需求的问题,使得对轻量级虚拟化***可以从容器、进程、线程甚至管理器和主监控器的多维度的监控,并使这种多维度监控同样适用在现在越来越多的密集容器分布的场景中,进一步的,主监控器可以根据有关该多个被监控对象的配置信息对该多个被监控对象进行一些操作,从而使被监控对象上报监控信息给主监控器,主监控器再使管理器对服务状态异常的被监控对象进行处理,从而提供了一整套的针对提高轻量级虚拟化的容器技术的可靠性和可服务性的解决方案,可以更好地满足该应用场景下对定制化细粒度的监控和异常处理的要求。
在图7对应的另一个实施例中,处理器702通过调用存储器703存储的操作指令(该操作指令可存储在操作***中)使主监控器执行如下操作:通过检测所述多个被监控对象的指令执行信息,确定所述多个被监控对象的服务状态,所述指令具有指定的地址,其中,所述服务状态包括运行状态和服务质量中的至少一种。
具体的,所述多个被监控对象中的每一个被监控对象具有唯一的标识,在所述主监控器通过检测所述多个被监控对象的指令执行信息,确定所述多个被监控对象的服务状态的方面,处理器702通过调用存储器703存储的操作指令(该操作指令可存储在操作***中)使主监控器执行如下操作:所述主监控器通过存储所述指令执行信息的数据区与所述多个被监控对象的标识间的对应关系,确定所述多个被监控对象各自的服务状态,所述数据区是上报所述监控信息的所述多个被监控对象的数据区,所述数据区包括堆和栈中的至少一种。
该实现方式中的物理机,其中,该主监控器通过指定的指令执行信息确定多个被监控对象的服务状态,该多个被监控对象的类型包括容器、容器内的进程和容器内的线程中的至少一个类型,大大减少了现有技术的监控过程中对资源(如线程和socket端口的数量)的消耗,减少了现有技术的监控过程中对资源的消耗,也解决了出于对线程和端口资源的考虑现有技术中只能对容器进行粗粒度的监控,从而无法满足对容器监控需求的问题,使得对容器可以从容器、进程和线程的多维度的监控,并使这种多维度监控同样适用在容器密集部署的场景中。
可选的,在服务状态为所述运行状态的情况下,处理器702可以通过调用存储器703存储的操作指令(该操作指令可存储在操作***中),使主监控器还执行如下操作:确定所述多个被监控对象的身份信息和运行异常情况下的处理策略,所述多个被监控对象的身份信息包括所述多个被监控对象的从属关系和配合关系中的至少一种和所述多个被监控对象的标识;根据所述多个被监控对象的身份信息、所述运行状态和所述运行异常情况下的处理策略,确定对运行异常的被监控对象和关联被监控对象的处理动作,所述关联被监控对象与所述运行异常的被监控对象中的至少一个具有从属关系或者配合关系;
以及,物理机的操作***中还运行有管理器,处理器702可以通过调用存储器703存储的操作指令(该操作指令可存储在操作***中),使该管理器还执行如下操作:根据所述处理动作对所述多个被监控对象中运行异常的被监控对象和关联被监控对象进行处理。
可选的,在所述服务状态为所述服务质量的情况下,处理器702可以通过调用存储器703存储的操作指令(该操作指令可存储在操作***中),使该主监控器还执行如下操作:确定所述多个被监控对象的身份信息和服务质量不合格的情况下的处理策略,所述多个被监控对象的身份信息包括所述多个被监控对象的从属关系和配合关系中的至少一种和所述多个被监控对象的标识;根据所述多个被监控对象的身份信息、所述服务质量和所述服务质量不合格的情况下的处理策略,确定对服务质量不合格的被监控对象和关联被监控对象的处理动作,所述关联被监控对象与所述服务不合格的被监控对象中的至少一个具有从属关系或者配合关系;
以及,物理机的操作***中还运行有管理器,处理器702可以通过调用存储器703存储的操作指令(该操作指令可存储在操作***中),使该管理器还执行如下操作:根据所述处理动作对所述多个被监控对象中服务不合格的被监控对象和关联被监控对象进行处理。
所述I/O设备用于向管理服务器发送处理指令,所述处理指令包括处理动作和待处理的被监控对象的标识,所述处理指令被所述管理服务器用于将所述待处理的被监控对象所承载的应用部署到其他至少一台物理机上,所述处理动作是所述主监控器根据所述多个被监控对象的服务状态和服务状态异常的情况下的处理策略确定的。
可选的,处理器702可以通过调用存储器703存储的操作指令(该操作指令可存储在操作***中),使该主监控器执行如下操作:在所述主监控器未在第一配置时长内收到所述备监控器的心跳信息的情况下,触发所述备监控器退出运行状态以便所述被监控器重新被启动,所述备监控器的心跳信息表示所述备监控器在一时间周期内运行正常;
所述操作***上还运行有备监控器,处理器702可以通过调用存储器703存储的操作指令(该操作指令可存储在操作***中),使该备监控器执行如下操作:在所述备监控器未在第二配置时长内收到所述主监控器的心跳信息的情况下,触发所述主监控器退出运行状态,所述备监控器接管所述被监控对象使所述备监控器为当前的主监控器,所述主监控器所在的物理机重新启动所述主监控器使所述主监控器为当前的备监控器,所述主监控器的心跳信息表示所述主监控器在一时间周期内运行正常。
上述实施例中的物理机,通过指定的指令执行信息确定多个被监控对象的服务状态,该多个被监控对象的类型包括容器、容器内的进程和容器内的线程中的至少一种,该多个被监控对象中的每一个被监控对象具有唯一的标识,大大减少了现有技术的监控过程中对资源(如线程和socket端口的数量)的消耗,也解决了出于对线程和端口资源的考虑现有技术中只能对容器进行粗粒度的监控,从而无法满足对容器监控需求的问题,使得对轻量级虚拟化***可以从容器、进程、线程甚至管理器和主监控器的多维度的监控,并使这种多维度监控同样适用在现在越来越多的密集容器分布的场景中,进一步的,主监控器可以根据有关该多个被监控对象的配置信息对该多个被监控对象进行一些操作,从而使被监控对象上报监控信息给主监控器,主监控器再使管理器对服务状态异常的被监控对象进行处理,从而提供了一整套的针对提高轻量级虚拟化的容器技术的可靠性和可服务性的解决方案,可以更好地满足该应用场景下对定制化细粒度的监控和异常处理的要求。
图7的对应的实施例中,处理器702控制物理机700的操作,处理器702还可以称为CPU(Central Processing Unit,中央处理单元)。存储器703可以包括只读存储器和随机存取存储器,并向处理器702提供指令和数据。存储器703的一部分还可以包括非易失性随机存取存储器(NVRAM)。具体的应用中,物理机700的各个组件通过总线***705耦合在一起,其中总线***705除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线***705。为便于表示,图7中仅用一条粗线表示,但并不表示总线***705仅有一根总线或一种类型的总线。
上述本发明实施例揭示的方法可以应用于处理器702中,或者由处理器702实现。处理器702可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器702中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器702可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器703,处理器702读取存储器703中的信息,结合其硬件完成上述方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过物理机程序来指令相关的硬件(例如处理器)来完成,所述的程序可存储于一物理机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上为本发明实施例所提供的用于容器监控方法和装置,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (40)

1.一种容器监控方法,用于对物理机上运行的多个被监控对象进行监控,其特征在于,所述多个被监控对象的类型包括容器、容器内的进程和容器内的线程中的至少一种,所述物理机包括主监控器,所述监控方法包括:
所述主监控器获得所述多个被监控对象各自上报的监控信息,其中,所述多个被监控对象中相同类型的被监控对象的监控信息是采用相同的通道上报的,所述多个被监控对象中的每一个被监控对象都具有唯一的标识,所述每一个被监控对象的监控信息包括心跳信息和服务质量报告中的至少一种,所述心跳信息表示上报所述心跳信息的被监控对象在心跳周期内的运行状态,所述服务质量报告用于记载上报所述服务质量报告的被监控对象承载的应用的服务质量QoS;
所述主监控器根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态。
2.根据权利要求1所述的方法,其特征在于,所述主监控器根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态,包括:
所述主监控器通过所述多个被监控对象的监控信息所在的数据区与所述多个被监控对象的标识间的对应关系,确定上报所述监控信息的所述多个被监控对象各自的服务状态,所述数据区是上报所述监控信息的所述多个被监控对象的数据区,所述数据区包括堆和栈中的至少一种。
3.根据权利要求1或2所述的方法,其特征在于,所述通道为文件或者进程间的通信连接。
4.根据权利要求3所述的方法,其特征在于,所述通道为Proc文件***,所述主监控器接收所述多个被监控对象各自上报的监控信息包括:
所述主监控器接收所述多个被监控对象通过Proc文件***中的一个或多个文件上报的各自的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享所述Proc文件***中的同一个文件,以用于所述监控信息的上报。
5.根据权利要求3所述的方法,其特征在于,所述通道为设备文件,所述主监控器接收所述多个被监控对象各自上报的监控信息包括:
所述主监控器接收所述多个被监控对象通过一个或多个设备文件上报的各自的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享同一个设备文件,以用于所述监控信息的上报。
6.根据权利要求3所述的方法,其特征在于,所述通道为Socket通信连接,其中,所述主监控器接收所述多个被监控对象各自上报的监控信息包括:
所述主监控器接收所述多个被监控对象通过一个或多个Socket通信连接上报的各自的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享同一个Socket通信连接的地址,以用于所述监控信息的上报。
7.根据权利要求3所述的方法,其特征在于,所述通道为进程间通信通道IPC,所述多个被监控对象包括线程和进程中的至少一种,每个所述多个被监控对象所在的容器包括一监控线程,其中,所述主监控器接收所述多个被监控对象各自上报的监控信息包括:
所述主监控器接收所述多个被监控对象通过各自对应的监控线程上报的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享同一个IPC与所述主监控器通信,以用于所述监控信息的上报。
8.根据权利要求1所述的方法,其特征在于,所述监控信息为所述心跳信息,所述方法还包括:
所述主监控器确定所述多个被监控对象的配置信息,所述多个被监控对象的配置信息包括所述多个被监控对象的身份信息、心跳信息上报方式和所述心跳周期,所述多个被监控对象的身份信息包括所述多个被监控对象的标识,所述心跳信息上报方式指示所述通道的类型,所述心跳周期表示被监控对象在运行正常情况下上报心跳信息的时间间隔;
所述主监控器向所述多个被监控对象推送各自的心跳信息上报方式,所述多个被监控对象是由所述身份信息中的标识确定的;
相应的,所述主监控器获得所述多个被监控对象各自上报的监控信息,包括:
所述主监控器获得所述多个被监控对象各自上报的心跳信息,所述心跳信息是根据所述多个被监控对象各自对应的心跳信息上报方式上报的;
相应的,所述主监控器根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态,包括:
所述主监控器根据所述多个被监控对象的所述心跳周期和所述心跳信息,确定所述多个被监控对象各自的运行状态。
9.根据权利要求8所述的方法,其特征在于,所述多个被监控对象的配置信息还包括所述多个被监控对象运行异常情况下的处理策略,所述身份信息还包括所述多个被监控对象的从属关系和配合关系中的至少一种,所述物理机还包括管理器,所述方法还包括:
所述主监控器根据所述运行异常情况下的处理策略确定所述多个被监控对象中运行异常的被监控对象和关联被监控对象的处理动作,所述关联被监控对象与所述运行异常的被监控对象中的至少一个具有从属关系或者配合关系;
所述管理器根据所述处理动作对所述多个被监控对象中运行异常的被监控对象和关联被监控对象进行处理。
10.根据权利要求1所述的方法,其特征在于,所述监控信息为所述服务质量报告,所述方法还包括:
所述主监控器确定所述多个被监控对象的配置信息,所述多个被监控对象的配置信息包括所述多个被监控对象的身份信息、服务质量报告上报方式和服务质量要求,所述多个被监控对象的身份信息包括所述多个被监控对象的标识,所述服务质量报告上报方式指示所述通道的类型,所述服务质量要求用于确定所述多个被监控对象承载的应用的QoS是否合格;
所述主监控器向所述多个被监控对象推送各自的服务质量报告上报方式,所述多个被监控对象是由所述身份信息中的标识确定的;
相应的,所述主监控器获得所述多个被监控对象各自上报的监控信息,包括:
所述主监控器获得所述多个被监控对象各自上报的服务质量报告,所述服务质量报告是根据所述多个被监控对象各自对应的服务质量报告上报方式上报的;
相应的,所述主监控器根据根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态包括:
所述主监控器根据所述多个被监控对象的服务质量要求和所述服务质量报告确定所述多个被监控对象各自承载的应用的服务质量是否合格。
11.根据权利要求10所述的方法,其特征在于,所述多个被监控对象的配置信息还包括服务质量不合格的情况下的处理策略,所述身份信息还包括所述多个被监控对象的从属关系和配合关系中的至少一种,所述物理机还包括管理器,所述方法还包括:
所述主监控器根据所述服务质量不合格的情况下的处理策略确定所述多个被监控对象中服务质量不合格的被监控对象和关联被监控对象的处理动作,所述关联被监控对象与所述服务质量不合格的被监控对象中的至少一个具有从属关系或者配合关系;
所述管理器根据所述处理动作对所述多个被监控对象中服务质量不合格的被监控对象和关联被监控对象进行处理。
12.根据权利要求1所述的方法,其特征在于,所述物理机还包括发送模块,所述方法还包括:
所述发送模块向管理服务器发送处理指令,所述处理指令包括处理动作和待处理的被监控对象的标识,所述处理指令被所述管理服务器用于将所述待处理的被监控对象对应的应用部署到其他至少一台物理机上,所述处理动作是所述主监控器根据所述多个被监控对象的服务状态和服务状态异常的情况下的处理策略确定的。
13.根据权利要求1所述的方法,其特征在于,所述物理机还包括备监控器,所述方法还包括:
在所述主监控器未在第一配置时长内收到所述备监控器的心跳信息的情况下,所述主监控器触发所述备监控器退出运行状态以便所述被监控器重新被启动,所述备监控器的心跳信息表示所述备监控器在一时间周期内运行正常;
在所述备监控器未在第二配置时长内收到所述主监控器的心跳信息的情况下,所述备监控器触发所述主监控器退出运行状态,所述备监控器接管所述被监控对象使所述备监控器为当前的主监控器,所述主监控器所在的物理机重新启动所述主监控器使所述主监控器为当前的备监控器,所述主监控器的心跳信息表示所述主监控器在一时间周期内运行正常。
14.一种物理机,其特征在于,所述物理机包括接收模块和主监控模块,所述物理机上运行多个被监控对象,所述接收模块用于提供所述多个被监控对象上报监控信息的通道,所述通道被所述多个被监控对象用于向所述主监控模块上报所述监控信息,
所述主监控模块用于通过所述接收模块接收所述监控信息,其中,所述多个被监控对象中相同类型的被监控对象的监控信息是采用相同的通道上报的,所述多个被监控对象的类型包括容器、容器内的进程和容器内的线程中的至少一种,所述多个被监控对象中的每一个被监控对象都具有唯一的标识,所述每一个被监控对象的监控信息包括心跳信息和服务质量报告中的至少一种,所述心跳信息表示上报所述心跳信息的被监控对象在心跳周期内的运行状态,所述服务质量报告用于记载上报所述服务质量报告的被监控对象承载的应用的QoS;
所述主监控模块还用于根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态。
15.根据权利要求14所述的物理机,其特征在于,在所述根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态的方面,
所述主监控模块通过所述多个被监控对象的监控信息所在的数据区与所述多个被监控对象的标识间的对应关系,确定上报所述监控信息的所述多个被监控对象各自的服务状态,所述数据区是上报所述监控信息的所述多个被监控对象的数据区,所述数据区包括堆和栈中的至少一种。
16.根据权利要求14或15所述的物理机,其特征在于,所述通道为文件或者进程间的通信连接。
17.根据权利要求16所述的物理机,其特征在于,所述通道为Proc文件***,在所述通过所述接收模块接收所述监控信息的方面,所述主监控模块用于通过所述接收模块接收所述多个被监控对象通过Proc文件***中的一个或多个文件上报的各自的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享所述Proc文件***中的同一个文件,以用于所述监控信息的上报。
18.根据权利要求16所述的物理机,其特征在于,所述通道为设备文件,在所述通过所述接收模块接收所述监控信息的方面,所述主监控模块用于接收所述多个被监控对象通过一个或多个设备文件上报的各自的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享同一个设备文件,以用于所述监控信息的上报。
19.根据权利要求16所述的物理机,其特征在于,所述通道为Socket通信连接,在所述通过所述接收模块接收所述监控信息的方面,所述主监控模块用于通过所述接收模块接收所述多个被监控对象通过一个或多个Socket通信连接上报的各自的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享同一个Socket通信连接的地址,以用于所述监控信息的上报。
20.根据权利要求16所述的物理机,其特征在于,所述通道为进程间通信通道IPC,所述多个被监控对象包括线程和进程中的至少一种,每个所述多个被监控对象所在的容器包括一监控线程,其中,在所述通过所述接收模块接收所述监控信息的方面,所述主监控模块用于通过所述接收模块接收所述多个被监控对象通过各自对应的监控线程上报的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享同一个IPC与所述主监控器通信,以用于所述监控信息的上报。
21.根据权利要求14所述的物理机,其特征在于,所述监控信息为所述心跳信息,
所述主监控模块还用于确定所述多个被监控对象的配置信息,所述多个被监控对象的配置信息包括所述多个被监控对象的身份信息、心跳信息上报方式和所述心跳周期,所述多个被监控对象的身份信息包括所述多个被监控对象的标识,所述心跳信息上报方式指示所述通道的类型,所述心跳周期表示被监控对象在运行正常情况下上报心跳信息的时间间隔;
所述主监控模块还用于向所述多个被监控对象推送各自的心跳信息上报方式,所述多个被监控对象是由所述身份信息中的标识确定的;
相应的,在所述通过所述接收模块接收所述监控信息的方面,
所述主监控模块用于通过所述接收模块获得所述多个被监控对象各自上报的心跳信息,所述心跳信息是根据各自对应的心跳信息上报方式上报的;
相应的,在根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态的方面,
所述主监控模块用于根据所述多个被监控对象的所述心跳周期和所述心跳信息,确定所述多个被监控对象各自的运行状态。
22.根据权利要求21所述的物理机,其特征在于,所述多个被监控对象的配置信息还包括所述多个被监控对象运行异常情况下的处理策略,所述身份信息还包括所述多个被监控对象的从属关系和配合关系中的至少一种,所述物理机还包括管理模块,
所述主监控模块还用于根据所述运行异常情况下的处理策略确定所述多个被监控对象中运行异常的被监控对象和关联被监控对象的处理动作,所述关联被监控对象与所述运行异常的被监控对象中的至少一个具有从属关系或者配合关系;
所述管理模块用于根据所述身份信息和所述处理动作对所述多个被监控对象中运行异常的被监控对象和关联被监控对象进行处理。
23.根据权利要求14所述的物理机,其特征在于,所述监控信息为所述服务质量报告,相应的,
所述主监控模块还用于确定所述多个被监控对象的配置信息,所述多个被监控对象的配置信息包括所述多个被监控对象的身份信息、服务质量报告上报方式和服务质量要求,所述多个被监控对象的身份信息包括所述多个被监控对象的标识,所述服务质量报告上报方式指示所述通道的类型,所述服务质量要求用于确定所述多个被监控对象承载的应用的QoS是否合格;
所述主监控模块还用于向所述多个被监控对象推送各自的服务质量报告上报方式,所述多个被监控对象是由所述身份信息中的标识确定的;
相应的,在所述通过所述接收模块接收所述监控信息的方面,所述主监控模块用于通过所述接收模块获得所述多个被监控对象各自上报的服务质量报告,所述服务质量报告是根据各自对应的服务质量报告上报方式上报的;
相应的,在根据根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态的方面,所述主监控模块用于根据所述多个被监控对象的服务质量要求和所述服务质量报告确定所述多个被监控对象各自承载的应用的服务质量是否合格。
24.根据权利要求23所述的物理机,其特征在于,所述多个被监控对象的配置信息还包括服务质量不合格的情况下的处理策略,所述身份信息还包括包括所述多个被监控对象的从属关系和配合关系中的至少一种,所述物理机还包括管理模块,
所述主监控模块还用于根据所述服务质量不合格的情况下的处理策略确定所述多个被监控对象中服务质量不合格的被监控对象和关联被监控对象的处理动作,所述关联被监控对象与所述服务质量不合格的被监控对象中的至少一个具有从属关系或者配合关系;
所述管理模块用于根据所述身份信息和所述处理动作对所述多个被监控对象中服务质量不合格的被监控对象和关联被监控对象进行处理。
25.根据权利要求14所述的物理机,其特征在于,所述物理机还包括发送模块,
所述发送模块用于向管理服务器发送处理指令,所述处理指令包括处理动作和待处理的被监控对象的标识,所述处理指令被所述管理服务器用于将所述待处理的被监控对象对应的应用部署到其他至少一台物理机上,所述处理动作是所述主监控器根据所述多个被监控对象的服务状态和服务状态异常的情况下的处理策略确定的。
26.根据权利要求14所述的物理机,其特征在于,所述物理机还包括备监控模块,
所述主监控模块还用于在所述主监控器未在第一配置时长内收到所述备监控模块的心跳信息的情况下,所述主监控模块触发所述备监控模块退出运行状态以便所述被监控器重新被启动,所述备监控模块的心跳信息表示所述备监控模块在一时间周期内运行正常;
在所述备监控模块未在第二配置时长内收到所述主监控模块的心跳信息的情况下,所述备监控模块触发所述主监控模块退出运行状态,所述备监控模块接管所述被监控对象使所述备监控模块为当前的主监控模块,所述主监控模块所在的物理机重新启动所述主监控模块使所述主监控模块为当前的备监控模块,所述主监控模块的心跳信息表示所述主监控模块在一时间周期内运行正常。
27.一种物理机,包括硬件层,以及运行于所述硬件层之上的操作***OS,其特征在于,所述OS上运行有多个被监控对象和主监控器,所述多个被监控对象的类型包括容器、容器内的进程和容器内的线程中的至少一种,所述主监控器用于获得所述多个被监控对象各自上报的监控信息,其中,所述多个被监控对象中相同类型的被监控对象的监控信息是采用相同的通道上报的,所述多个被监控对象中的每一个被监控对象都具有唯一的标识,所述每一个被监控对象的监控信息包括心跳信息和服务质量报告中的至少一种,所述心跳信息表示上报所述心跳信息的被监控对象在心跳周期内的运行状态,所述服务质量报告用于记载上报所述服务质量报告的被监控对象承载的应用的服务质量QoS;
所述主监控器还用于根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态。
28.根据权利要求27所述的物理机,其特征在于,在所述主监控器根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态的方面,
所述主监控器用于通过所述多个被监控对象的监控信息所在的数据区与所述多个被监控对象的标识间的对应关系,确定上报所述监控信息的所述多个被监控对象各自的服务状态,所述数据区是上报所述监控信息的所述多个被监控对象的数据区,所述数据区包括堆和栈中的至少一种。
29.根据权利要求27或28所述的物理机,其特征在于,所述通道为文件或者进程间的通信连接。
30.根据权利要求29所述的物理机,其特征在于,所述通道为Proc文件***,在获得所述多个被监控对象各自上报的监控信息的方面,所述主监控器用于接收所述多个被监控对象通过Proc文件***中的一个或多个文件上报的各自的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享所述Proc文件***中的同一个文件,以用于所述监控信息的上报。
31.根据权利要求29所述的物理机,其特征在于,所述通道为设备文件,在所述获得所述多个被监控对象各自上报的监控信息的方面,所述主监控器用于接收所述多个被监控对象通过一个或多个设备文件上报的各自的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享同一个设备文件,以用于所述监控信息的上报。
32.根据权利要求29所述的物理机,其特征在于,所述通道为Socket通信连接,在所述获得所述多个被监控对象各自上报的监控信息的方面,所述主监控器用于接收所述多个被监控对象通过一个或多个Socket通信连接上报的各自的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享同一个Socket通信连接的地址,以用于所述监控信息的上报。
33.根据权利要求29所述的物理机,其特征在于,所述通道为进程间通信通道IPC,所述多个被监控对象包括线程和进程中的至少一种,每个所述多个被监控对象所在的容器包括一监控线程,其中,在所述获得所述多个被监控对象各自上报的监控信息的方面,所述主监控器用于接收所述多个被监控对象通过各自对应的监控线程上报的监控信息,其中,所述多个被监控对象中相同类型的被监控对象共享同一个IPC与所述主监控器通信,以用于所述监控信息的上报。
34.根据权利要求27所述的物理机,其特征在于,所述监控信息为所述心跳信息,所述主监控器还用于确定所述多个被监控对象的配置信息,所述多个被监控对象的配置信息包括所述多个被监控对象的身份信息、心跳信息上报方式和所述心跳周期,所述多个被监控对象的身份信息包括所述多个被监控对象的标识,所述心跳信息上报方式指示所述通道的类型,所述心跳周期表示被监控对象在运行正常情况下上报心跳信息的时间间隔;
所述主监控器还用于向所述多个被监控对象推送各自的心跳信息上报方式,所述多个被监控对象是由所述身份信息中的标识确定的;
相应的,在获得所述多个被监控对象各自上报的监控信息的方面,所述主监控器用于获得所述多个被监控对象各自上报的心跳信息,所述心跳信息是根据各自对应的心跳信息上报方式上报的;
相应的,在根据根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态的方面,所述主监控器用于根据所述多个被监控对象的所述心跳周期和所述心跳信息,确定所述多个被监控对象各自的运行状态。
35.根据权利要求34所述的物理机,其特征在于,所述多个被监控对象的配置信息还包括所述多个被监控对象运行异常情况下的处理策略,所述身份信息还包括所述多个被监控对象的从属关系和配合关系中的至少一种,所述操作***上还运行有管理器,
所述主监控器还用于根据所述运行异常情况下的处理策略确定所述多个被监控对象中运行异常的被监控对象和关联被监控对象的处理动作,所述关联被监控对象与所述运行异常的被监控对象中的至少一个具有从属关系或者配合关系;
所述管理器用于根据所述身份信息和所述处理动作对所述多个被监控对象中运行异常的被监控对象和关联被监控对象进行处理。
36.根据权利要求27所述的物理机,其特征在于,所述监控信息为所述服务质量报告,所述主监控器还用于确定所述多个被监控对象的配置信息,所述多个被监控对象的配置信息包括所述多个被监控对象的身份信息、服务质量报告上报方式和服务质量要求,所述多个被监控对象的身份信息包括所述多个被监控对象的标识,所述服务质量报告上报方式指示所述通道的类型,所述服务质量要求用于确定所述多个被监控对象承载的应用的QoS是否合格;
所述主监控器还用于向所述多个被监控对象推送各自的服务质量报告上报方式,所述多个被监控对象是由所述身份信息中的标识确定的;
相应的,在获得所述多个被监控对象各自上报的监控信息的方面,所述主监控器用于获得所述多个被监控对象各自上报的服务质量报告,所述服务质量报告是根据各自对应的服务质量报告上报方式上报的;
相应的,在根据所述多个被监控对象的监控信息和所述多个被监控对象的标识确定所述多个被监控对象各自的服务状态的方面,所述主监控器用于根据所述多个被监控对象的服务质量要求和所述服务质量报告确定所述多个被监控对象各自承载的应用的服务质量是否合格。
37.根据权利要求36所述的物理机,其特征在于,所述多个被监控对象的配置信息还包括服务质量不合格的情况下的处理策略,所述身份信息还包括所述多个被监控对象的从属关系和配合关系中的至少一种,所述操作***上还运行有管理器,所述主监控器用于根据所述服务质量不合格的情况下的处理策略确定所述多个被监控对象中服务质量不合格的被监控对象和关联被监控对象的处理动作,所述关联被监控对象与所述服务质量不合格的被监控对象中的至少一个具有从属关系或者配合关系;
所述管理器用于根据所述身份信息和所述处理动作对所述多个被监控对象中服务质量不合格的被监控对象和关联被监控对象进行处理。
38.根据权利要求27所述的物理机,其特征在于,所述物理机的硬件层包括输入/输出I/O设备,所述I/O设备用于向管理服务器发送处理指令,所述处理指令包括处理动作和待处理的被监控对象的标识,所述处理指令被所述管理服务器用于将所述待处理的被监控对象所承载的应用部署到其他至少一台物理机上,所述处理动作是所述主监控器根据所述多个被监控对象的服务状态和服务状态异常的情况下的处理策略确定的。
39.根据权利要求27所述的物理机,其特征在于,所述主监控器用于在所述主监控器未在第一配置时长内收到备监控器的心跳信息的情况下,触发所述备监控器退出运行状态以便所述被监控器重新被启动,所述备监控器的心跳信息表示所述备监控器在一时间周期内运行正常;
所述操作***上还运行有所述备监控器,所述备监控器用于在所述备监控器未在第二配置时长内收到所述主监控器的心跳信息的情况下,触发所述主监控器退出运行状态,所述备监控器接管所述被监控对象使所述备监控器为当前的主监控器,所述主监控器所在的物理机重新启动所述主监控器使所述主监控器为当前的备监控器,所述主监控器的心跳信息表示所述主监控器在一时间周期内运行正常。
40.一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如上述权利要求1到13任一权利要求所述的方法。
CN201510704797.8A 2015-10-26 2015-10-26 一种容器监控方法和装置 Active CN105389243B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201510704797.8A CN105389243B (zh) 2015-10-26 2015-10-26 一种容器监控方法和装置
EP16858896.0A EP3340057B1 (en) 2015-10-26 2016-10-10 Container monitoring method and apparatus
PCT/CN2016/101689 WO2017071460A1 (zh) 2015-10-26 2016-10-10 一种容器监控方法和装置
US15/926,453 US10635558B2 (en) 2015-10-26 2018-03-20 Container monitoring method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510704797.8A CN105389243B (zh) 2015-10-26 2015-10-26 一种容器监控方法和装置

Publications (2)

Publication Number Publication Date
CN105389243A CN105389243A (zh) 2016-03-09
CN105389243B true CN105389243B (zh) 2018-06-05

Family

ID=55421550

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510704797.8A Active CN105389243B (zh) 2015-10-26 2015-10-26 一种容器监控方法和装置

Country Status (4)

Country Link
US (1) US10635558B2 (zh)
EP (1) EP3340057B1 (zh)
CN (1) CN105389243B (zh)
WO (1) WO2017071460A1 (zh)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105389243B (zh) 2015-10-26 2018-06-05 华为技术有限公司 一种容器监控方法和装置
US9733992B1 (en) * 2016-05-27 2017-08-15 Huawei Technologies Co., Ltd. Inter-process communication between containers
CN107544832B (zh) * 2016-06-29 2021-03-16 阿里巴巴集团控股有限公司 一种虚拟机进程的监控方法、装置和***
CN107783854B (zh) * 2016-08-29 2021-08-20 华为技术有限公司 处理进程的方法及其装置
CN107819640B (zh) * 2016-09-14 2019-06-28 北京百度网讯科技有限公司 用于机器人操作***的监控方法和装置
CN106776212B (zh) * 2016-12-09 2020-02-25 中电科华云信息技术有限公司 容器集群部署多进程应用的监管***及方法
CN106656668A (zh) * 2016-12-22 2017-05-10 上海斐讯数据通信技术有限公司 一种云终端设备监控方法及***
CN106790595B (zh) * 2016-12-29 2020-12-22 上海理想信息产业(集团)有限公司 一种Docker容器主动负载均衡装置及方法
CN108270598B (zh) * 2016-12-30 2021-07-23 北京酷我科技有限公司 一种分布式***容灾方法、装置和***
CN108427616B (zh) * 2017-02-14 2020-12-01 腾讯科技(深圳)有限公司 后台程序监控方法及监控装置
CN107194017A (zh) * 2017-07-28 2017-09-22 四川思途智旅软件有限公司 一种用于单服务器上多网站数据采集的***和方法
CN107451469A (zh) * 2017-09-14 2017-12-08 郑州云海信息技术有限公司 一种进程管理***及方法
CN107426252B (zh) * 2017-09-15 2019-10-25 北京百悟科技有限公司 提供web应用防火墙服务的方法和设备
CN108156225B (zh) * 2017-12-15 2021-02-05 南瑞集团有限公司 基于容器云平台的微应用监控***和方法
CN108540341B (zh) * 2018-03-19 2021-01-29 云宏信息科技股份有限公司 资源监控方法及装置
CN108737215A (zh) * 2018-05-29 2018-11-02 郑州云海信息技术有限公司 一种云数据中心Kubernetes集群容器健康检查的方法和装置
US11336733B2 (en) * 2018-06-21 2022-05-17 Nicira, Inc. Networking connection management based on container identification
US11032342B2 (en) * 2018-07-05 2021-06-08 Samsung Electronics Co., Ltd. System and method for device audio
US20200034178A1 (en) * 2018-07-30 2020-01-30 Nutanix, Inc. Virtualization agnostic orchestration in a virtual computing system
TWI686696B (zh) * 2018-08-14 2020-03-01 財團法人工業技術研究院 計算節點及其失效偵測方法與雲端資料處理系統
CN109408210B (zh) * 2018-09-27 2021-01-05 北京车和家信息技术有限公司 分布式定时任务管理方法及***
CN111355622A (zh) * 2018-12-21 2020-06-30 中兴通讯股份有限公司 容器的业务监控方法、***和计算机可读存储介质
US11196547B2 (en) 2019-03-20 2021-12-07 International Business Machines Corporation Scalable multi-framework multi-tenant lifecycle management of deep learning applications
US11269728B2 (en) * 2019-03-20 2022-03-08 International Business Machines Corporation Scalable multi-framework multi-tenant lifecycle management of deep learning applications
US10922125B2 (en) * 2019-06-13 2021-02-16 Micro Focus Llc Capability liveness of containerized services
CN110365762B (zh) * 2019-07-10 2022-03-11 腾讯科技(深圳)有限公司 服务处理方法、装置、设备及存储介质
CN110659104B (zh) * 2019-08-29 2022-06-24 重庆小雨点小额贷款有限公司 一种业务监控方法及相关设备
CN110515806B (zh) * 2019-08-30 2022-10-14 北京博睿宏远数据科技股份有限公司 探针配置方法、装置、计算机设备及存储介质
CN110716763B (zh) * 2019-09-10 2024-05-17 北京神州数码云科信息技术有限公司 web容器自动优化方法、装置、存储介质及电子设备
CN110737320B (zh) * 2019-09-25 2023-08-18 腾讯音乐娱乐科技(深圳)有限公司 耗电量检测方法、装置、电子设备及存储介质
CN110851824B (zh) * 2019-11-13 2023-07-28 哈尔滨工业大学 一种针对恶意容器的检测方法
CN111130925B (zh) * 2019-11-29 2022-08-26 广州文远知行科技有限公司 资源监控方法、装置、计算机设备和存储介质
CN111324423B (zh) * 2020-03-03 2022-03-04 腾讯科技(深圳)有限公司 容器内进程的监控方法、装置、存储介质和计算机设备
CN113497731B (zh) * 2020-04-04 2023-05-23 杭州迪普科技股份有限公司 集控探针调度方法及集控探针管理***
JP2022045680A (ja) * 2020-09-09 2022-03-22 富士通株式会社 障害原因特定プログラムおよび障害原因特定方法
CN114168203B (zh) * 2020-09-10 2024-02-13 成都鼎桥通信技术有限公司 双***运行状态控制方法、装置和电子设备
CN112187581B (zh) * 2020-09-29 2022-08-02 北京百度网讯科技有限公司 服务信息处理方法、装置、设备及计算机存储介质
US11356506B2 (en) 2020-10-01 2022-06-07 Bank Of America Corporation System for optimizing data acceptance and data storage in a distributed computing network
CN113220423B (zh) * 2021-06-04 2022-07-19 恒为科技(上海)股份有限公司 一种基于容器的多芯片管理方法和装置
US11983569B2 (en) * 2021-08-18 2024-05-14 International Business Machines Corporation Services thread scheduling based upon thread tracing
CN114116133A (zh) * 2021-11-30 2022-03-01 北京字节跳动网络技术有限公司 一种容器回收方法、装置、设备及存储介质
US20230195512A1 (en) * 2021-12-22 2023-06-22 Sap Se Monitoring container-implemented software applications
CN114465952B (zh) * 2022-01-20 2023-12-01 绿盟科技集团股份有限公司 一种配置参数的管理方法、装置及电子设备
CN116389324B (zh) * 2023-06-07 2023-09-29 深圳市东信时代信息技术有限公司 一种云服务器管理方法、装置、设备及存储介质
CN117827596B (zh) * 2024-03-05 2024-04-26 大连高德瑞信科技有限公司 一种安全可控线程实时监控方法及***

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104331353A (zh) * 2014-10-17 2015-02-04 云南远信数通科技有限公司 软件高可用保证的方法
CN104915263A (zh) * 2015-06-30 2015-09-16 北京奇虎科技有限公司 基于容器技术的进程故障处理方法及装置
CN104915285A (zh) * 2015-06-30 2015-09-16 北京奇虎科技有限公司 一种容器进程监控方法、装置及***

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5939974A (en) * 1998-02-27 1999-08-17 Food Safety Solutions Corp. System for monitoring food service requirements for compliance at a food service establishment
US7819003B2 (en) * 2002-06-11 2010-10-26 Intelligent Technologies International, Inc. Remote monitoring of fluid storage tanks
EP1402731B1 (en) * 2001-05-17 2005-07-27 Optibase Apparatus and method for multiple rich media formats video broadcasting
US7479877B2 (en) * 2002-09-17 2009-01-20 Commerceguard Ab Method and system for utilizing multiple sensors for monitoring container security, contents and condition
US7370261B2 (en) * 2005-05-09 2008-05-06 International Business Machines Corporation Convolution-encoded raid with trellis-decode-rebuild
US20070030813A1 (en) * 2005-08-08 2007-02-08 International Business Machines Corporation Monitoring a problem condition in a communications protocol implementation
US8793585B2 (en) * 2006-02-06 2014-07-29 Alcatel Lucent Communication system management apparatus, methods, and interfaces
EP2075696A3 (en) * 2007-05-10 2010-01-27 Texas Instruments Incorporated Interrupt- related circuits, systems and processes
US8601115B2 (en) * 2010-06-26 2013-12-03 Cisco Technology, Inc. Providing state information and remote command execution in a managed media device
MX2013011563A (es) * 2011-04-04 2014-04-30 Numerex Corp Entrega de datos y audio de eventos del sistemade alarma sobre redes hibridas.
CN102637023A (zh) 2012-03-23 2012-08-15 王效波 基于3g、gprs手机通讯的远程无人机集群控制方法及***
US20130275814A1 (en) * 2012-04-12 2013-10-17 Shiva Prasad Nayak Adaptive system monitoring
US9660874B2 (en) * 2012-12-13 2017-05-23 Level 3 Communications, Llc Devices and methods supporting content delivery with delivery services having dynamically configurable log information
JP6212993B2 (ja) * 2013-07-03 2017-10-18 株式会社リコー 回転角度検出装置、画像処理装置及び回転角度検出方法
US9396031B2 (en) * 2013-09-27 2016-07-19 International Business Machines Corporation Distributed UIMA cluster computing (DUCC) facility
US20150371175A1 (en) * 2014-06-18 2015-12-24 Sandeep Voona Enterprise mobile application for monitoring process integration servers
CN105389243B (zh) * 2015-10-26 2018-06-05 华为技术有限公司 一种容器监控方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104331353A (zh) * 2014-10-17 2015-02-04 云南远信数通科技有限公司 软件高可用保证的方法
CN104915263A (zh) * 2015-06-30 2015-09-16 北京奇虎科技有限公司 基于容器技术的进程故障处理方法及装置
CN104915285A (zh) * 2015-06-30 2015-09-16 北京奇虎科技有限公司 一种容器进程监控方法、装置及***

Also Published As

Publication number Publication date
US10635558B2 (en) 2020-04-28
WO2017071460A1 (zh) 2017-05-04
EP3340057B1 (en) 2020-07-29
CN105389243A (zh) 2016-03-09
US20180210801A1 (en) 2018-07-26
EP3340057A1 (en) 2018-06-27
EP3340057A4 (en) 2018-11-14

Similar Documents

Publication Publication Date Title
CN105389243B (zh) 一种容器监控方法和装置
US20200177639A1 (en) Mechanism for providing external access to a secured networked virtualization environment
US10673981B2 (en) Workload rebalancing in heterogeneous resource environments
Endo et al. High availability in clouds: systematic review and research challenges
US7454427B2 (en) Autonomic control of a distributed computing system using rule-based sensor definitions
US8364460B2 (en) Systems and methods for analyzing performance of virtual environments
CN103620561B (zh) 用于n路运行时互操作调试的方法和***
US20200026624A1 (en) Executing resource management operations in distributed computing systems
CN112667362B (zh) Kubernetes上部署Kubernetes虚拟机集群的方法与***
US20060173856A1 (en) Autonomic control of a distributed computing system in accordance with a hierachical model
CN109313564A (zh) 用于支持多个不同租户的高度可用虚拟桌面的服务器计算机管理***
US20180165177A1 (en) Debugging distributed web service requests
US10778526B2 (en) Automated creation of test tenants for data center technical issue detection
Zhu et al. If docker is the answer, what is the question?
US10810030B2 (en) Identifying entities in a virtualization environment by converting heterogeneous string identifiers for interaction with a single API
US10642718B2 (en) Framework for testing distributed systems
EP3786797A1 (en) Cloud resource marketplace
KR20170031131A (ko) 가상 스트림 및 처리 에이전트를 이용한 스트림 기반 이벤트 처리 기법
US20230032516A1 (en) Common platform for implementing rpa services on customer premises
US10454773B2 (en) Virtual machine mobility
CN113515356B (zh) 一种轻量级分布式资源管理与任务调度器及方法
US11797341B2 (en) System and method for performing remediation action during operation analysis
CN114896149A (zh) 基于微服务架构的分布式自动化测试装置、方法、设备及介质
US20220237197A1 (en) System and method for supporting rollback of changes made to target systems via an integration platform
US20210373868A1 (en) Automated Deployment And Management Of Network Intensive Applications

Legal Events

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