CN110874291B - 一种异常容器实时检测方法 - Google Patents
一种异常容器实时检测方法 Download PDFInfo
- Publication number
- CN110874291B CN110874291B CN201911049192.4A CN201911049192A CN110874291B CN 110874291 B CN110874291 B CN 110874291B CN 201911049192 A CN201911049192 A CN 201911049192A CN 110874291 B CN110874291 B CN 110874291B
- Authority
- CN
- China
- Prior art keywords
- container
- abnormal
- docker
- containers
- real
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种异常容器实时检测方法,包括:归纳容器的异常情况;对所述容器的异常情况进行分类;检测所述容器的异常情况,并执行以下处理步骤,所述处理步骤包括:若发现某个容器有异常状况,则读取日志,并获取该异常容器的相关信息;根据所述异常容器的相关信息,隔离所述异常容器占用的资源。一种异常容器实时检测方法能够在第一时间检测是否出现异常容器,并确定异常容器的位置,通过及时隔离,减少服务器因资源的问题而产生冲突,进一步提高用户的服务体验。
Description
技术领域
本发明属于容器计算检测技术领域,特别涉及一种异常容器实时检测方法。
背景技术
随着容器技术的发展成熟,基于容器技术的云计算系统即容器云已经开始逐步的取代传统的基于虚拟机的云计算系统。由于容器具有轻量化的特点,容器的部署更加便捷。因而容器云内部组成相比于传统云计算平台更加复杂。其次容器对系统各项资源的隔离相较于虚拟机来说不强,而同一台物理主机上运行多个容器,容器间的干扰相对较为强烈,因此一旦容器云内部某个容器发生异常,异常将迅速传播,进而影响到整个集群。而由于容器云复杂的内部环境,对于传统基于单组件的异常检测方法已经不适用于分布式容器云环境。现有技术采用性能指标对异常进行分析,增加了数据采集的开销,同时需要构造正常的波动模型,对于波动频繁且复杂的容器云平台来说准确率较低且缺乏实时性。
并且在容器在运行代码的过程中,难免会因为一些系统的问题产生异常状态的进程,影响了资源释放的过程。为此需要一种能快速检测到容器异常,并将异常容器隔离的方法。
发明内容
针对上述问题,本发明提供了一种异常容器实时检测方法,包括:
归纳容器的异常情况;
对所述容器的异常情况进行分类;
检测所述容器的异常情况,并执行以下处理步骤,所述处理步骤包括:
若发现某个容器有异常状况,则读取日志,并获取该异常容器的相关信息;
根据所述异常容器的相关信息,隔离所述异常容器占用的资源。
优选的,所述检测所述容器异常情况具体为:
通过监控服务器实时检测容器异常情况。
优选的,所述发现某个容器异常状况,则读取日志,并获取该异常容器的相关信息具体为:
若监控服务器发现某个容器异常情况,由监控服务器读取日志,获取该异常容器的相关信息。
优选的,所述异常容器相关信息包括异常容器的宿主机地址、异常容器占用的GPU资源。
优选的,所述根据所述异常容器的相关信息,隔离所述异常容器占用的资源具体为:
通过AlertManager系统将异常容器的相关信息反馈给系统管理员,由系统管理员隔离相关资源。
优选的,所述相关资源包括所述异常容器占用的GPU资源。
优选的,还包括:
隔离异常容器相关资源后,若服务器能在预定时间内运行完代码,则在完成任务时自动隔离资源;
若服务器无法在预定时间内完成代码运行,则立刻隔离资源。
优选的,还包括:
隔离所有资源后,启动服务器重启机制,消除异常容器。
本发明能够在第一时间检测是否出现异常容器,并确定异常容器的位置,通过及时隔离,减少服务器因资源的问题而产生冲突,进一步提高用户的服务体验。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所指出的结构来实现和获得。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明的流程图。
图2示出了本发明的Prometheus工作流图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种容器异常的实时检测方法,图1示出了一种容器异常的实时检测方法的流程图,如图1所示,一种容器异常的实时检测方法包括:
归纳容器异常情况;
对容器异常情况进行分类;
对容器的异常进行监督和检测,并执行以下处理步骤;
处理步骤包括:
若发现某个容器的异常状况,则读取日志,并获取该容器的宿主机地址、占用的GPU资源等信息;
之后,结合AlertManager系统,第一时间将宿主机的地址、占用的GPU资源等信息反馈给系统管理员,并隔离当前容器所占用的资源。
随后,通知服务器上运行代码的用户,如果用户能在几天内运行完代码时,则在用户完成任务时自动隔离资源;若用户无法在预定时间内完成代码运行,则通知用户立即结束任务,然后隔离相关资源。在所有资源均被隔离后,启动服务器重启机制,消除一切异常容器。
其中,容器的异常情况根据容器本身的特性进行归纳和分类,以docker容器为例,归纳容器可能出现的深度睡眠状态,并将其分类为容器异常。
需要说明的是,本发明所针对的容器并不限于docker容器,还可以采用其他类型的容器,例如CoreOS rkt容器、Mesos容器引擎、LXC容器、OpenVZ、Containerd,容器异常情况也可以为其他类型,例如空间不足等异常问题。
异常容器检测前需要将代码嵌入到Prometheus的Exporters,并将Exporters与Prometheus Server进行连接。
在容器的异常情况分类后,通过监控服务器对容器进行实时监控。如果监控服务器发现某个容器出现异常情况,监控服务器会读取日志,日志中包括对应该容器的宿主机地址、占用GPU资源等信息,以此使监控服务器获取该容器的宿主机地址、占用GPU资源等信息。示例性的,监控服务器可以采用prometheus监控,prometheus监控具有一套完整的监控和趋势系统,在时序数据基础上内建立主动抓取,搜索,绘图和报警系统。需要说明的是,有丰富的官方和第三方贡献的监控收集工具。监控服务器并不限于prometheus监控系统,也可以为其他类型的监控系统,例如,监控服务器采用Graphite,Graphite和Prometheus一样存储命名后的时间序列数据,Prometheus相比Graphite,Prometheus的元数据模型更加丰富。Graphite以"."作为分割符命名监控项,而Prometheus在命名监控项时通过添加Key/value标签,使得在查询时更容易进行过滤、分组和匹配。
监控服务器获取异常容器的相关信息后,会结合AlertManager系统,第一时间将这些信息反馈给系统管理员,通过系统管理员隔离相关资源。需要说明的是,AlertManager是Prometheus的一个报警模块,Alertmanager主要用于接收Prometheus发送的告警信息,它支持丰富的告警通知渠道,而且很容易做到对告警信息进行去重,降噪,分组等。
随后,由系统管理员邮件通知当前服务器上运行代码的用户,如果用户能够在几天之内完成代码的话,则在用户完成任务时自动隔离资源,等所有资源都隔离时,启动服务器重启机制,消除一切异常容器。需要说明的是,用户完成代码的时限并不限于几天,也可以更长或更短。若用户无法在预定时间内容完成代码运行工作,则需要要求用户提前终止代码运行,并由系统管理员隔离相应资源。
以docker容器为例进行示例性说明。Docker容器作为一个独立的操作系统环境,占用服务器集群上节点的资源。在docker容器使用中,首先,获取容器的信息。具体的,从docker inspect中获取docker的名称、创建时间、Pid、job名称、宿主机IP、用户名id、ssh端口、占用的GPU,然后从framework中获取容器对应的平台任务状态。
归纳docker可能出现的异常情况,并根据docker容器的异常情况类型,对容器异常情况进行分类,其中docker容器的异常情况包括容器的状态是否正常、容器的资源消耗是是否正常、容器内运行任务进程是否正常。在获取容器信息的基础上,暂时将异常容器做如下分类:
a、docker容器对应的平台任务状态为“完成”,docker容器存在、不能够再进入,即为深度睡眠状态。
b、docker容器对应的平台任务状态为“完成”,docker容器存在、还可以再进入。
c、docker容器对应的平台任务状态已丢失,docker容器存在、不能够再进入。
d、docker容器对应的平台任务状态已丢失,docker容器存在、还可以再进入。
例如docker容器中出现的因IO负载大,导致进程等待IO而进入深度睡眠状态,使docker容器不接受外部信号,将此类情况分类为状态异常。
通过监控服务器对容器进行实时监控。如果监控服务器发现某个容器出现异常情况,监控服务器会读取日志,日志中包括对应该容器的宿主机地址、占用GPU资源等信息,以此使监控服务器获取该容器的宿主机地址、占用GPU资源等信息。
本发明能够在第一时间检测是否出现异常容器,并确定异常容器的位置,通过及时隔离,减少服务器因资源的问题而产生冲突,进一步提高用户的服务体验。
Prometheus检测过程包括:
第1步:Prometheus Server定期从配置好的Exporters或Client Library中拉取metrics,或者接收Push Gateway发过来的metrics,或者从其它途径拉取metrics。在我们目前的方案中,我们主要使用Client Library来计算metrics,并且通过HTTP端口提供给Prometheus Server。
第2步:Prometheus Server在本地存储收集到metrics之后,运行已设定好的alert.rules,向Alertmanager推送警报。
第3步:Alertmanager根据自身的配置文件,对接收到的警报进行处理,发出邮件等告警。
本技术方案中,使用Exporters来提供metrics给Prometheus Server,检测出各自服务器的异常容器;然后配置告警规则和Alertmanager,最后配置Prometheus Server,完成整个流程的控制。Prometheus工作流图如图2所示下:
Exporter中使用Prometheus Client Library来实现metric的传输,具体使用的是Python包的prometheus client,使用里面的一个函数对容器进行分类,1代表异常,0代表正常,再使用Label对容器进行信息的封装,然后开启一个http端口8000,等待Prometheus的监听。
Prometheus监控系统具有易于管理、具有强大的多维度数据模型等优点,而且容易部署。
尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种异常容器实时检测方法,其特征在于,包括:
归纳容器的异常情况;
对所述容器的异常情况进行分类;
检测所述容器的异常情况,并执行以下处理步骤,所述处理步骤包括:
若发现某个容器有异常状况,则读取日志,并获取该异常容器的相关信息,其中,所述容器为docker容器,在docker容器使用中,首先,获取容器的信息;具体的,从dockerinspect中获取docker的名称、创建时间、Pid、job名称、宿主机IP、用户名id、ssh端口、占用的GPU,然后从framework中获取容器对应的平台任务状态;归纳docker可能出现的异常情况,并根据docker容器的异常情况类型,对容器异常情况进行分类,其中docker容器的异常情况包括容器的状态是否正常、容器的资源消耗是否正常以及容器内运行任务进程是否正常;其中,在获取容器信息的基础上,将异常容器做如下分类:a、docker容器对应的平台任务状态为“完成”,docker容器存在、不能够再进入,即为深度睡眠状态;b、docker容器对应的平台任务状态为“完成”,docker容器存在、还可以再进入;c、docker容器对应的平台任务状态已丢失,docker容器存在、不能够再进入;d、docker容器对应的平台任务状态已丢失,docker容器存在、还可以再进入;
根据所述异常容器的相关信息,隔离所述异常容器占用的资源。
2.根据权利要求1所述的异常容器实时检测方法,其特征在于,
所述检测所述容器异常情况具体为:
通过监控服务器实时检测容器异常情况。
3.根据权利要求1所述的异常容器实时检测方法,其特征在于,
所述发现某个容器异常状况,则读取日志,并获取该异常容器的相关信息具体为:
若监控服务器发现某个容器异常情况,由监控服务器读取日志,获取该异常容器的相关信息。
4.根据权利要求1或3所述的异常容器实时检测方法,其特征在于,
所述异常容器相关信息包括异常容器的宿主机地址、异常容器占用的GPU资源。
5.根据权利要求1所述的异常容器实时检测方法,其特征在于,
所述根据所述异常容器的相关信息,隔离所述异常容器占用的资源具体为:
通过AlertManager系统将异常容器的相关信息反馈给系统管理员,由系统管理员隔离相关资源。
6.根据权利要求1所述的异常容器实时检测方法,其特征在于,
所述相关资源包括所述异常容器占用的GPU资源。
7.根据权利要求1所述的异常容器实时检测方法,其特征在于,还包括:
隔离异常容器相关资源后,若服务器能在预定时间内运行完代码,则在完成任务时自动隔离资源;
若服务器无法在预定时间内完成代码运行,则立刻隔离资源。
8.根据权利要求7所述的异常容器实时检测方法,其特征在于,还包括:
隔离所有资源后,启动服务器重启机制,消除异常容器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911049192.4A CN110874291B (zh) | 2019-10-31 | 2019-10-31 | 一种异常容器实时检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911049192.4A CN110874291B (zh) | 2019-10-31 | 2019-10-31 | 一种异常容器实时检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110874291A CN110874291A (zh) | 2020-03-10 |
CN110874291B true CN110874291B (zh) | 2022-10-21 |
Family
ID=69717896
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911049192.4A Active CN110874291B (zh) | 2019-10-31 | 2019-10-31 | 一种异常容器实时检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110874291B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111682976B (zh) * | 2020-04-26 | 2022-03-01 | 合肥中科类脑智能技术有限公司 | 一种保证分布式多机通信监控的方法 |
CN111813498A (zh) * | 2020-07-02 | 2020-10-23 | 深圳市国电科技通信有限公司 | 终端容器的监测方法、监测装置、存储介质及处理器 |
CN112905421B (zh) * | 2021-03-18 | 2024-01-23 | 中科九度(北京)空间信息技术有限责任公司 | 基于注意力机制的lstm网络的容器异常行为检测方法 |
CN113872954B (zh) * | 2021-09-23 | 2024-02-20 | 绿盟科技集团股份有限公司 | 一种数据流量检测的方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109245931A (zh) * | 2018-09-19 | 2019-01-18 | 四川长虹电器股份有限公司 | 基于kubernetes的容器云平台的日志管理和监控报警的实现方法 |
CN110311831A (zh) * | 2019-06-14 | 2019-10-08 | 平安科技(深圳)有限公司 | 基于容器云的系统资源监控方法及相关设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10042697B2 (en) * | 2015-05-28 | 2018-08-07 | Oracle International Corporation | Automatic anomaly detection and resolution system |
CN107544832B (zh) * | 2016-06-29 | 2021-03-16 | 阿里巴巴集团控股有限公司 | 一种虚拟机进程的监控方法、装置和系统 |
CN109960579B (zh) * | 2017-12-22 | 2021-08-24 | 航天信息股份有限公司 | 一种调整业务容器的方法及装置 |
CN109739619B (zh) * | 2018-12-12 | 2021-07-06 | 咪咕文化科技有限公司 | 一种基于容器化应用的处理方法、装置及存储介质 |
-
2019
- 2019-10-31 CN CN201911049192.4A patent/CN110874291B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109245931A (zh) * | 2018-09-19 | 2019-01-18 | 四川长虹电器股份有限公司 | 基于kubernetes的容器云平台的日志管理和监控报警的实现方法 |
CN110311831A (zh) * | 2019-06-14 | 2019-10-08 | 平安科技(深圳)有限公司 | 基于容器云的系统资源监控方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110874291A (zh) | 2020-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110874291B (zh) | 一种异常容器实时检测方法 | |
US10747591B2 (en) | Endpoint process state collector | |
US8516499B2 (en) | Assistance in performing action responsive to detected event | |
CN111046011B (zh) | 日志收集方法、系统、装置、电子设备及可读存储介质 | |
CN107544832B (zh) | 一种虚拟机进程的监控方法、装置和系统 | |
US20120297393A1 (en) | Data Collecting Method, Data Collecting Apparatus and Network Management Device | |
CN114356499A (zh) | Kubernetes集群告警根因分析方法及装置 | |
CN112988509B (zh) | 一种告警消息过滤方法、装置、电子设备及存储介质 | |
US20220222266A1 (en) | Monitoring and alerting platform for extract, transform, and load jobs | |
CN117971606B (zh) | 基于ElasticSearch的日志管理系统及方法 | |
CN114327964A (zh) | 业务系统的故障原因处理方法、装置、设备及存储介质 | |
CN117130730A (zh) | 面向联邦Kubernetes集群的元数据管理方法 | |
US9910874B1 (en) | Scalable alerter for security information and event management | |
CN117633116A (zh) | 数据同步方法、装置、电子设备及存储介质 | |
Liu et al. | Big Data architecture for IT incident management | |
US10855563B2 (en) | Supplementing log messages with metadata | |
CN116662127A (zh) | 一种设备告警信息分类并预警的方法、系统、设备和介质 | |
CN101515864A (zh) | 告警信息配制系统及其配制方法 | |
CN107368355B (zh) | 虚拟机的动态调度方法和装置 | |
CN114706893A (zh) | 故障检测方法、装置、设备及存储介质 | |
CN114629786A (zh) | 日志实时分析方法、装置、存储介质及系统 | |
CN113722141A (zh) | 数据任务的延迟原因确定方法、装置、电子设备及介质 | |
CN110007934A (zh) | 分布式数据库部署方法及装置 | |
CN117573428B (zh) | 容灾备份方法、装置、计算机设备和存储介质 | |
CN109324951A (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20210428 Address after: 0106, 1st floor, No.26, shangdixinxi Road, Haidian District, Beijing Applicant after: Beijing Zhongke yunnao Intelligent Technology Co.,Ltd. Applicant after: HEFEI ZHONGKE LEINAO INTELLIGENT TECHNOLOGY Co.,Ltd. Address before: 230088 1102-b236, 11th floor, Zhongxin building, No. 2688, innovation Avenue, high tech Zone, Hefei City, Anhui Province Applicant before: HEFEI ZHONGKE LEINAO INTELLIGENT TECHNOLOGY Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |