本發(fā)明涉及數(shù)據(jù)采集技術(shù)領(lǐng)域,具體涉及一種數(shù)據(jù)采集監(jiān)控方法及裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)的發(fā)展,業(yè)務(wù)量急劇增長(zhǎng),提供服務(wù)的服務(wù)器集群規(guī)模越來(lái)越龐大,提供的服務(wù)類(lèi)型也越來(lái)越復(fù)雜。這種大數(shù)據(jù)背景下的業(yè)務(wù)日志數(shù)據(jù)采集的可靠性顯得越來(lái)越重要。
目前主流的業(yè)務(wù)日志數(shù)據(jù)采集系統(tǒng)是Cloudera提供的一個(gè)高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸?shù)腇lume系統(tǒng)。目前,基于Flume系統(tǒng)的業(yè)務(wù)日志數(shù)據(jù)采集流程具體如下:首先,采用Flume系統(tǒng)對(duì)業(yè)務(wù)日志數(shù)據(jù)進(jìn)行分布式采集,然后,將采集的業(yè)務(wù)日志數(shù)據(jù)匯聚到Kafka中,最后,將采集的業(yè)務(wù)日志數(shù)據(jù)持久化存儲(chǔ)到HDFS(Hadoop Distributed File System,Hadoop分布式文件系統(tǒng))中。
但是,在大數(shù)據(jù)背景下,需要采集的業(yè)務(wù)日志數(shù)據(jù)分布于眾多服務(wù)器上,單臺(tái)服務(wù)器又有多種業(yè)務(wù)日志數(shù)據(jù)需要分別采集,導(dǎo)致采集任務(wù)數(shù)量多。而采用Flume系統(tǒng)對(duì)業(yè)務(wù)日志數(shù)據(jù)進(jìn)行分布式采集過(guò)程中,由于Flume系統(tǒng)缺乏可靠的數(shù)據(jù)采集監(jiān)控技術(shù),導(dǎo)致對(duì)業(yè)務(wù)日志數(shù)據(jù)進(jìn)行分布式采集過(guò)程中發(fā)生的故障無(wú)法快速發(fā)現(xiàn)并準(zhǔn)確定位。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明實(shí)施例提供一種數(shù)據(jù)采集監(jiān)控方法及裝置,能夠?qū)I(yè)務(wù)日志數(shù)據(jù)進(jìn)行分布式采集過(guò)程中發(fā)生的故障快速發(fā)現(xiàn)并準(zhǔn)確定位。
為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供如下技術(shù)方案:
一種數(shù)據(jù)采集監(jiān)控方法,包括:
獲取第一類(lèi)型的從屬服務(wù)器上報(bào)的心跳數(shù)據(jù),所述心跳數(shù)據(jù)包括所述第一類(lèi)型的從屬服務(wù)器應(yīng)當(dāng)采集的文件的數(shù)據(jù)量信息以及所述文件已采集完成的數(shù)據(jù)量信息;
根據(jù)所述第一類(lèi)型的從屬服務(wù)器應(yīng)當(dāng)采集的文件的數(shù)據(jù)量信息以及所述文件已采集完成的數(shù)據(jù)量信息判斷所述第一類(lèi)型的從屬服務(wù)器對(duì)于所述文件的采集過(guò)程是否發(fā)生故障,得到第一判斷結(jié)果;
當(dāng)所述第一判斷結(jié)果表示所述第一類(lèi)型的從屬服務(wù)器對(duì)于所述文件的采集過(guò)程發(fā)生故障時(shí),定位所述故障在所述文件中的位置為所述文件已采集完成的最后一個(gè)數(shù)據(jù)之后的數(shù)據(jù)。
優(yōu)選的,所述根據(jù)所述第一類(lèi)型的從屬服務(wù)器應(yīng)當(dāng)采集的文件的數(shù)據(jù)量信息以及所述文件已采集完成的數(shù)據(jù)量信息判斷所述第一類(lèi)型的從屬服務(wù)器對(duì)于所述文件的采集過(guò)程是否發(fā)生故障,包括:
當(dāng)達(dá)到預(yù)設(shè)采集時(shí)間閾值時(shí),所述文件已采集完成的數(shù)據(jù)量信息小于所述第一類(lèi)型的從屬服務(wù)器應(yīng)當(dāng)采集的文件的數(shù)據(jù)量信息,則判斷所述第一類(lèi)型的從屬服務(wù)器對(duì)于所述文件的采集過(guò)程發(fā)生故障。
優(yōu)選的,所述方法還包括:
獲取所述第一類(lèi)型的從屬服務(wù)器最后一次上報(bào)心跳數(shù)據(jù)的時(shí)間;
判斷在所述第一類(lèi)型的從屬服務(wù)器最后一次上報(bào)心跳數(shù)據(jù)的時(shí)間開(kāi)始的預(yù)設(shè)時(shí)間閾值內(nèi),是否接收到所述第一類(lèi)型的從屬服務(wù)器上報(bào)的注銷(xiāo)請(qǐng)求或所述第一類(lèi)型的從屬服務(wù)器上報(bào)的心跳數(shù)據(jù);
當(dāng)在所述第一類(lèi)型的從屬服務(wù)器最后一次上報(bào)心跳數(shù)據(jù)的時(shí)間開(kāi)始的預(yù)設(shè)時(shí)間閾值內(nèi),未接收到所述第一類(lèi)型的從屬服務(wù)器上報(bào)的注銷(xiāo)請(qǐng)求且未接收到所述第一類(lèi)型的從屬服務(wù)器上報(bào)的心跳數(shù)據(jù),則確定所述第一類(lèi)型的從屬服務(wù)器處于異常狀態(tài)。
優(yōu)選的,所述方法還包括:
獲取所述第二類(lèi)型的從屬服務(wù)器最后一次上報(bào)心跳數(shù)據(jù)的時(shí)間;
判斷在所述第二類(lèi)型的從屬服務(wù)器最后一次上報(bào)心跳數(shù)據(jù)的時(shí)間開(kāi)始的預(yù)設(shè)時(shí)間閾值內(nèi),是否接收到所述第二類(lèi)型的從屬服務(wù)器上報(bào)的注銷(xiāo)請(qǐng)求或所述第二類(lèi)型的從屬服務(wù)器上報(bào)的心跳數(shù)據(jù);
當(dāng)在所述第二類(lèi)型的從屬服務(wù)器最后一次上報(bào)心跳數(shù)據(jù)的時(shí)間開(kāi)始的預(yù)設(shè)時(shí)間閾值內(nèi),未接收到所述第一類(lèi)型的從屬服務(wù)器上報(bào)的注銷(xiāo)請(qǐng)求且未接收到所述第二類(lèi)型的從屬服務(wù)器上報(bào)的心跳數(shù)據(jù),則確定所述第二類(lèi)型的從屬服務(wù)器處于異常狀態(tài)。
優(yōu)選的,所述方法還包括:
獲取所述第一類(lèi)型的從屬服務(wù)器上報(bào)的第一采集數(shù)據(jù)條數(shù);
獲取所述第二類(lèi)型的從屬服務(wù)器上報(bào)的第二采集數(shù)據(jù)條數(shù);
根據(jù)所述第一采集數(shù)據(jù)條數(shù)以及所述第二采集數(shù)據(jù)條數(shù)判斷所述第二類(lèi)型的從屬服務(wù)器的數(shù)據(jù)持久化存儲(chǔ)操作是否發(fā)生故障,得到第二判斷結(jié)果;
當(dāng)所述第二判斷結(jié)果表示所述第二類(lèi)型的從屬服務(wù)器的數(shù)據(jù)持久化存儲(chǔ)操作發(fā)生故障時(shí),進(jìn)行報(bào)警。
優(yōu)選的,所述根據(jù)所述第一采集數(shù)據(jù)條數(shù)以及所述第二采集數(shù)據(jù)條數(shù)判斷所述第二類(lèi)型的從屬服務(wù)器的數(shù)據(jù)持久化存儲(chǔ)操作是否發(fā)生故障,包括:
當(dāng)所述第一采集數(shù)據(jù)條數(shù)與所述第二采集數(shù)據(jù)條數(shù)不相等時(shí),則判斷所述第二類(lèi)型的從屬服務(wù)器的數(shù)據(jù)持久化存儲(chǔ)操作發(fā)生故障。
一種數(shù)據(jù)采集監(jiān)控裝置,包括:
第一獲取模塊,用于獲取第一類(lèi)型的從屬服務(wù)器上報(bào)的心跳數(shù)據(jù),所述心跳數(shù)據(jù)包括所述第一類(lèi)型的從屬服務(wù)器應(yīng)當(dāng)采集的文件的數(shù)據(jù)量信息以及所述文件已采集完成的數(shù)據(jù)量信息;
第一判斷模塊,用于根據(jù)所述第一類(lèi)型的從屬服務(wù)器應(yīng)當(dāng)采集的文件的數(shù)據(jù)量信息以及所述文件已采集完成的數(shù)據(jù)量信息判斷所述第一類(lèi)型的從屬服務(wù)器對(duì)于所述文件的采集過(guò)程是否發(fā)生故障,得到第一判斷結(jié)果;
故障定位模塊,用于當(dāng)所述第一判斷結(jié)果表示所述第一類(lèi)型的從屬服務(wù)器對(duì)于所述文件的采集過(guò)程發(fā)生故障時(shí),定位所述故障在所述文件中的位置為所述文件已采集完成的最后一個(gè)數(shù)據(jù)之后的數(shù)據(jù)。
優(yōu)選的,所述第一判斷模塊具體用于:
當(dāng)達(dá)到預(yù)設(shè)采集時(shí)間閾值時(shí),所述文件已采集完成的數(shù)據(jù)量信息小于所述第一類(lèi)型的從屬服務(wù)器應(yīng)當(dāng)采集的文件的數(shù)據(jù)量信息,則判斷所述第一類(lèi)型的從屬服務(wù)器對(duì)于所述文件的采集過(guò)程發(fā)生故障。
優(yōu)選的,所述裝置還包括:
第二獲取模塊,用于獲取所述第一類(lèi)型的從屬服務(wù)器最后一次上報(bào)心跳數(shù)據(jù)的時(shí)間;
第二判斷模塊,用于判斷在所述第一類(lèi)型的從屬服務(wù)器最后一次上報(bào)心跳數(shù)據(jù)的時(shí)間開(kāi)始的預(yù)設(shè)時(shí)間閾值內(nèi),是否接收到所述第一類(lèi)型的從屬服務(wù)器上報(bào)的注銷(xiāo)請(qǐng)求或所述第一類(lèi)型的從屬服務(wù)器上報(bào)的心跳數(shù)據(jù);
第一狀態(tài)確定模塊,用于當(dāng)在所述第一類(lèi)型的從屬服務(wù)器最后一次上報(bào)心跳數(shù)據(jù)的時(shí)間開(kāi)始的預(yù)設(shè)時(shí)間閾值內(nèi),未接收到所述第一類(lèi)型的從屬服務(wù)器上報(bào)的注銷(xiāo)請(qǐng)求且未接收到所述第一類(lèi)型的從屬服務(wù)器上報(bào)的心跳數(shù)據(jù),則確定所述第一類(lèi)型的從屬服務(wù)器處于異常狀態(tài)。
優(yōu)選的,所述裝置還包括:
第三獲取模塊,用于獲取所述第二類(lèi)型的從屬服務(wù)器最后一次上報(bào)心跳數(shù)據(jù)的時(shí)間;
第三判斷模塊,用于判斷在所述第二類(lèi)型的從屬服務(wù)器最后一次上報(bào)心跳數(shù)據(jù)的時(shí)間開(kāi)始的預(yù)設(shè)時(shí)間閾值內(nèi),是否接收到所述第二類(lèi)型的從屬服務(wù)器上報(bào)的注銷(xiāo)請(qǐng)求或所述第二類(lèi)型的從屬服務(wù)器上報(bào)的心跳數(shù)據(jù);
第二狀態(tài)確定模塊,用于當(dāng)在所述第二類(lèi)型的從屬服務(wù)器最后一次上報(bào)心跳數(shù)據(jù)的時(shí)間開(kāi)始的預(yù)設(shè)時(shí)間閾值內(nèi),未接收到所述第一類(lèi)型的從屬服務(wù)器上報(bào)的注銷(xiāo)請(qǐng)求且未接收到所述第二類(lèi)型的從屬服務(wù)器上報(bào)的心跳數(shù)據(jù),則確定所述第二類(lèi)型的從屬服務(wù)器處于異常狀態(tài)。
優(yōu)選的,所述裝置還包括:
第四獲取模塊,用于獲取所述第一類(lèi)型的從屬服務(wù)器上報(bào)的第一采集數(shù)據(jù)條數(shù),以及,獲取所述第二類(lèi)型的從屬服務(wù)器上報(bào)的第二采集數(shù)據(jù)條數(shù);
第四判斷模塊,用于根據(jù)所述第一采集數(shù)據(jù)條數(shù)以及所述第二采集數(shù)據(jù)條數(shù)判斷所述第二類(lèi)型的從屬服務(wù)器的數(shù)據(jù)持久化存儲(chǔ)操作是否發(fā)生故障,得到第二判斷結(jié)果;
報(bào)警模塊,用于當(dāng)所述第二判斷結(jié)果表示所述第二類(lèi)型的從屬服務(wù)器的數(shù)據(jù)持久化存儲(chǔ)操作發(fā)生故障時(shí),進(jìn)行報(bào)警。
優(yōu)選的,所述第四判斷模塊具體用于:
當(dāng)所述第一采集數(shù)據(jù)條數(shù)與所述第二采集數(shù)據(jù)條數(shù)不相等時(shí),則判斷所述第二類(lèi)型的從屬服務(wù)器的數(shù)據(jù)持久化存儲(chǔ)操作發(fā)生故障。
基于上述技術(shù)方案,本發(fā)明實(shí)施例中公開(kāi)了一種數(shù)據(jù)采集監(jiān)控方法及裝置,獲取第一類(lèi)型的從屬服務(wù)器上報(bào)的心跳數(shù)據(jù),所述心跳數(shù)據(jù)包括所述第一類(lèi)型的從屬服務(wù)器應(yīng)當(dāng)采集的文件的數(shù)據(jù)量信息以及所述文件已采集完成的數(shù)據(jù)量信息;根據(jù)所述第一類(lèi)型的從屬服務(wù)器應(yīng)當(dāng)采集的文件的數(shù)據(jù)量信息以及所述文件已采集完成的數(shù)據(jù)量信息判斷所述第一類(lèi)型的從屬服務(wù)器對(duì)于所述文件的采集過(guò)程是否發(fā)生故障,當(dāng)所述第一類(lèi)型的從屬服務(wù)器對(duì)于所述文件的采集過(guò)程發(fā)生故障時(shí),定位所述故障在所述文件中的位置為所述文件已采集完成的最后一個(gè)數(shù)據(jù)之后的數(shù)據(jù)?;谛奶鴶?shù)據(jù),能夠?qū)I(yè)務(wù)日志數(shù)據(jù)進(jìn)行分布式采集過(guò)程中發(fā)生的故障快速發(fā)現(xiàn)并準(zhǔn)確定位。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)采集監(jiān)控方法的流程示意圖;
圖2為本發(fā)明實(shí)施例提供的一種Master監(jiān)控Source的狀態(tài)的方法的流程示意圖;
圖3為本發(fā)明實(shí)施例提供的一種Master監(jiān)控Sink的狀態(tài)的方法的流程示意圖;
圖4為本發(fā)明實(shí)施例提供的一種判斷Sink持久化存儲(chǔ)操作是否發(fā)生故障的方法的流程示意圖;
圖5為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)采集監(jiān)控裝置的結(jié)構(gòu)框圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明實(shí)施例中的數(shù)據(jù)采集監(jiān)控方法應(yīng)用于基于Kafka的可監(jiān)控的分布式數(shù)據(jù)采集系統(tǒng),該系統(tǒng)采用Master/Slave(主服務(wù)器/從屬服務(wù)器)結(jié)構(gòu),使用Kafka作為數(shù)據(jù)匯聚的中間節(jié)點(diǎn),最終采用HDFS或其他可靠媒介對(duì)數(shù)據(jù)進(jìn)行持久化存儲(chǔ)。該系統(tǒng)中,Slave執(zhí)行實(shí)際的采集任務(wù),Slave按照采集功能的不同分為兩種類(lèi)型,其中,Source(第一類(lèi)型的從屬服務(wù)器)負(fù)責(zé)從各數(shù)據(jù)源服務(wù)器采集數(shù)據(jù)傳輸至Kafka;Sink(第二類(lèi)型的從屬服務(wù)器)負(fù)責(zé)從Kafka消費(fèi)采集的數(shù)據(jù)匯聚后進(jìn)行持久化存儲(chǔ)。Master負(fù)責(zé)維護(hù)Slave的部署情況、監(jiān)控Slave的采集任務(wù)執(zhí)行情況等。
Slave啟動(dòng)時(shí),需要先向Master注冊(cè)自己被分配的任務(wù)的信息,注冊(cè)需要上報(bào)的信息包括Slave所在的服務(wù)器IP,Slave的類(lèi)型(Source/Sink),Slave的唯一ID,Slave執(zhí)行的采集任務(wù)列表等。如果Slave支持動(dòng)態(tài)配置采集任務(wù),那么當(dāng)所執(zhí)行的采集任務(wù)發(fā)生變更的時(shí)候需要重新進(jìn)行注冊(cè)。相應(yīng)的,Slave正常關(guān)閉時(shí),需要向Master進(jìn)行注銷(xiāo)。注銷(xiāo)需要上報(bào)Slave所在的服務(wù)器IP,Slave的唯一ID。
Slave向Master注冊(cè)成功后,執(zhí)行實(shí)際的采集任務(wù)。其中,Source按照任務(wù)的配置信息,將采集的數(shù)據(jù)匯聚到Kafka的指定Topic。Sink按照任務(wù)的配置信息,將Kafka的指定Topic的數(shù)據(jù)存儲(chǔ)至可靠的存儲(chǔ)介質(zhì)(如,HDFS)中。
具體的,Source在采集數(shù)據(jù)時(shí),需要對(duì)數(shù)據(jù)按時(shí)間分段(比如,以小時(shí)為單位對(duì)數(shù)據(jù)進(jìn)行分段),并將數(shù)據(jù)所在的時(shí)間分段信息寫(xiě)入Kafka消息的Key中,將采集的數(shù)據(jù)實(shí)體寫(xiě)入Kafka消息的Value中。其中,Source對(duì)數(shù)據(jù)按時(shí)間分段的方法如下:如果文件名中有時(shí)間戳,可以以文件名為依據(jù);如果文件名沒(méi)有時(shí)間戳,可以以文件創(chuàng)建時(shí)間為依據(jù);如果采集的是數(shù)據(jù)流,可以以接收到數(shù)據(jù)的時(shí)間為依據(jù)。Sink消費(fèi)Kafka中的數(shù)據(jù)時(shí),需要根據(jù)Kafka消息的Key中的時(shí)間分段信息,以小時(shí)為單位對(duì)數(shù)據(jù)進(jìn)行處理,比如,每個(gè)小時(shí)建立獨(dú)立的文件夾,并根據(jù)Kafka消息的Key中的時(shí)間分段信息,將屬于不同時(shí)間段的數(shù)據(jù)寫(xiě)入到不同的文件夾中。
另外由于所采集的數(shù)據(jù)以原始格式存儲(chǔ)于Kafka的Value之中,因此其他處理系統(tǒng)可以無(wú)需做任何改動(dòng),透明的消費(fèi)Kafka中的數(shù)據(jù)。
Slave在執(zhí)行實(shí)際的采集任務(wù)的過(guò)程中,還需要維護(hù)采集任務(wù)的執(zhí)行情況,并作為心跳數(shù)據(jù)定期上報(bào)到Kafka的特定Topic中,等待Master拉取消費(fèi)。Master通過(guò)消費(fèi)Kafka中的Slave上報(bào)的心跳數(shù)據(jù),即可監(jiān)控Slave的采集任務(wù)執(zhí)行情況。
圖1為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)采集監(jiān)控方法的流程示意圖,該方法由Master執(zhí)行,具體的,該方法包括如下步驟:
步驟S10、獲取第一類(lèi)型的從屬服務(wù)器上報(bào)的心跳數(shù)據(jù),所述心跳數(shù)據(jù)包括所述第一類(lèi)型的從屬服務(wù)器應(yīng)當(dāng)采集的文件的數(shù)據(jù)量信息以及所述文件已采集完成的數(shù)據(jù)量信息。
需要說(shuō)明的是,第一類(lèi)型的從屬服務(wù)器在上報(bào)心跳數(shù)據(jù)之前,已經(jīng)向Master成功注冊(cè),文件可以為業(yè)務(wù)日志,數(shù)據(jù)量信息可以為字節(jié)數(shù)和數(shù)據(jù)條目數(shù)。
步驟S20、根據(jù)所述第一類(lèi)型的從屬服務(wù)器應(yīng)當(dāng)采集的文件的數(shù)據(jù)量信息以及所述文件已采集完成的數(shù)據(jù)量信息判斷所述第一類(lèi)型的從屬服務(wù)器對(duì)于所述文件的采集過(guò)程是否發(fā)生故障,得到第一判斷結(jié)果。
其中,當(dāng)達(dá)到預(yù)設(shè)采集時(shí)間閾值時(shí),所述文件已采集完成的數(shù)據(jù)量信息小于所述第一類(lèi)型的從屬服務(wù)器應(yīng)當(dāng)采集的文件的數(shù)據(jù)量信息,則判斷所述第一類(lèi)型的從屬服務(wù)器對(duì)于所述文件的采集過(guò)程發(fā)生故障。當(dāng)所述文件已采集完成的數(shù)據(jù)量信息與所述第一類(lèi)型的從屬服務(wù)器應(yīng)當(dāng)采集的文件的數(shù)據(jù)量信息相同時(shí),則判斷所述第一類(lèi)型的從屬服務(wù)器對(duì)于所述文件的采集過(guò)程未發(fā)生故障。
步驟S30、當(dāng)所述第一判斷結(jié)果表示所述第一類(lèi)型的從屬服務(wù)器對(duì)于所述文件的采集過(guò)程發(fā)生故障時(shí),定位所述故障在所述文件中的位置為所述文件已采集完成的最后一個(gè)數(shù)據(jù)之后的數(shù)據(jù)。
具體來(lái)講,假設(shè)所述第一類(lèi)型的從屬服務(wù)器應(yīng)當(dāng)采集的文件的數(shù)據(jù)量信息為100字節(jié),當(dāng)達(dá)到預(yù)設(shè)采集時(shí)間閾值時(shí),所述文件已采集完成的數(shù)據(jù)量信息為50字節(jié),則可判定所述第一判斷結(jié)果表示所述第一類(lèi)型的從屬服務(wù)器對(duì)于所述文件的采集過(guò)程發(fā)生故障,且故障位置為所述文件的第51字節(jié)。
本發(fā)明實(shí)施例中公開(kāi)的一種數(shù)據(jù)采集監(jiān)控方法,獲取第一類(lèi)型的從屬服務(wù)器上報(bào)的心跳數(shù)據(jù),所述心跳數(shù)據(jù)包括所述第一類(lèi)型的從屬服務(wù)器應(yīng)當(dāng)采集的文件的數(shù)據(jù)量信息以及所述文件已采集完成的數(shù)據(jù)量信息;根據(jù)所述第一類(lèi)型的從屬服務(wù)器應(yīng)當(dāng)采集的文件的數(shù)據(jù)量信息以及所述文件已采集完成的數(shù)據(jù)量信息判斷所述第一類(lèi)型的從屬服務(wù)器對(duì)于所述文件的采集過(guò)程是否發(fā)生故障,當(dāng)所述第一類(lèi)型的從屬服務(wù)器對(duì)于所述文件的采集過(guò)程發(fā)生故障時(shí),定位所述故障在所述文件中的位置為所述文件已采集完成的最后一個(gè)數(shù)據(jù)之后的數(shù)據(jù)?;谛奶鴶?shù)據(jù),能夠?qū)I(yè)務(wù)日志數(shù)據(jù)進(jìn)行分布式采集過(guò)程中發(fā)生的故障快速發(fā)現(xiàn)并準(zhǔn)確定位。
進(jìn)一步的,Master還可監(jiān)控Slave的狀態(tài)是否異常。具體的,圖2示出了一種Master監(jiān)控Source的狀態(tài)的方法的流程示意圖,該方法具體包括如下步驟:
步驟S100、獲取所述第一類(lèi)型的從屬服務(wù)器最后一次上報(bào)心跳數(shù)據(jù)的時(shí)間。
需要說(shuō)明的是,本發(fā)明實(shí)施例中的所述第一類(lèi)型的從屬服務(wù)器最后一次上報(bào)心跳數(shù)據(jù)的時(shí)間可以包含在所述第一類(lèi)型的從屬服務(wù)器上報(bào)的心跳數(shù)據(jù)中,Master在獲取心跳數(shù)據(jù)之后,即可獲知所述第一類(lèi)型的從屬服務(wù)器最后一次上報(bào)心跳數(shù)據(jù)的時(shí)間。
步驟S110、判斷在所述第一類(lèi)型的從屬服務(wù)器最后一次上報(bào)心跳數(shù)據(jù)的時(shí)間開(kāi)始的預(yù)設(shè)時(shí)間閾值內(nèi),是否接收到所述第一類(lèi)型的從屬服務(wù)器上報(bào)的注銷(xiāo)請(qǐng)求或所述第一類(lèi)型的從屬服務(wù)器上報(bào)的心跳數(shù)據(jù)。
步驟S120、當(dāng)在所述第一類(lèi)型的從屬服務(wù)器最后一次上報(bào)心跳數(shù)據(jù)的時(shí)間開(kāi)始的預(yù)設(shè)時(shí)間閾值內(nèi),未接收到所述第一類(lèi)型的從屬服務(wù)器上報(bào)的注銷(xiāo)請(qǐng)求且未接收到所述第一類(lèi)型的從屬服務(wù)器上報(bào)的心跳數(shù)據(jù),則確定所述第一類(lèi)型的從屬服務(wù)器處于異常狀態(tài)。
圖3示出了一種Master監(jiān)控Sink的狀態(tài)的方法的流程示意圖,該方法具體包括如下步驟:
步驟S200、獲取所述第二類(lèi)型的從屬服務(wù)器最后一次上報(bào)心跳數(shù)據(jù)的時(shí)間。
需要說(shuō)明的是,第二類(lèi)型的從屬服務(wù)器在上報(bào)心跳數(shù)據(jù)之前,已經(jīng)向Master成功注冊(cè)。
步驟S210、判斷在所述第二類(lèi)型的從屬服務(wù)器最后一次上報(bào)心跳數(shù)據(jù)的時(shí)間開(kāi)始的預(yù)設(shè)時(shí)間閾值內(nèi),是否接收到所述第二類(lèi)型的從屬服務(wù)器上報(bào)的注銷(xiāo)請(qǐng)求或所述第二類(lèi)型的從屬服務(wù)器上報(bào)的心跳數(shù)據(jù)。
步驟S220、當(dāng)在所述第二類(lèi)型的從屬服務(wù)器最后一次上報(bào)心跳數(shù)據(jù)的時(shí)間開(kāi)始的預(yù)設(shè)時(shí)間閾值內(nèi),未接收到所述第一類(lèi)型的從屬服務(wù)器上報(bào)的注銷(xiāo)請(qǐng)求且未接收到所述第二類(lèi)型的從屬服務(wù)器上報(bào)的心跳數(shù)據(jù),則確定所述第二類(lèi)型的從屬服務(wù)器處于異常狀態(tài)。
進(jìn)一步的,Master通過(guò)比對(duì)Source以及Sink上報(bào)的采集數(shù)據(jù)條數(shù),判斷由Source匯聚到Kafka的數(shù)據(jù),是否正常被Sink完成了持久化存儲(chǔ)操作,精度可以達(dá)到每條數(shù)據(jù)。
具體的,圖4示出了一種判斷Sink持久化存儲(chǔ)操作是否發(fā)生故障的方法的流程示意圖,該方法包括如下步驟:
步驟S300、獲取所述第一類(lèi)型的從屬服務(wù)器上報(bào)的第一采集數(shù)據(jù)條數(shù)。
步驟S310、獲取所述第二類(lèi)型的從屬服務(wù)器上報(bào)的第二采集數(shù)據(jù)條數(shù)。
步驟S320、根據(jù)所述第一采集數(shù)據(jù)條數(shù)以及所述第二采集數(shù)據(jù)條數(shù)判斷所述第二類(lèi)型的從屬服務(wù)器的數(shù)據(jù)持久化存儲(chǔ)操作是否發(fā)生故障,得到第二判斷結(jié)果。
其中,當(dāng)所述第一采集數(shù)據(jù)條數(shù)與所述第二采集數(shù)據(jù)條數(shù)不相等時(shí),則判斷所述第二類(lèi)型的從屬服務(wù)器的數(shù)據(jù)持久化存儲(chǔ)操作發(fā)生故障。
步驟S330、當(dāng)所述第二判斷結(jié)果表示所述第二類(lèi)型的從屬服務(wù)器的數(shù)據(jù)持久化存儲(chǔ)操作發(fā)生故障時(shí),進(jìn)行報(bào)警。
其中,可以通過(guò)郵件、短信或其他任何用戶(hù)定義的形式進(jìn)行報(bào)警。
本發(fā)明實(shí)施例提供的數(shù)據(jù)采集監(jiān)控方法,可以支持不同技術(shù)的采集終端,維護(hù)各終端的部署情況以及任務(wù)配置情況,大幅提高對(duì)采集流程是否出現(xiàn)問(wèn)題的判斷的準(zhǔn)確性,并且可以快速定位問(wèn)題發(fā)生所在的具體位置,采集的數(shù)據(jù)流和心跳數(shù)據(jù)同時(shí)依賴(lài)于Kafka,以此來(lái)準(zhǔn)確判斷采集終端是否存活,避免因?yàn)椴杉K端在可以正常連接Kafka,但其他某些鏈路異常導(dǎo)致的存活狀態(tài)誤判,而且,對(duì)日志格式、采集終端所用技術(shù)等無(wú)要求。
下面對(duì)本發(fā)明實(shí)施例提供的數(shù)據(jù)采集監(jiān)控裝置進(jìn)行介紹,下文描述的數(shù)據(jù)采集監(jiān)控裝置可與上文數(shù)據(jù)采集監(jiān)控方法相互對(duì)應(yīng)參照。
圖5為本發(fā)明實(shí)施例提供的數(shù)據(jù)采集監(jiān)控裝置的結(jié)構(gòu)框圖,該數(shù)據(jù)采集監(jiān)控裝置具體可以為Master,參照?qǐng)D5,該數(shù)據(jù)采集監(jiān)控裝置可以包括:
第一獲取模塊100,用于獲取第一類(lèi)型的從屬服務(wù)器上報(bào)的心跳數(shù)據(jù),所述心跳數(shù)據(jù)包括所述第一類(lèi)型的從屬服務(wù)器應(yīng)當(dāng)采集的文件的數(shù)據(jù)量信息以及所述文件已采集完成的數(shù)據(jù)量信息;
第一判斷模塊110,用于根據(jù)所述第一類(lèi)型的從屬服務(wù)器應(yīng)當(dāng)采集的文件的數(shù)據(jù)量信息以及所述文件已采集完成的數(shù)據(jù)量信息判斷所述第一類(lèi)型的從屬服務(wù)器對(duì)于所述文件的采集過(guò)程是否發(fā)生故障,得到第一判斷結(jié)果;
其中,所述第一判斷模塊具體用于:當(dāng)達(dá)到預(yù)設(shè)采集時(shí)間閾值時(shí),所述文件已采集完成的數(shù)據(jù)量信息小于所述第一類(lèi)型的從屬服務(wù)器應(yīng)當(dāng)采集的文件的數(shù)據(jù)量信息,則判斷所述第一類(lèi)型的從屬服務(wù)器對(duì)于所述文件的采集過(guò)程發(fā)生故障。
故障定位模塊120,用于當(dāng)所述第一判斷結(jié)果表示所述第一類(lèi)型的從屬服務(wù)器對(duì)于所述文件的采集過(guò)程發(fā)生故障時(shí),定位所述故障在所述文件中的位置為所述文件已采集完成的最后一個(gè)數(shù)據(jù)之后的數(shù)據(jù)。
優(yōu)選的,所述裝置還包括:
第二獲取模塊,用于獲取所述第一類(lèi)型的從屬服務(wù)器最后一次上報(bào)心跳數(shù)據(jù)的時(shí)間;
第二判斷模塊,用于判斷在所述第一類(lèi)型的從屬服務(wù)器最后一次上報(bào)心跳數(shù)據(jù)的時(shí)間開(kāi)始的預(yù)設(shè)時(shí)間閾值內(nèi),是否接收到所述第一類(lèi)型的從屬服務(wù)器上報(bào)的注銷(xiāo)請(qǐng)求或所述第一類(lèi)型的從屬服務(wù)器上報(bào)的心跳數(shù)據(jù);
第一狀態(tài)確定模塊,用于當(dāng)在所述第一類(lèi)型的從屬服務(wù)器最后一次上報(bào)心跳數(shù)據(jù)的時(shí)間開(kāi)始的預(yù)設(shè)時(shí)間閾值內(nèi),未接收到所述第一類(lèi)型的從屬服務(wù)器上報(bào)的注銷(xiāo)請(qǐng)求且未接收到所述第一類(lèi)型的從屬服務(wù)器上報(bào)的心跳數(shù)據(jù),則確定所述第一類(lèi)型的從屬服務(wù)器處于異常狀態(tài)。
優(yōu)選的,所述裝置還包括:
第三獲取模塊,用于獲取所述第二類(lèi)型的從屬服務(wù)器最后一次上報(bào)心跳數(shù)據(jù)的時(shí)間;
第三判斷模塊,用于判斷在所述第二類(lèi)型的從屬服務(wù)器最后一次上報(bào)心跳數(shù)據(jù)的時(shí)間開(kāi)始的預(yù)設(shè)時(shí)間閾值內(nèi),是否接收到所述第二類(lèi)型的從屬服務(wù)器上報(bào)的注銷(xiāo)請(qǐng)求或所述第二類(lèi)型的從屬服務(wù)器上報(bào)的心跳數(shù)據(jù);
第二狀態(tài)確定模塊,用于當(dāng)在所述第二類(lèi)型的從屬服務(wù)器最后一次上報(bào)心跳數(shù)據(jù)的時(shí)間開(kāi)始的預(yù)設(shè)時(shí)間閾值內(nèi),未接收到所述第一類(lèi)型的從屬服務(wù)器上報(bào)的注銷(xiāo)請(qǐng)求且未接收到所述第二類(lèi)型的從屬服務(wù)器上報(bào)的心跳數(shù)據(jù),則確定所述第二類(lèi)型的從屬服務(wù)器處于異常狀態(tài)。
優(yōu)選的,所述裝置還包括:
第四獲取模塊,用于獲取所述第一類(lèi)型的從屬服務(wù)器上報(bào)的第一采集數(shù)據(jù)條數(shù),以及,獲取所述第二類(lèi)型的從屬服務(wù)器上報(bào)的第二采集數(shù)據(jù)條數(shù);
第四判斷模塊,用于根據(jù)所述第一采集數(shù)據(jù)條數(shù)以及所述第二采集數(shù)據(jù)條數(shù)判斷所述第二類(lèi)型的從屬服務(wù)器的數(shù)據(jù)持久化存儲(chǔ)操作是否發(fā)生故障,得到第二判斷結(jié)果;
報(bào)警模塊,用于當(dāng)所述第二判斷結(jié)果表示所述第二類(lèi)型的從屬服務(wù)器的數(shù)據(jù)持久化存儲(chǔ)操作發(fā)生故障時(shí),進(jìn)行報(bào)警。
優(yōu)選的,所述第四判斷模塊具體用于:
當(dāng)所述第一采集數(shù)據(jù)條數(shù)與所述第二采集數(shù)據(jù)條數(shù)不相等時(shí),則判斷所述第二類(lèi)型的從屬服務(wù)器的數(shù)據(jù)持久化存儲(chǔ)操作發(fā)生故障。
綜上所述:
本發(fā)明實(shí)施例中公開(kāi)了一種數(shù)據(jù)采集監(jiān)控方法及裝置,獲取第一類(lèi)型的從屬服務(wù)器上報(bào)的心跳數(shù)據(jù),所述心跳數(shù)據(jù)包括所述第一類(lèi)型的從屬服務(wù)器應(yīng)當(dāng)采集的文件的數(shù)據(jù)量信息以及所述文件已采集完成的數(shù)據(jù)量信息;根據(jù)所述第一類(lèi)型的從屬服務(wù)器應(yīng)當(dāng)采集的文件的數(shù)據(jù)量信息以及所述文件已采集完成的數(shù)據(jù)量信息判斷所述第一類(lèi)型的從屬服務(wù)器對(duì)于所述文件的采集過(guò)程是否發(fā)生故障,當(dāng)所述第一類(lèi)型的從屬服務(wù)器對(duì)于所述文件的采集過(guò)程發(fā)生故障時(shí),定位所述故障在所述文件中的位置為所述文件已采集完成的最后一個(gè)數(shù)據(jù)之后的數(shù)據(jù)。基于心跳數(shù)據(jù),能夠?qū)I(yè)務(wù)日志數(shù)據(jù)進(jìn)行分布式采集過(guò)程中發(fā)生的故障快速發(fā)現(xiàn)并準(zhǔn)確定位。
本說(shuō)明書(shū)中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見(jiàn)即可。對(duì)于實(shí)施例公開(kāi)的裝置而言,由于其與實(shí)施例公開(kāi)的方法相對(duì)應(yīng),所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法部分說(shuō)明即可。
專(zhuān)業(yè)人員還可以進(jìn)一步意識(shí)到,結(jié)合本文中所公開(kāi)的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來(lái)實(shí)現(xiàn),為了清楚地說(shuō)明硬件和軟件的可互換性,在上述說(shuō)明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來(lái)執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專(zhuān)業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來(lái)使用不同方法來(lái)實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
結(jié)合本文中所公開(kāi)的實(shí)施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來(lái)實(shí)施。軟件模塊可以置于隨機(jī)存儲(chǔ)器(RAM)、內(nèi)存、只讀存儲(chǔ)器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤(pán)、可移動(dòng)磁盤(pán)、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲(chǔ)介質(zhì)中。
對(duì)所公開(kāi)的實(shí)施例的上述說(shuō)明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專(zhuān)業(yè)技術(shù)人員來(lái)說(shuō)將是顯而易見(jiàn)的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開(kāi)的原理和新穎特點(diǎn)相一致的最寬的范圍。