数据采集方法和装置与流程

文档序号:14137588阅读:261来源:国知局
数据采集方法和装置与流程

本申请涉及互联网数据存储技术,具体涉及一种数据采集方法和装置。



背景技术:

hadoop是一个提供海量数据存储和计算的分布式平台。用户可以轻松地在hadoop上开发和运行处理海量数据的应用程序。数据埋点采集是数据分析的一种常用的数据采集方法。数据埋点分为初级、中级、高级三种方式。

初级:在产品、服务转化关键点植入统计代码,据其独立id确保数据采集不重复(如购买按钮点击率);

中级:植入多段代码,追踪用户在平台每个界面上的系列行为,事件之间相互独立(如打开商品详情页——选择商品型号——加入购物车——下订单——购买完成);

高级:联合公司的工程、etl(extract-transform-load)数据仓库采集分析用户全量行为,建立用户画像,还原用户行为模型,作为产品分析、优化的基础。

手动埋点工程量极大、容易出错,其开发周期长,耗时费力,很多公司并不具备自己埋点的能力。埋点式采集的部署、维护复杂度和成本较高。



技术实现要素:

有鉴于此,本申请实施例提供了无埋点式的数据采集方法和装置,以解决埋点式数据采集的上述技术问题。

根据本申请实施例的一个方面,提供了一种数据采集方法,该方法包括:读取配置信息,所述配置信息包括节点信息、集群名称以及监控项;根据节点信息确定hadoop集群的主节点;访问所述主节点,根据所述集群名称获取所述hadoop集群的节点拓扑结构;并发访问所述节点拓扑结构中的每个节点,从每个节点的监控记录中获取与所述监控项对应的监控数据。

在一个实施例中,所述数据采集方法还包括:将所述监控数据按照不同的监控项存储至时间序列数据库。

优选的,将所述监控数据按照不同的监控项存储至时间序列数据库包括:在所述时间序列数据库中将所述监控数据按照不同的监控项分别保存;对监控数据用标签进行标注,以区分不同的数据源。

优选的,将所述监控数据按照不同的监控项存储至时间序列数据库进一步还包括:在所述时间序列数据库中对监控数据按照不同的数据源分别进行聚合。

在一个实施例中,所述数据采集方法还包括:接收针对监控项的数据查询请求;根据请求的监控项从所述时间序列数据库中输出对应的监控数据作为查询结果。

在一个实施例中,所述数据采集方法还包括:将获取到的监控数据接入具有报警功能的运维自动化系统,由所述运维自动化系统根据不同监控项的预设报警策略输出报警信息。

在一个实施例中,所述数据采集方法还包括:利用网络爬虫工具抓取所述hadoop集群对应的前端服务页面的操作数据;将所述操作数据接入运维自动化系统,由所述运维自动化系统根据操作数据的预设报警策略输出报警信息。

根据本申请实施例的另一个方面,提供了一种数据采集装置,所述装置包括:读取模块,用于读取配置信息,所述配置信息包括节点信息、集群名称以及监控项;主节点选择模块,用于根据节点信息确定hadoop集群的主节点;集群拓扑获取模块,用于访问所述主节点,根据所述集群名称获取所述hadoop集群的节点拓扑结构;监控数据获取模块,用于并发访问所述节点拓扑结构中的每个节点,从每个节点的监控记录中获取与所述监控项对应的监控数据。

在一个实施例中,所述数据采集装置还包括:监控数据存储模块,用于将所述监控数据按照不同的监控项存储至时间序列数据库。

优选的,监控数据存储模块包括:存储单元,用于在所述时间序列数据库中将所述监控数据按照不同的监控项分别保存;标注单元,用于对监控数据用标签进行标注,以区分不同的数据源。

优选的,监控数据存储模块进一步还包括:聚合单元,在所述时间序列数据库中对监控数据按照不同的数据源分别进行聚合。

在一个实施例中,所述数据采集装置还包括:查询请求接收模块,用于接收针对监控项的数据查询请求;查询结果输出模块,用于根据请求的监控项从所述时间序列数据库中输出对应的监控数据作为查询结果。

在一个实施例中,所述数据采集装置还包括:监控数据接入模块,用于将获取到的监控数据接入具有报警功能的运维自动化系统,由所述运维自动化系统根据不同监控项的预设报警策略输出报警信息。

在一个实施例中,所述数据采集装置还包括:操作数据抓取模块,用于利用网络爬虫工具抓取所述hadoop集群对应的前端服务页面的操作数据;操作数据存储模块,用于将所述操作数据接入运维自动化系统,由所述运维自动化系统根据操作数据的预设报警策略输出报警信息。

根据本申请实施例的另一个方面,提供了一种电子设备,包括存储器和处理器;存储器用于存储一条或多条计算机指令,其中,一条或多条计算机被所述处理器执行以实现上述数据采集方法。

根据本申请实施例的另一个方面,提供了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现上述数据采集方法。

本申请实施例的有益效果包括:本申请实施例提供的无埋点式的采集方法基于hadoop集群的监控项(metrics),根据配置信息中设置的需要被采集的监控项并发访问节点拓扑结构中的每个节点,从每个节点的监控记录中获取相应监控项的监控数据,从而提升hadoop集群数据采集的开发和维护效率,节约成本。

附图说明

通过以下参照附图对本申请实施例的描述,本申请的上述以及其它目的、特征和优点将更为清楚,在附图中:

图1是本申请实施例的hadoop集权数据采集系统的架构示意图;

图2是本申请实施例提供的数据采集方法的流程示意图;

图3是本申请实施例提供的数据采集装置的框图;

图4是本申请实施例提供的电子设备的结构示意图。

具体实施方式

以下基于实施例对本申请进行描述,但是本申请并不仅仅限于这些实施例。在下文对本申请的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本申请。为了避免混淆本申请的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。

此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。

除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。

在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。

本申请实施例提供了针对hadoop集群的无埋点式监控数据采集方法,首先确定hadoop集群的主节点,将主节点作为采集监控数据的入口,通过主节点和集群名称获取该hadoop集群的节点拓扑结构,然后并发访问节点拓扑结构中的每个节点,根据配置信息中设置的需要被采集数据的监控项(metrics)从每个节点的监控记录中获取相应监控项的监控数据。这种无埋点式的采集方法基于hadoop集群的监控项,能够提升hadoop集群数据采集的开发和维护效率并且节约成本。

图1是本申请实施例对hadoop集群进行无埋点式数据采集的系统架构示意图,该系统可采用python语言进行设计,系统包括服务器10、hadoop集群11、浏览器(web)页面12和运维自动化系统13。在本申请实施例中由服务器10来采集hadoop集群11的监控数据。

hadoop集群11包括主节点(master)111和从节点(slave)112,主节点111负责监控两个核心功能:hadoop分布式文件系统(hadoopdistributedfilesystem,hdfs)以及数据并行计算(mapreduce)。从hdfs的角度来看,各个节点被划分为名称节点(namenode)和数据节点(datanode);从mapreduce角度来看,各个节点被划分为资源管理节点(resoucemanager)和节点管理器(nodemanager)。名称节点和资源管理节点运行在主节点111,名称节点负责监控以及协调hdfs的工作,资源管理节点则负责监督以及协调mapreduce的并行计算。而从节点112则负责具体的任务以及数据存储。每个从节点112运行一个数据节点和一个节点管理器守护进程,这两个守护进程负责与主节点111通信。

在服务器10架设时间序列数据库101,例如opentsdb(一种基于hbase的可扩展的时间序列数据库),用于按照不同的监控项存储获取到的监控数据。时间序列数据库101还可以通过浏览器页面12对外提供针对各个监控项的监控数据查询和展示服务。由于时间序列数据库101不能提供报警功能,服务器10还可以将获取到的监控数据接入具有报警功能的运维自动化系统13,由运维自动化系统13监测各个监控项的数据并完成自动报警。

基于上述系统架构,本申请实施例提供了一种数据采集方法,适用于服务器10,如图2所示,该方法包括以下步骤。

s10,读取配置信息,配置信息包括节点信息、集群名称以及监控项。

配置信息预先设置于服务器的配置文件中,例如名称为“hadoop-metrics.properties”的配置文件。其中,节点信息可以是需要进行监控的hadoop集群的主节点的ip地址;或者是主节点及其备用节点的多个ip地址。例如,以两个主节点为例,节点信息和集群名称的格式为ip(主节点)_集群名称_ip(备用节点)。

集群名称是指需要获取监控数据的hadoop集群的名称。在配置信息中设置的监控项是需要对hadoop集群进行数据监控的一个或多个监控项,例如接口调用次数、响应时间、读写量等等。服务器会根据配置信息中设置的监控项访问hadoop集群的各个节点并获取对应的监控数据。

s11,根据节点信息确定hadoop集群的主节点。

服务器首先需要根据节点信息完成选取主节点的操作。如果配置信息中只存在一个节点的节点信息,则获取该节点的状态信息,判断其是否为当前的主节点,例如,在节点状态信息中字段isactivemaster的值为true则代表该节点为当前的主节点。如果配置信息中存在多个节点(主节点及其备用节点)的节点信息,则获取这些节点的状态信息并选取当前的主节点,例如,在节点状态信息中字段isactivemaster的值为true的节点即为当前的主节点,该字段值为false的节点则为备用节点或者故障节点。确定hadoop集群当前的主节点后,以该主节点作为获取整个hadoop集群监控数据的入口。

s12,访问主节点,根据集群名称获取hadoop集群的节点拓扑结构。

服务器访问主节点,根据配置信息中的集群名称向主节点请求其所在hadoop集群的节点拓扑结构。节点拓扑结构包括主节点下的所有从节点及备用节点的节点信息,例如从节点及备用节点的ip地址、端口号、主机名、存储容量等信息。

服务器可以定期访问主节点获取节点拓扑结构,例如,每10秒访问一次主节点。对hadoop集群进行扩容时,需要将新的从节点的主机名加入到主节点的从节点列表(slaves)中;或者对hadoop集群进行缩容时,需要在从节点列表中将被移出hadoop集群的从节点的主机名删除;然后,主节点会刷新节点拓扑结构。服务器在定期访问过程中能够获取到当前最新的节点拓扑结构。因此,服务器可以动态的获取到最新的节点拓扑结构,对hadoop集群的扩容、缩容完全透明。

s13,并发访问节点拓扑结构中的每个节点,从每个节点的监控记录中获取与监控项对应的监控数据。

在hadoop集群中通过js对象标记(javascriptobjectnotation,json)定义集群运行中的监控项,以key-value的键值对形式进行展现,每个键值对代表一个监控项。

服务器根据节点拓扑结构中的ip地址、主机名、端口号等信息并发访问该节点拓扑结构中的每个节点,从每个节点的监控记录(metricscontext)中获取与配置信息中设置的监控项对应的监控数据(metricsrecord)。

每个context都可以启动一个监听(monitor)线程来按一定周期来收集数据。更新器(updater)是数据收集的主体,最重要的是doupdates方法。将更新器注册到监控记录(metricscontext)中,context的监听线程就会定期调用更新器的doupdates方法来抓取数据。通常在doupdates方法中会对各种监控项的数据做初步计算处理并推送(push)到监控数据(metricsrecord)中。每个record是一个时间周期下的一条数据,每个context下可以包含多个record。context调用doupdates方法收集到record后,再将它发送给java管理扩展(javamanagementextensions,jmx)文件或者其他工具。

例如,服务器和hadoop集群可以利用工具ganglia收集监控数据。hadoop集群中的各个节点运行gmond程序,收集所在节点的监控数据,服务器运行的gmetad周期性的轮询每个节点的gmond来获取监控项对应的监控数据。

本实施例中,服务器利用节点信息确定hadoop集群的主节点,通过该主节点根据集群名称获取hadoop集群的节点拓扑结构,再利用监控项从节点拓扑结构中的每个节点获取对应的监控数据,从而构建出一种无埋点式的hadoop集群数据采集方法,节约了hadoop集群数据开发和维护的成本并提高了效率。

在一个实施例中,在服务器本地或者在服务器之外架设时间序列数据库。服务器获取到的监控数据后,将监控数据按照不同的监控项存储到时间序列数据库。由于服务器可以定时或者周期性的获取监控数据,所以可利用时间序列数据库为监控数据打上时间标签并进行保存。该时间序列数据库优选为一种分布式的,可扩展的时间序列数据库opentsdb(opentimeseriesdatabase)。并且,存储到opentsdb的数据是以监控项(metrics)为单位的,这样便能够与服务器配置文件中的监控项对应起来,将监控数据按照不同的监控项对应保存。opentsdb使用hadoop数据库(hbase)作为存储,对监控项的数据存储支持到秒级别。

在时间序列数据库中存储监控数据时,还可以利用标签(tags)对监控数据进行标注,以区分监控数据的数据源,便于确定其来自于hadoop集群中的哪个节点。例如,在opentsdb中,标签的形式为“tagk=tagv”,tagk代表标签名,tagv代表内容,比如tags:host=datanode42。

优选的,在时间序列数据库中,对来自不同数据源的监控数据进行聚合。例如,首先将来自不同hadoop集群的监控数据分别进行聚合,进一步对来自同一hadoop集群的监控数据,再按照不同节点分别进行聚合,便于对各个监控项的监控数据进行对比。

服务器利用时间序列数据库提供数据查询服务时,可对外提供浏览器页面用于监控数据的查询和展示。服务器接收到从浏览器页面输入的查询请求后,从时间序列数据库获取查询结果并在页面进行展示。

查询请求中包含用户输入的查询条件,如果按照查询粒度进行划分,该查询条件可以包括集群名称、节点的主机名、监控项等,其中,监控项可以被配置为与服务器配置文件中设置的监控项对应,以确保相应监控项的数据已被采集并且能够被成功查询。

由于时间序列数据库只提供数据查询功能,而并不具备报警功能,所以服务器还可以进一步将采集到的监控数据接入到具有报警功能的运维自动化系统,例如noah系统。在运维自动化系统中针对不同监控项预先设置不同的报警策略。服务器将采集到的监控数据接入运维自动化系统后,运维自动化系统按照报警策略对不同监控项的数据进行实时判断。当某个监控项的数据满足报警策略中的触发条件时,运维自动化系统输出报警信息。报警信息可以通过邮件、短信、电话等方式送达用户。

在一个实施例中,服务器还可以为上述浏览器页面配置网络爬虫工具,用来抓取用户在浏览器页面的操作数据。服务器将抓取的操作数据接入运维自动化系统,由运维自动化系统针对操作数据按照预设报警策略进行实时判断,例如,如果浏览器页面针对某个节点的查询或者访问量达到预设阈值时,则触发运维自动化系统输出相应的报警信息。

对应于上述数据采集方法,本申请实施例还提供了一种数据采集装置,如图3所示,该装置包括:

读取模块30,用于读取配置信息,配置信息包括节点信息、集群名称以及监控项;

主节点选择模块31,用于根据节点信息确定hadoop集群的主节点;

集群拓扑获取模块32,用于访问主节点,根据集群名称获取hadoop集群的节点拓扑结构;

监控数据获取模块33,用于并发访问节点拓扑结构中的每个节点,从每个节点的监控记录中获取与监控项对应的监控数据。

在一个实施例中,该数据采集装置还包括:

监控数据存储模块,用于将监控数据按照不同的监控项存储至时间序列数据库。

优选的,该监控数据存储模块包括:

存储单元,用于在时间序列数据库中将监控数据按照不同的监控项分别保存;

标注单元,用于对监控数据用标签进行标注,以区分不同的数据源。

优选的,监控数据存储模块还可以进一步包括:

聚合单元,在所述时间序列数据库中对监控数据按照不同的数据源分别进行聚合。

在一个实施例中,该数据采集装置还包括:

查询请求接收模块,用于接收针对监控项的数据查询请求;

查询结果输出模块,用于根据请求的监控项从时间序列数据库中输出对应的监控数据作为查询结果。

在一个实施例中,该数据采集装置还包括:

监控数据接入模块,用于将获取到的监控数据接入具有报警功能的运维自动化系统,由所述运维自动化系统根据不同监控项的预设报警策略输出报警信息。

在一个实施例中,该数据采集装置还包括:

操作数据抓取模块,用于利用网络爬虫工具抓取hadoop集群对应的前端服务页面的操作数据;

操作数据存储模块,用于将操作数据接入运维自动化系统,由运维自动化系统根据操作数据的预设报警策略输出报警信息。

此外,数据采集装置还可以通过硬件处理器(hardwareprocessor)来实现上述各个程序步骤。下面参考图4,其示出了适于用来实现本申请实施例的电子设备的计算机系统600的结构示意图。图4示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

如图4所示,计算机系统600包括中央处理单元(cpu)601,其可以根据存储在只读存储器(rom)602中的程序或者从存储部分608加载到随机访问存储器(ram)603中的程序而执行各种适当的动作和处理。在ram603中,还存储有系统600操作所需的各种程序和数据。cpu601、rom602以及ram603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。

以下部件连接至i/o接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至i/o接口606。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(cpu)601执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括读取模块、主节点选择模块、集群拓扑获取模块、监控数据获取模块。

作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中所述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入电子设备中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当所存储的一个或者多个程序被一个设备执行时,使得所述设备:读取配置信息,配置信息包括节点信息、集群名称以及监控项;根据节点信息确定hadoop集群的主节点;访4问主节点,根据集群名称获取hadoop集群的节点拓扑结构;并发访问所拓扑结构中的每个节点,从每个节点的监控记录中获取与监控项对应的监控数据。

以上所述仅为本申请的优选实施例,并不用于限制本申请,对于本领域技术人员而言,本申请可以有各种改动和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1