CN111984505B - 一种运维数据采集装置及采集方法 - Google Patents
一种运维数据采集装置及采集方法 Download PDFInfo
- Publication number
- CN111984505B CN111984505B CN202010849458.XA CN202010849458A CN111984505B CN 111984505 B CN111984505 B CN 111984505B CN 202010849458 A CN202010849458 A CN 202010849458A CN 111984505 B CN111984505 B CN 111984505B
- Authority
- CN
- China
- Prior art keywords
- data
- task
- acquisition
- monitoring object
- hash table
- 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/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
- G06F11/3093—Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种运维数据采集装置及采集方法,该引擎包括数据中心单元、采集任务单元、数据加工单元、以及数据输出单元。本发明的数据采集引擎及采集方法包括了数据采集、整理和计算、输出,输出包括计算排行榜、提供对象实时数据到中间件、写入时许数据库、发送到数据分析平台,实现了大规模复杂环境的运维服务。
Description
技术领域
本发明涉及运维数据采集装置及采集方法。
背景技术
随着机房规模越来越大,承载的业务***越来越复杂,机房运维工作也越来越复杂,所需要监管内容已经不局限于网络设备运行情况,服务器运行情况,还需要监管包括服务器上应用程序的各项运行指标,以及机房的物理环境、动力环境指标,甚至包括机房内运行的一些应用***的工作数据。
现有运维方式已经不能满足大规模机房复杂的运维需求,如Icinga是一个开源监控***,用于监控网络主机和服务的运行状况,它可以在设定阈值的条件下对主机和服务运行指标进行监控,在被监控对象运行指标超出阈值范围后,给出告警信息。另外Icinga也有自己的web页面,可以查看已经配置好的被监控设备运行指标情况。类似的开源软件还有Ganglia,Zabbix,NMS等等。
现有的Icinga其存在的缺陷包括:
1.对于监控数据的计算主要依赖于脚本实现,通过简单的阈值配置进行指标对比计算,阈值配置比较统一化无差别对待;
2.采集脚本配置比较麻烦;
3.监控对象或者采集脚本配置变更,需要重启服务,监控被中断,不能满足需要7x24小时不间断监控的环境;
4.监控机制实现比较简单,难以应对超过1000个监控点的机房监控,大规模机房的运行情况展示问题需要更复杂的机制,大规模的机房对于告警处理需要智能化,避免告警风暴问题;
5.复杂的机房监控需要更复杂的数据处理***,一个假设方案是额外建设一个数据处理***,然后来处理Icinga采集到的数据,而Icinga的监控数据对接到其他***还是比较困难的,需要RESTFUL形式API,RESTFUL是基于HTTP协议的,其性能存在瓶颈,另外Icinga吐出来的数据格式和内容也未必非常适应额外的数据处理***。
因此如何减低数据分析平台的工作负荷量对于目前机房运维有着重要意义。
发明内容
本发明在此的目的在于提供一种运维数据采集装置,主要负责采集任务的调度执行,以及采集结果的收集、加工。
为实现本发明的目的,在此提供的运维数据采集装置包括:
数据中心单元,用于建立和维护监控对象哈希表;
采集任务单元,依据建立的监控对象哈希表和采集任务配置文件装配采集任务哈希表,根据装配的采集任务哈希表调度监控对象脚本并获取所述监控对象脚本的输出内容,所述输出内容作为采集结果组建成采集结果数据队列;
数据加工单元,用于对所述采集结果数据队列中的数据进行加工,经加工处理后的数据组建成目标数据队列,并可以用于更新所述数据中心单元建立的监控对象哈希表;
所述数据中心单元、所述采集任务单元和所述数据加工单元的工作内容或者工作状态通过配置文件来调整。
本发明提供的数据采集引擎属于复杂运维方案中的数据采集,采用配置文件对数据中心单元、采集任务单元和数据加工单元的工作内或者工作状态进行配置,可以灵活地配置数据采集任务、采集频率、采集负载,以及对采集得到的数据进行加工处理。数据加工单元对采集到的数据进行加工处理后,通过加工处理后的数据对监控对象哈希表进行更新,解决了现有技术中在对监控对象数据进行变更时需要重启服务,导致监控被中断的问题。
进一步的,本发明提供的采集引擎还包括数据输出单元,所述数据输出单元用于读取所述监控对象哈希表中的监控对象数据,并将读取到的监控对象数据输出到引擎外部,包括以下一种或几种方式处理:
1)根据配置文件要求将所述监控对象数据的目标指标计算成top排行榜数据,写入到中间件,供页面展示模块调用展示;
2)根据配置文件要求将读取到的监控对象数据的目标指标数据发送到数据分析平台。
通过数据输出单元是实现了监控对象数据各目标指标排行榜计算;并且能够将监控对象数据的目标指标数据发送到数据分析平台,这样一来数据分析平台只需要定义好需要的数据格式,无需对采集过程和差异化的脚本数据格式进行处理,实现了数据提供任务。
数据输出单元在进行top排行榜计算以及数据发送时,根据配置文件要求进行,通过配置文件能够灵活地对时许化存储时间、所需要存储的数据进行配置,实现对监控对象数据中关键指标数据进行时许化存储,灵活地实时计算各种目标指标排行榜数据;且通过配置文件的实现了对数据发送进行了有效地管理,保证了数据发送准确性。
进一步的,所述采集任务单元包括:
任务集合子单元,遍历所述监控对象哈希表,并用采集任务配置文件将所述监控对象哈希表中的所有监控对象逐个匹配,经采集任务配置文件匹配后装配成采集任务哈希表;
任务分配器,读取所述采集任务哈希表中的任务信息,根据任务属性将采集任务分配给不同的任务采集线程池;
任务采集线程池,根据所述任务分配器的分配调用监控对象脚本并收集所述监控对象脚本返回的输出内容,并将所述输出内容写入采集结果数据队列中。
进一步的,所述任务采集线程池包括用于处理快速任务的快速任务采集线程池、用于处理一般任务的一般任务采集线程池和用于处理失败任务的失败任务采集线程池。
进一步的,所述监控对象哈希表、所述采集结果数据队列和所述目标数据队列中的数据格式为JSON格式。JSON格式易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
本发明在此的另一个目的在于提供一种一种运维数据采集方法包括以下步骤:
步骤S01:监控对象哈希表的建立,根据监控对象数据建立监控对象哈希表,所述监控对象数据包括监控对象的基础信息、脚本参数和实时指标数据;
步骤S02:数据采集,依据步骤S01建立的监控对象哈希表和采集任务配置文件装配采集任务哈希表,根据装配的采集任务哈希表调度监控对象脚本并获取所述监控对象脚本的输出内容,所述输出内容作为采集结果组建成采集结果数据队列;
步骤S03:数据加工处理,不断地从步骤S02组建的采集结果数据队列里面提取采集结果进行加工处理,经加工处理后的数据还用于组建成目标数据队列,并可以用于更新所述数据中心单元建立的监控对象哈希表。
进一步的,本发明提供的数据采集方法还包括数据输出步骤,该步骤读取所述监控对象哈希表中监控对象数据,并将读取到的监控对象数据输出到引擎外部,包括以下一种或几种方式处理:
1)时许化存储,根据存储配置文件要求定期读取所述监控对象哈希表中需要存储的监控对象数据,写入到时间序列数据库;
2)根据配置文件要求将所述监控对象数据的目标指标计算成top排行榜数据,写入到中间件,供页面展示模块调用展示;
3)根据配置文件要求将读取到的监控对象数据的目标指标数据发送到数据分析平台。
进一步的,所述步骤S02数据采集具体包括以下步骤:
步骤S021:读取采集任务配置文件;
步骤S022:遍历所述S01步骤建立的监控对象哈希表,将里面的所有监控对象逐个匹配步骤S021读取的采集任务配置文件,装配成采集任务哈希表;
步骤S023:提取时间到达的采集任务,根据采集任务属性分配任务并调用监控对象脚本并收集监控对象脚本返回的输出内容。
进一步的,所述步骤S021读取的采集任务配置文件用于设定一个或多个采集任务,每个采集任务的要素包括任务名称、采集监控对象类型、需要调用的监控对象脚本的命令模板、采集监控对象脚本所需的参数名称、每监控对象每次采集的间隔时间、采集任务属性以及用于加工此次采集结果的加工配置文件模板;其中所述采集监控对象脚本所需的参数名称中的参数具体值从所述S01步骤建立的对象哈希表获取。
进一步的,所述采集任务属性包括一般任务属性、快速任务属性和失败任务属性,每个采集任务初始配置时可被赋予快速任务属性或一般任务属性。
进一步的,在执行步骤S023中根据采集任务属性调用监控对象脚本并收集监控对象脚本返回的输出内容之前还进行以下处理:
步骤S0231:判断提取时间到达的采集任务是否正在执行,如不是则执行步骤S0232;反之则执行步骤S0235;
步骤S0232:判断提取时间到达的采集任务的上次执行是否失败,如是,则将提取时间到达的采集任务***失败任务队列;反之执行步骤S0233;
步骤S0233:判断提取时间到达的采集任务的任务配置是否属于快速任务,如是则将提取时间到达的采集任务***快速任务队列中;反之则执行步骤S0234;
步骤S0234:判断提取时间到达的采集任务中的被监控对象是否有正在执行的一般任务,如有则将提取时间到达的采集任务不执行,等待下一次提取,反之则将提取时间到达的采集任务***一般任务队列;
步骤S0235:判断提取时间到达的采集任务的上次执行是否已经超时,如是在,则杀死正在执行的任务,等待下一次提取时间;如不是则等待下一次提取。
进一步的,所述步骤S02采集任务哈希表装配过程中还包括采集任务配置文件和监控对象数据是否更新的判断,如存在更新则更新读取采集任务配置,如不存在更新则判断是否结束采集任务,如是则结束,如不是则继续判断采集任务配置和监控对象数据是否更新,依次循环。
进一步的,所述步骤S03通过以下步骤对所述采集结果数据队列里的数据进行加工处理:
步骤SA031:从所述采集结果数据队列里提取待加工数据;
步骤SA032:根据提取的待加工数据的对象类型、采集任务类型、目标模板名称分别查找到此次数据加工所需要的源模板、加工模板和目标模板,然后进行计算,计算结果***目标数据队列中。
进一步的,所述源模板、所述加工模板和所述目标模板的查找分别通过源数据模块配置文件、加工模板配置文件和目标数据模板配置文件查找。
本发明的有益效果包括:
1)本发明的数据采集引擎及采集方法包括了数据采集、整理和计算、输出,输出包括计算排行榜、提供对象实时数据到中间件、写入时许数据库、发送到数据分析平台,实现了大规模复杂环境的运维服务。
2)采用多线程池方式,平衡了采集主机的性能和监控需求。
3)每个采集任务初始配置时被赋予快速任务属性或一般任务属性,既发挥了采集的最大性能,又避免了被监控设备过大负担的情况,并且兼顾了监控脚本的执行冲突问题。
4)采用配置文件配置更新不需要重启服务,且采集和监控对象配置简单。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明提供的数据采集引擎的工作程序图;
图2为本发明提供的数据采集过程的流程图;
图3为本发明提供的数据加工处理的流程图;
附图1-3中实线代表流程走向,虚线代表数据操作,
附图中HashMap表示哈希表,如监控对象HashMap表示监控对象哈希表,采集任务HashMap表示采集任务哈希表;Queue表示队列,如采集结果数据Queue表示采集结果数据队列,数据输出任务Queue表示数据输出任务队列;influxdb是指时间序列数据库;redis是一个中间件产品。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
本发明提供的运维数据采集装置包括数据中心单元、采集任务单元、数据加工单元和数据输出单元,以上四个单元的作用分别为:
数据中心单元,用于建立和维护监控对象哈希表,监控对象哈希表包括监控对象的基础信息、脚本参数和实时指标数据;其中监控对象的基本信息和脚本参数可以来自mysql数据库,实时指标数据的格式由模板配置文件定义,实时指标数据的内容由数据加工单元对采集到的数据进行加工处理后填充、更新。
采集任务单元,负责执行采集任务,调度监控脚本,并获取监控脚本的输出内容;具体是根据监控对象哈希表调度监控对象脚本,并获取监控对象脚本的输出内容,输出内容作为采集结果组建成采集结果数据队列。
数据加工单元,用于对采集结果数据队列中的数据进行整合加工,经整合加工处理后的数据组建成目标数据队列,并可以用于更新数据中心单元建立的监控对象哈希表。
数据输出单元,用于将目标数据队列里的数据输出到引擎外部,包括以下一种或几种方式处理:
1)根据配置要求将监控对象存储于数据输出数据队列中的目标指标计算成top排行榜数据,写入到中间件,供页面展示模块调用展示,例如一个实时刷新的服务器网卡流出速度排行榜;
2)根据配置文件要求将数据输出任务队列中的监控对象实时指标数据发送到数据分析平台,供其进行更复杂的业务分析、告警处理等等;本文中可以通过tcp长连接或其他方式发送到数据分析平台。
本文中的数据中心单元在配置文件的配置下定期将监控对象哈希表中需要存储的监控对象数据写入到时间序列数据库。
本文提供的采集引擎通过数据中心单元、采集任务单元和数据加工单元即可实现对监控对象的数据采集、处理以及监控对象数据的更新,数据输出单元根据需要设置,用于对监控对象数据读取,并输出到引擎外部。
在此,数据中心单元、采集任务单元、数据加工单元以及数据输出单元的工作内容或者工作状态由配置文件来调整,具体如下:
数据中心单元的主要工作内容是创建并维护所有被监控对象以及监控对象的实时指标数据(数据描述格式是JSON格式),并定期将监控对象实时指标数据存储到时间序列数据库;首先,数据中心单元创建被监控对象的时候,对象的类型(比如是网络设备或是服务器等)、对象的数据格式(JSON的层次结构)、对象的数据内容(比如服务器的cpu使用率,内存使用率,磁盘容量等指标),都是依据配置文件来定义的,这个配置文件就是本文提到的数据对象模板。其次,数据中心单元将监控对象指标数据写入到时间序列数据库时候的行为,也是由配置文件来约束的,比如网络设备需要写入cpu占用率、端口上行流量、端口下行流量等,并且需要1分钟写入一次,比如http应用需要写入连接时间、响应时间、下载速度等,并且需要30秒写入一次。配置文件会约束何种设备需要每间隔多久将哪些指标写入到时序数据库。
采集任务单元,主要工作内容就是采集数据,步骤是先装配采集任务,再根据任务属性执行采集动作,装配采集任务的过程是根据采集任务配置文件完成的,任务配置文件里定义了任务所属的对象类型(比如是MySql数据库或者是Linux服务器等)、采集任务所需要调用的采集程序或脚本、采集程序或脚本所需要的参数、采集任务的调用间隔时间、采集任务是快速任务还是慢速任务。采集任务单元装配完采集任务后,即开始执行采集,调用采集脚本或程序,然后收集采集脚本或采集程序返回的采集结果数据,***采集结果队列。
数据加工单元,工作内容就是对采集任务单元采集到的数据,进行加工处理,处理之后,更新到数据中心单元的监控对象里,其加工过程,由配置文件定义和约束。数据加工过程主要分为三个步骤,1从采集结果取待加工指标(采集结果也是JSON格式的数据集合),2.取到的指标进行计算或者拷贝,3.填充到加工结果(加工结果也是JSON格式的数据集合)。这三个步骤中,第一步取指标,配置文件里约束了哪种设备类型的哪个采集任务到采集结果的哪个节点去取指标;第二步加工,配置文件里定义了这个指标需要怎样的计算(求速度、求差值、求和、求比率);第三步,配置文件定义了这个加工后的数据,填充到结果集的哪个位置。
本文提供采集引擎主要为复杂的运维***中的数据分析平台提供数据,当然也可以用于其它数据采集。
本文中,采集任务单元包括:
任务集合子单元,遍历所述监控对象哈希表,并用采集任务配置文件将监控对象哈希表中的所有监控对象逐个匹配,经采集任务配置文件匹配后装配成采集任务哈希表;
任务分配器,读取所述采集任务哈希表中的任务信息,根据任务属性将采集任务分配给不同的任务采集线程池;
任务采集线程池,根据任务分配器的分配调用监控对象脚本并收集监控对象脚本返回的输出内容,并将输出内容写入采集结果数据队列中;在此任务采集线程池包括用于处理快速任务的快速任务采集线程池、用于处理一般任务的一般任务采集线程池和用于处理失败任务的失败任务采集线程池。
在此采集任务文件配置用于设定一个或多个采集任务,每个采集任务的要素包括任务名称、采集监控对象类型、需要调用的监控对象脚本的命令模板、采集监控对象脚本所需的参数名称、每监控对象每次采集的间隔时间、采集任务属性以及用于加工此次采集结果的加工配置文件模板;其中所述采集监控对象脚本所需的参数名称中的参数具体值从所述监控对象哈希表中获取。
参照图1所示,本文提供的采集引擎启动后,创建了4个线程,分别完成数据中心单元、采集任务单元、数据加工单元和数据输出单元的功能,具体的采集过程为:
监控对象哈希表的建立,启动数据中心线程,载入对象模块配置用于对读取MySql数据库获取监控对象的基本信息和脚本参数后载入监控对象数据,并将该数据对比内存监控对象数据集合,得到监控对象哈希表;其中从MySql数据库读取监控对象数据并将该数据对比的过程为:就是从MySql读取监控对象之后,如果此监控对象在监控对象哈希表中已经存在,那么需要对比一下此对象基本属性(比如账号、密码)是否已经被修改了,因为对象添加、修改、删除,是在web页面完成的,如果对象被页面修改了,那么需要重新建立这个内存监控对象,以及重新装配这个监控对象的采集任务。
监控对象哈希表建立完成后判断是否存在更新,如果存在更在则利用经数据加工单元加工处理后的数据更新监控对象的基本信息和数据结构;如不存在则不进行更新;判断是否达到时许化时间,如到达则计算时许化数据后写入时间序列数据库,如未达到则等待并判断整个采集程序是否退出,如是则结束。
监控对象哈希表建立后,采集任务线程载入采集任务配置,遍历监控对象哈希表,读取监控对象数据,并用采集任务配置文件将监控对象哈希表中的所有监控对象逐个匹配,经采集任务配置文件匹配后装配成采集任务哈希表。
待采集任务提取时间到达时,获取就绪的任务通过任务分配器根据采集任务属性分配至不同任务采集线程池,任务采集线程池调用监控对象脚本并收集监控对象脚本返回的输出内容,并将输出内容写入采集结果数据队列中。
数据加工线程启动后载入加工配置,从采集结果数据队列中读取队列数据作为待加工数据,对待加工数据的本次数值与上次数值进行求差值、速度、峰值等加工计算得到目标数据,该目标数据用于组建目标数据队列,并用于更新监控对象哈希表中监控对象数据。
数据输出线程启动后,载入输出配置,根据配置添加数据输出任务,根据数据输出任务从目标数据队列中读取数据组建数据输出任务队列;数据输出单元根据数据输出任务从数据输出任务队列中读取数据,进行以下一种或几种方式处理:
1)时许化存储,根据存储配置定期抽取数据输出任务队列中需要存储的指标,写入到时间序列数据库。时许化存储就是把数据按时间序列进行定期的存储。
2)根据配置要求将监控对象存储于数据输出数据队列中的目标指标计算成top排行榜数据,写入到中间件,供页面展示模块调用展示,例如一个实时刷新的服务器网卡流出速度排行榜;
top排行榜数据:是一个数据集合,中心思想是表述某一类监控对象的某个指标的排行情况,比如当前监控范围内的服务器cpu占用最高的前10台机器。
Top排行榜的实现过程:首先,在配置文件里面增加一个排行榜设定,配置好此排行榜的名称、监控对象类型、需要展示的字段、用来计算排行的字段、排行榜高度(高度代表此集合有几个对象,例如100台服务器,只需要计算展示出前10台机器即可。另外,所配置的字段必须在采集到的实时数据里面存在);然后,本程序采集到相应对象的相应指标后,就会填充此排行榜,并且根据实时数据情况,不断刷新此排行榜的对象和对象指标数据。根据监控业务需求,可以在配置文件设定多个、各种各样的排行榜。
3)根据配置文件要求将数据输出任务队列中的监控对象实时指标数据发送到数据分析平台,供其进行更复杂的业务分析、告警处理等等;本文中可以通过tcp长连接或其他方式发送到数据分析平台。
本文中采集任务配置文件用于设定一个或多个采集任务,每个采集任务的要素包括任务名称、采集监控对象类型、需要调用的监控对象脚本的命令模板、采集监控对象脚本所需的参数名称、每监控对象每次采集的间隔时间、采集任务属性以及用于加工此次采集结果的加工配置文件模板;其中采集监控对象脚本所需的参数名称中的参数具体值从S01步骤建立的对象哈希表获取。采集任务属性可以根据任务情况设置为一般任务属性、快速任务属性和失败任务属性,每个采集任务初始配置时可被赋予快速任务属性或一般任务属性,如需要快速检查的、被监控对象可以快速响应的、采集引擎和被监控对象性能需求小的采集任务,可以赋予“快速”属性,而其他交互比较慢的、不需要频繁采集的,可以赋予“一般”属性。在数据采集过程中如果某个采集任务超时了或者失败了,那么将这个采集任务被临时赋予“失败”属性,直到这个采集任务采集成功后,恢复其原来的属性。
每个采集任务可以根据主机情况和现场情况来定义采集间隔时间,快速任务一般采集间隔时间比较短,一般任务间隔时间可以长一些。采集动作由任务采集线程池完成,任务采集线程池包括用于执行快速任务的快速任务采集线程池、执行一般任务的一般任务采集线程池和执行失败任务的失败任务采集线程池。每个线程池可根据任务情况和主机情况定义大小,以平衡采集主机性能和监控需求。
本文在初始时对每个采集任务进行属性配置,但配置成快速的任务,在真正执行的时候,也可能会被安排到慢速任务队列里面,参考因素是次任务上次执行是否失败,如果上次执行失败了,那么即使任务配置文件里的属性是快速任务,那么本次执行也安排在慢速任务队列里面。如图2所示,具体步骤为:
步骤S0231:判断提取时间到达的采集任务是否正在执行,如不是则执行步骤S0232;反之则执行步骤S0235;
步骤S0232:判断提取时间到达的采集任务的上次执行是否失败,如是,则将提取时间到达的采集任务***失败任务队列;反之执行步骤S0233;
步骤S0233:判断提取时间到达的采集任务的任务配置是否属于快速任务,如是则将提取时间到达的采集任务***快速任务队列中;反之则执行步骤S0234;
步骤S0234:判断提取时间到达的采集任务中的被监控对象是否有正在执行的一般任务,如有则将提取时间到达的采集任务不执行,等待下一次提取,反之则将提取时间到达的采集任务***一般任务队列;
步骤S0235:判断提取时间到达的采集任务的上次执行是否已经超时,如是在,则杀死正在执行的任务,等待下一次提取时间;如不是则等待下一次提取。
在一般任务和失败任务执行前,判断提取时间到达的采集任务是否还有正在执行的一般任务或失败任务,如果有,那么则等待下一次被获取,因为一般任务可以设计的复杂一些,占用采集主机和被监控机资源多一些,所以不让同一个对象面对多个复杂任务,而且有些情况可能多个一般任务是互相冲突的;失败任务则多数是因为被监控机宕机或者掉线等原因导致任务失败,避免了多个任务一同运行而占用采集主机的线程资源、cpu资源等等的情况。
采集任务属性确定后分别通过快速任务采集线程池、一般任务采集线程池和失败任务采集线程池执行采集命令,并获取返回结果,***采集结果数据队列,采集结果数据队列中的结果可用于更新采集任务哈希表中采集任务状态。
在采集任务哈希表装配过程中还包括采集任务配置和监控对象数据是否更新的判断,如存在更新则更新读取采集任务配置,如不存在更新则判断是否结束采集任务,如是则结束,如不是则继续判断采集任务配置和监控对象数据是否更新,依次循环。
参照图3所示,本文数据加工的基本过程是:提取待加工数据,跟据待加工数据的对象类型、采集任务类型、目标模板名称等信息,分别查找到此次数据加工所需的源模板、加工模板、目标模板,然后进行计算,计算结果***到目标数据队列。
本文中通过配置文件指定源数据格式、计算依据、目标数据格式,以达到采集后灵活装配,灵活输出的目的。
经数据加工单元处理后的数据可以采用映射方式更新监控对象哈希表中的监控对象数据的实时指标数据,一个监控对象的实时指标数据可能由多个脚本不同时机采集刷新,多个脚本各有各的数据格式,表达一个监控对象的实时数据又是引擎为了分析和展示定义的统一的数据格式,可能有各种子对象、子集合等等,所以这个映射装配规则有灵活的配置项。
本文中:
数据源是指的采集到的待加工数据。
对象类型例如网络设备、windows服务器、liux服务器、mysql数据库、aphach服务等等。
采集任务类型:就是这个任务面向的对象是网络设备还是服务器等等。
目标模板名称:目标模板是采集任务对应的数据加工模板,后面根据这个模板将采集到的数据加工成目标数据。
源模板、加工模板、目标模板都是配置文件里面配置的东西,采集到的数据就是数据源,其是按源模板组织的,数据源加工是依据加工模板来加工的,加工结果是按目标模板组织的。
本文中数据交换格式为JSON,因为JSON格式易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率;也可以用XML及ASN.1等等。
本采集引擎是多线程池形式的程序,也可以以多进程的形式实现。本采集引擎用到的哈希表、队列等数据对象也可以用中间件形式代替。
本文中:
JSON:(JavaScript Object Notation,JS对象简谱)是一种轻量级的数据交换格式。它基于ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
XML:可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。
ASN.1:ASN.1抽象语法标记(Abstract Syntax Notation One)ASN.1是一种ISO/ITU-T标准,描述了一种对数据进行表示、编码、传输和解码的数据格式。它提供了一整套正规的格式用于描述对象的结构,而不管语言上如何执行及这些数据的具体指代,也不用去管到底是什么样的应用程序。
中间件:中间件是介于应用***和***软件之间的一类软件,它使用***软件所提供的基础服务(功能),衔接网络上应用***的各个部分或不同的应用,能够达到资源共享、功能共享的目的。目前,它并没有很严格的定义,但是普遍接受IDC的定义:中间件是一种独立的***软件服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作***之上,管理计算资源和网络通信。从这个意义上可以用一个等式来表示中间件:中间件=平台+通信,这也就限定了只有用于分布式***中才能叫中间件,同时也把它与支撑软件和实用软件区分开来。
进程:是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有***资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。
线程:(英语:thread)是操作***能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。线程是独立调度和分派的基本单位。线程可以为操作***内核调度的内核线程,如Win32线程;由用户进程自行调度的用户线程,如Linux平台的POSIX Thread;或者由内核与用户进程,如Windows 7的线程,进行混合调度。同一进程中的多条线程将共享该进程中的全部***资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(registercontext),自己的线程本地存储(thread-local storage)。一个进程可以有很多线程,每条线程并行执行不同的任务。
本文提供的采集引擎和方法可以用于任何运维数据采集,具体采集内容,是根据项目实际运维需要配置的,例如现在业界普遍都采集的:网络设备运行状态、端口数量、每个端口状态、每个端口上行流量下行流量上行丢包率下行丢包率登。服务器的:cpu使用率、内存使用率、硬盘使用率、各种数据库的运行状态、用户连接数、相应时间、表空间情况、命中率情况。
打印机运行状态、是否缺纸、各个墨盒状态,或是其他例如虚拟机、云服务器、摄像头、机房电源、机房空调、烟感、温湿度等等,都可以配置进去进行监控并集中展示。
本公开已由上述相关实施例加以描述,然而上述实施例仅为实施本公开的范例。必需指出的是,已揭露的实施例并未限制本公开的范围。相反,在不脱离本公开的精神和范围内所作的变动与润饰,均属本公开的专利保护范围。
Claims (16)
1.一种运维数据采集装置,其特征在于,该装置包括:
数据中心单元,用于建立和维护监控对象哈希表;
采集任务单元,依据建立的监控对象哈希表和采集任务配置文件装配采集任务哈希表,根据装配的采集任务哈希表调度监控对象脚本并获取所述监控对象脚本的输出内容,所述输出内容作为采集结果组建成采集结果数据队列;
数据加工单元,用于对所述采集结果数据队列中的数据进行加工,经加工处理后的数据组建成目标数据队列,并可以用于更新所述数据中心单元建立的监控对象哈希表;
所述数据中心单元、所述采集任务单元和所述数据加工单元的工作内容或者工作状态通过配置文件来调整。
2.根据权利要求1所述的运维数据采集装置,其特征在于:还包括数据输出单元,所述数据输出单元用于读取所述监控对象哈希表中的监控对象数据,并将读取到的监控对象数据输出到引擎外部,包括以下一种或几种方式处理:
1)根据配置文件要求将所述监控对象数据的目标指标计算成top排行榜数据,写入到中间件,供页面展示模块调用展示;
2)根据配置文件要求将读取到的监控对象数据的目标指标数据发送到数据分析平台。
3.根据权利要求1或2所述的运维数据采集装置,其特征在于:所述数据中心单元在配置文件的配置下定期将所述监控对象哈希表中需要存储的监控对象数据写入到时间序列数据库。
4.根据权利要求1或2所述的运维数据采集装置,其特征在于,所述采集任务单元包括:
任务集合子单元,遍历所述监控对象哈希表,并用采集任务配置文件将所述监控对象哈希表中的所有监控对象逐个匹配,经采集任务配置文件匹配后装配成采集任务哈希表;
任务分配器,读取所述采集任务哈希表中的任务信息,根据任务属性将采集任务分配给不同的任务采集线程池;
任务采集线程池,根据所述任务分配器的分配调用监控对象脚本并收集所述监控对象脚本返回的输出内容,并将所述输出内容写入采集结果数据队列中。
5.根据权利要求4所述的运维数据采集装置,其特征在于:所述采集任务文件配置用于设定一个或多个采集任务,每个采集任务的要素包括任务名称、采集监控对象类型、需要调用的监控对象脚本的命令模板、采集监控对象脚本所需的参数名称、每监控对象每次采集的间隔时间、采集任务属性以及用于加工此次采集结果的加工配置文件模板;其中所述采集监控对象脚本所需的参数名称中的参数具体值从所述监控对象哈希表中获取。
6.根据权利要求4所述的运维数据采集装置,其特征在于:所述任务采集线程池包括用于处理快速任务的快速任务采集线程池、用于处理一般任务的一般任务采集线程池和用于处理失败任务的失败任务采集线程池。
7.根据权利要求1或2所述的运维数据采集装置,其特征在于:所述监控对象哈希表、所述采集结果数据队列和所述目标数据队列中的数据格式为JSON格式。
8.一种运维数据采集方法,其特征在于,该方法包括以下步骤:
步骤S01:监控对象哈希表的建立,根据监控对象数据建立监控对象哈希表,所述监控对象数据包括监控对象的基础信息、脚本参数和实时指标数据;
步骤S02:数据采集,依据步骤S01建立的监控对象哈希表和采集任务配置文件装配采集任务哈希表,根据装配的采集任务哈希表调度监控对象脚本并获取所述监控对象脚本的输出内容,所述输出内容作为采集结果组建成采集结果数据队列;
步骤S03:数据加工处理,不断地从步骤S02组建的采集结果数据队列里面提取采集结果进行加工处理,经加工处理后的数据还用于组建成目标数据队列,并可以用于更新所述步骤S01中建立的监控对象哈希表。
9.根据权利要求8所述的运维数据采集方法,其特征在于:还包括数据输出步骤,该步骤读取所述监控对象哈希表中监控对象数据,并将读取到的监控对象数据输出到引擎外部,包括以下一种或几种方式处理:
1)时许化存储,根据存储配置文件要求定期读取所述监控对象哈希表中需要存储的监控对象数据,写入到时间序列数据库;
2)根据配置文件要求将所述监控对象数据的目标指标计算成top排行榜数据,写入到中间件,供页面展示模块调用展示;
3)根据配置文件要求将读取到的监控对象数据的目标指标数据发送到数据分析平台。
10.根据权利要求8所述的运维数据采集方法,其特征在于:所述步骤S02数据采集具体包括以下步骤:
步骤S021:读取采集任务配置文件;
步骤S022:遍历所述S01步骤建立的监控对象哈希表,将里面的所有监控对象逐个匹配步骤S021读取的采集任务配置文件,装配成采集任务哈希表;
步骤S023:提取时间到达的采集任务,根据采集任务属性分配任务并调用监控对象脚本并收集监控对象脚本返回的输出内容。
11.根据权利要求10所述的运维数据采集方法,其特征在于:所述步骤S021读取的采集任务配置文件用于设定一个或多个采集任务,每个采集任务的要素包括任务名称、采集监控对象类型、需要调用的监控对象脚本的命令模板、采集监控对象脚本所需的参数名称、每监控对象每次采集的间隔时间、采集任务属性以及用于加工此次采集结果的加工配置文件模板;其中所述采集监控对象脚本所需的参数名称中的参数具体值从所述S01步骤建立的对象哈希表获取。
12.根据权利要求11所述的运维数据采集方法,其特征在于:所述采集任务属性包括一般任务属性、快速任务属性和失败任务属性,每个采集任务初始配置时可被赋予快速任务属性或一般任务属性。
13.根据权利要求10所述的运维数据采集方法,其特征在于:在执行步骤S023中根据采集任务属性调用监控对象脚本并收集监控对象脚本返回的输出内容之前还进行以下处理:
步骤S0231:判断提取时间到达的采集任务是否正在执行,如不是则执行步骤S0232;反之则执行步骤S0235;
步骤S0232:判断提取时间到达的采集任务的上次执行是否失败,如是,则将提取时间到达的采集任务***失败任务队列;反之执行步骤S0233;
步骤S0233:判断提取时间到达的采集任务的任务配置是否属于快速任务,如是则将提取时间到达的采集任务***快速任务队列中;反之则执行步骤S0234;
步骤S0234:判断提取时间到达的采集任务中的被监控对象是否有正在执行的一般任务,如有则将提取时间到达的采集任务不执行,等待下一次提取,反之则将提取时间到达的采集任务***一般任务队列;
步骤S0235:判断提取时间到达的采集任务的上次执行是否已经超时,如是在,则杀死正在执行的任务,等待下一次提取时间;如不是则等待下一次提取。
14.根据权利要求8所述的运维数据采集方法,其特征在于:所述步骤S02采集任务哈希表装配过程中还包括采集任务配置文件和监控对象数据是否更新的判断,如存在更新则更新读取采集任务配置,如不存在更新则判断是否结束采集任务,如是则结束,如不是则继续判断采集任务配置和监控对象数据是否更新,依次循环。
15.根据权利要求8所述的运维数据采集方法,其特征在于:所述步骤S03通过以下步骤对所述采集结果数据队列里的数据进行加工处理:
步骤SA031:从所述采集结果数据队列里提取待加工数据;
步骤SA032:根据提取的待加工数据的对象类型、采集任务类型、目标模板名称分别查找到此次数据加工所需要的源模板、加工模板和目标模板,然后进行计算,计算结果***目标数据队列中。
16.根据权利要求15所述的运维数据采集方法,其特征在于:所述源模板、所述加工模板和所述目标模板的查找分别通过源数据模块配置文件、加工模板配置文件和目标数据模板配置文件查找。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010849458.XA CN111984505B (zh) | 2020-08-21 | 2020-08-21 | 一种运维数据采集装置及采集方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010849458.XA CN111984505B (zh) | 2020-08-21 | 2020-08-21 | 一种运维数据采集装置及采集方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111984505A CN111984505A (zh) | 2020-11-24 |
CN111984505B true CN111984505B (zh) | 2023-06-16 |
Family
ID=73442811
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010849458.XA Active CN111984505B (zh) | 2020-08-21 | 2020-08-21 | 一种运维数据采集装置及采集方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111984505B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112732528B (zh) * | 2021-01-08 | 2022-11-11 | 卓望数码技术(深圳)有限公司 | 基于it运维监控的指标采集方法、***、设备及存储介质 |
CN113553197B (zh) * | 2021-07-21 | 2022-06-03 | 用友汽车信息科技(上海)股份有限公司 | 数据处理方法、装置和可读存储介质 |
CN116467151B (zh) * | 2023-06-19 | 2023-08-25 | 浙江无端科技股份有限公司 | 一种程序性能信息采集方法、装置、设备及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101989939A (zh) * | 2009-07-31 | 2011-03-23 | 同方威视技术股份有限公司 | 实时数据提供方法、服务器和网络 |
CN104281515A (zh) * | 2013-07-09 | 2015-01-14 | 腾讯科技(深圳)有限公司 | 一种日志数据的调整方法和装置 |
CN104615599A (zh) * | 2013-11-05 | 2015-05-13 | 中国空间技术研究院 | 海量数据管理方法和设备 |
CN104915259A (zh) * | 2015-06-15 | 2015-09-16 | 浪潮软件集团有限公司 | 一种应用于分布式采集***的任务调度方法 |
CN106411609A (zh) * | 2016-11-08 | 2017-02-15 | 上海新炬网络信息技术有限公司 | 一种it软硬件运行状态监控*** |
CN106936618A (zh) * | 2015-12-31 | 2017-07-07 | 北京神州泰岳软件股份有限公司 | 一种数据采集方法和*** |
CN106992903A (zh) * | 2017-03-30 | 2017-07-28 | 国网福建省电力有限公司 | 一种基于网络设备的数据采集***及方法 |
CN107247804A (zh) * | 2017-06-30 | 2017-10-13 | 中国工商银行股份有限公司 | 运维大数据分析方法、装置及*** |
US10305758B1 (en) * | 2014-10-09 | 2019-05-28 | Splunk Inc. | Service monitoring interface reflecting by-service mode |
WO2019227689A1 (zh) * | 2018-06-01 | 2019-12-05 | 平安科技(深圳)有限公司 | 数据监控方法、装置、计算机设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9467334B2 (en) * | 2013-06-07 | 2016-10-11 | Apple Inc. | Configuring computing devices using a bootstrap configuration |
US10187249B2 (en) * | 2016-04-29 | 2019-01-22 | Cisco Technology, Inc. | Distributed metric data time rollup in real-time |
WO2019186941A1 (ja) * | 2018-03-29 | 2019-10-03 | 株式会社島津製作所 | 分析情報収集用プログラム及び分析情報収集システム |
-
2020
- 2020-08-21 CN CN202010849458.XA patent/CN111984505B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101989939A (zh) * | 2009-07-31 | 2011-03-23 | 同方威视技术股份有限公司 | 实时数据提供方法、服务器和网络 |
CN104281515A (zh) * | 2013-07-09 | 2015-01-14 | 腾讯科技(深圳)有限公司 | 一种日志数据的调整方法和装置 |
CN104615599A (zh) * | 2013-11-05 | 2015-05-13 | 中国空间技术研究院 | 海量数据管理方法和设备 |
US10305758B1 (en) * | 2014-10-09 | 2019-05-28 | Splunk Inc. | Service monitoring interface reflecting by-service mode |
CN104915259A (zh) * | 2015-06-15 | 2015-09-16 | 浪潮软件集团有限公司 | 一种应用于分布式采集***的任务调度方法 |
CN106936618A (zh) * | 2015-12-31 | 2017-07-07 | 北京神州泰岳软件股份有限公司 | 一种数据采集方法和*** |
CN106411609A (zh) * | 2016-11-08 | 2017-02-15 | 上海新炬网络信息技术有限公司 | 一种it软硬件运行状态监控*** |
CN106992903A (zh) * | 2017-03-30 | 2017-07-28 | 国网福建省电力有限公司 | 一种基于网络设备的数据采集***及方法 |
CN107247804A (zh) * | 2017-06-30 | 2017-10-13 | 中国工商银行股份有限公司 | 运维大数据分析方法、装置及*** |
WO2019227689A1 (zh) * | 2018-06-01 | 2019-12-05 | 平安科技(深圳)有限公司 | 数据监控方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111984505A (zh) | 2020-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111984505B (zh) | 一种运维数据采集装置及采集方法 | |
US20230004434A1 (en) | Automated reconfiguration of real time data stream processing | |
CN109074377B (zh) | 用于实时处理数据流的受管理功能执行 | |
CN108776934B (zh) | 分布式数据计算方法、装置、计算机设备及可读存储介质 | |
CN105049268B (zh) | 分布式计算资源分配***和任务处理方法 | |
CN103092698B (zh) | 云计算应用自动部署***及方法 | |
CN109327509A (zh) | 一种主/从架构的低耦合的分布式流式计算框架 | |
CN110247954A (zh) | 一种分布式任务的调度方法及*** | |
CN107370796B (zh) | 一种基于Hyper TF的智能学习*** | |
CN101146127B (zh) | 一种分布式***中客户端缓存更新的方法和装置 | |
CN112667362B (zh) | Kubernetes上部署Kubernetes虚拟机集群的方法与*** | |
CN102880503A (zh) | 数据分析***及数据分析方法 | |
CN110971939B (zh) | 一种违规图片的识别方法及相关装置 | |
CN109194617A (zh) | Xml报文的自动解析、封装方法和装置 | |
US10498817B1 (en) | Performance tuning in distributed computing systems | |
CN109271243B (zh) | 一种集群任务管理*** | |
CN110912782B (zh) | 一种数据采集方法、装置及存储介质 | |
CN111026602A (zh) | 一种云平台的健康巡检调度管理方法、装置及电子设备 | |
CN104468274A (zh) | 一种集群监控管理方法及*** | |
CN110489205A (zh) | 一种基于容器集群的教育服务架构*** | |
US10489179B1 (en) | Virtual machine instance data aggregation based on work definition metadata | |
Bedini et al. | Modeling performance of a parallel streaming engine: bridging theory and costs | |
CN112698838A (zh) | 多云容器部署***及其容器部署方法 | |
CN113761079A (zh) | 数据访问方法、***和存储介质 | |
CN112307046A (zh) | 数据采集方法和装置、计算机可读存储介质、电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |