本申請涉及互聯(lián)網(wǎng)領(lǐng)域,具體而言,涉及一種網(wǎng)絡(luò)監(jiān)測方法和裝置。
背景技術(shù):
內(nèi)容分發(fā)網(wǎng)絡(luò)(Content Delivery Network,簡稱為CDN)節(jié)點(diǎn)一般是一個動態(tài)的節(jié)點(diǎn)組,網(wǎng)站的流量切換給CDN后,網(wǎng)絡(luò)流量的監(jiān)控和運(yùn)維工作都是CDN廠商完成。然而,網(wǎng)絡(luò)節(jié)點(diǎn)的服務(wù)監(jiān)控是不向網(wǎng)站運(yùn)營商開放的,這使得網(wǎng)站運(yùn)營商無法及時了解CDN節(jié)點(diǎn)異常情況,這會導(dǎo)致網(wǎng)站運(yùn)營商無法及時對網(wǎng)站進(jìn)行故障檢查,造成網(wǎng)站流量損失。
針對上述的問題,目前尚未提出有效的解決方案。
技術(shù)實(shí)現(xiàn)要素:
本申請實(shí)施例提供了一種網(wǎng)絡(luò)監(jiān)測方法和裝置,以至少解決現(xiàn)有技術(shù)中無法及時獲知網(wǎng)絡(luò)節(jié)點(diǎn)的異常情況的技術(shù)問題。
根據(jù)本申請實(shí)施例的一個方面,提供了一種網(wǎng)絡(luò)監(jiān)測方法,包括:獲取用于查詢網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址的API地址;利用所述API地址獲取多個IP地址,得到IP地址集;檢測所述IP地址集中每一個IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)的服務(wù)性能是否異常;以及在檢測出IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)的服務(wù)性能出現(xiàn)異常時,將出現(xiàn)異常的IP地址及其對應(yīng)的異常信息發(fā)送至監(jiān)控終端,以使所述監(jiān)控終端顯示所述出現(xiàn)異常的IP地址及其對應(yīng)的異常信息。
根據(jù)本申請實(shí)施例的另一方面,還提供了一種網(wǎng)絡(luò)監(jiān)測裝置,包括:第一獲取單元,用于獲取用于查詢網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址的API地址;第二獲取單元,用于利用所述API地址獲取多個IP地址,得到IP地址集;檢測單元,用于檢測所述IP地址集中每一個IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)的服務(wù)性能是否異常;以及第一發(fā)送單元,用于在檢測出IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)的服務(wù)性能出現(xiàn)異常時,將出現(xiàn)異常的IP地址及其對應(yīng)的異常信息發(fā)送至監(jiān)控終端,以使所述監(jiān)控終端顯示所述出現(xiàn)異常的IP地址及其對應(yīng)的異常信息。
根據(jù)本申請實(shí)施例,通過獲取用于查詢網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址的API地址,利用API地址獲取多個IP地址,得到IP地址集,檢測IP地址集中每一個IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)的服務(wù)性能是否異常,在檢測出IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)的服務(wù)性能出現(xiàn)異常時,將出現(xiàn)異常的IP地址及其對應(yīng)的異常信息發(fā)送至監(jiān)控終端,以使監(jiān)控終端顯示出現(xiàn)異常的IP地址及其對應(yīng)的異常信息,網(wǎng)站工作人員可以及時查看故障點(diǎn),并進(jìn)行檢查和處理,相對于現(xiàn)有技術(shù)而言,無需進(jìn)行二次數(shù)據(jù)查詢,解決現(xiàn)有技術(shù)中無法及時獲知網(wǎng)絡(luò)節(jié)點(diǎn)的異常情況的技術(shù)問題,達(dá)到了及時提示工作人員網(wǎng)絡(luò)節(jié)點(diǎn)的故障點(diǎn)的效果。
附圖說明
此處所說明的附圖用來提供對本申請的進(jìn)一步理解,構(gòu)成本申請的一部分,本申請的示意性實(shí)施例及其說明用于解釋本申請,并不構(gòu)成對本申請的不當(dāng)限定。在附圖中:
圖1是根據(jù)本申請實(shí)施例的網(wǎng)絡(luò)監(jiān)測方法的流程圖;
圖2是根據(jù)本申請實(shí)施例的網(wǎng)絡(luò)監(jiān)測裝置的示意圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本申請方案,下面將結(jié)合本申請實(shí)施例中的附圖,對本申請實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請一部分的實(shí)施例,而不是全部的實(shí)施例?;诒旧暾堉械膶?shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本申請保護(hù)的范圍。
需要說明的是,本申請的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本申請的實(shí)施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
根據(jù)本申請實(shí)施例,提供了一種網(wǎng)絡(luò)監(jiān)測方法的方法實(shí)施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序 執(zhí)行所示出或描述的步驟。
圖1是根據(jù)本申請實(shí)施例的網(wǎng)絡(luò)監(jiān)測方法的流程圖,如圖1所示,該方法包括如下步驟:
步驟S102,獲取用于查詢網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址的API地址。
在CDN中,每個網(wǎng)絡(luò)節(jié)點(diǎn)對應(yīng)一個服務(wù)器,網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址即是該服務(wù)器的IP地址。應(yīng)用程序編程接口(Application Programming Interface,簡稱為API)地址可以是由CDN服務(wù)商提供的,用來查詢動態(tài)CDN解析IP池也即是IP地址集。
步驟S104,利用API地址獲取多個IP地址,得到IP地址集。
在獲取到API地址之后,利用該API地址獲取多個IP地址,從而得到目前解析池中的服務(wù)器的IP地址,形成IP地址集。具體地,利用API地址獲取IP地址可以是以發(fā)送請求,接收返回消息,再從返回消息中提取IP地址的形式來獲取。
步驟S106,檢測IP地址集中每一個IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)的服務(wù)性能是否異常。
步驟S108,在檢測出IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)的服務(wù)性能出現(xiàn)異常時,將出現(xiàn)異常的IP地址及其對應(yīng)的異常信息發(fā)送至監(jiān)控終端,以使監(jiān)控終端顯示出現(xiàn)異常的IP地址及其對應(yīng)的異常信息。
獲取到IP地址集之后,對IP地址集中每一個IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)的服務(wù)性能進(jìn)行檢測,判斷目前解析池內(nèi)每一個IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)是否出現(xiàn)異常,并記錄異常信息。在檢測出異常的網(wǎng)絡(luò)節(jié)點(diǎn)時,將該網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址及其對應(yīng)的異常信息發(fā)送至監(jiān)控終端,可以是以短信或者郵件的方式發(fā)送。監(jiān)控終端將接收到的信息顯示在顯示器上,以便于網(wǎng)站工作人員進(jìn)行及時查看故障點(diǎn),及時進(jìn)行檢查和處理。
根據(jù)本申請實(shí)施例,通過獲取用于查詢網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址的API地址,利用API地址獲取多個IP地址,得到IP地址集,檢測IP地址集中每一個IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)的服務(wù)性能是否異常,在檢測出IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)的服務(wù)性能出現(xiàn)異常時,將出現(xiàn)異常的IP地址及其對應(yīng)的異常信息發(fā)送至監(jiān)控終端,以使監(jiān)控終端顯示出現(xiàn)異常的IP地址及其對應(yīng)的異常信息,網(wǎng)站工作人員可以及時查看故障點(diǎn),并進(jìn)行檢查和處理,相對于現(xiàn)有技術(shù)而言,無需進(jìn)行二次數(shù)據(jù)查詢,解決了現(xiàn)有技術(shù)中無法及時獲知網(wǎng)絡(luò)節(jié)點(diǎn)的異常情況的技術(shù)問題,達(dá)到了及時提示工作人員網(wǎng)絡(luò)節(jié)點(diǎn)的故障點(diǎn)的效果。
優(yōu)選地,檢測IP地址集中每一個IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)的服務(wù)性能是否異常包括:向每一個IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)送探測請求,記錄探測請求的總時長,判斷總時長是否超過預(yù)設(shè)時間;和/或,對每一個IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)送預(yù)設(shè)次數(shù)的網(wǎng) 絡(luò)測試,記錄網(wǎng)絡(luò)測試的丟包次數(shù),利用預(yù)設(shè)次數(shù)和丟包次數(shù)計(jì)算每一個IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)的網(wǎng)絡(luò)測試的丟包率,判斷丟包率是否超過預(yù)設(shè)閾值;在判斷出總時長超過預(yù)設(shè)時間或者丟包率超過預(yù)設(shè)閾值時,確定總時長超過預(yù)設(shè)時間或者丟包率超過預(yù)設(shè)閾值的IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)的服務(wù)性能出現(xiàn)異常。
上述中網(wǎng)絡(luò)測試,可以是例如ping測試,以下為了便于理解本申請,均用ping測試舉例。
對網(wǎng)絡(luò)節(jié)點(diǎn)的服務(wù)性能的檢測可以有多種方式,本申請實(shí)施例優(yōu)選探測請求和/或ping測試的方式進(jìn)行檢測,本實(shí)施例中,可以采用其中一種進(jìn)行檢測,也可以兩種方式結(jié)合的形式進(jìn)行檢測?,F(xiàn)對這兩種方式分別進(jìn)行描述:
對于探測請求的方式,在對每一個IP地址進(jìn)行檢測時,先向IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)送探測請求,記錄探測請求的總時長,該總時長是從發(fā)送探測請求開始直到該探測請求響應(yīng)結(jié)束的時間,可以包括域名系統(tǒng)(Domain Name System,簡稱為DNS)解析時間,建聯(lián)時間、下載時間等等。在得到探測請求的總時長時,判斷該總時長是否超過預(yù)設(shè)時長,如果是,則確定相應(yīng)的IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)出現(xiàn)異常。其中,記錄的異常信息可以是探測請求各個環(huán)節(jié)的時長和總時長。
進(jìn)一步地,首先借助python的多線程模塊創(chuàng)建一個子線程,此子線程:調(diào)用python的pycurl模塊(pycurl是一個python語言編寫的,探測web服務(wù)質(zhì)量的python模塊,優(yōu)點(diǎn)是可精細(xì)定制HTTP請求,并檢測出詳細(xì)的HTTP響應(yīng)性能信息,運(yùn)行方式是在python的命令行中調(diào)用該模塊,或者是在編寫python程序中引用模塊。本實(shí)施例中,該模塊用于HTTP請求探測,可以收集探測過程中的各個環(huán)節(jié)響應(yīng)時間,如DNS時間、TCP建聯(lián)時間、下載時間等等),主線程首先利用for循環(huán),在IP地址集中為每個子線程取出一個探測IP,pycurl發(fā)出探測請求,把探測過程得到的各環(huán)節(jié)相應(yīng)時間信息存到預(yù)定義的變量中。再從預(yù)定義的變量中取出探測請求的總時長,進(jìn)行判斷,確定每個IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)是否異常。
對于ping測試,可以預(yù)先編寫探測命令,以向IP地址發(fā)送預(yù)設(shè)次數(shù)的ping測試,記錄ping測試的丟包次數(shù),再根據(jù)丟包次數(shù)和預(yù)設(shè)次數(shù)計(jì)算丟包率,具體地,丟包次數(shù)除以預(yù)設(shè)次數(shù)得到丟包率。判斷丟包率是否超過與預(yù)設(shè)閾值,如果是,則確定相應(yīng)的IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)出現(xiàn)異常。
進(jìn)一步地,對網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址進(jìn)行ping測試,可以預(yù)設(shè)探測命令ping–f–c1000,即快速發(fā)出1000次ping測試,用丟包次數(shù)/1000得到丟包率。再對丟包率進(jìn)行判斷,確定是否出現(xiàn)異常。
根據(jù)本申請實(shí)施例中,通過采用探測請求和/或ping測試的方式對網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行檢測,檢測過程快速簡潔,提高了檢測的效率。
可選地,檢測IP地址集中每一個IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)的服務(wù)性能是否異常包括:步驟A:獲取IP地址集中的IP地址;步驟B:向獲取的IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)送探測請求,記錄探測請求的總時長,判斷總時長是否超過預(yù)設(shè)時間;和/或,對獲取的IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)送預(yù)設(shè)次數(shù)的ping測試,記錄ping測試的丟包次數(shù),利用預(yù)設(shè)次數(shù)和丟包次數(shù)計(jì)算每一個IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)的ping測試的丟包率,判斷丟包率是否超過預(yù)設(shè)閾值;步驟C:在判斷出總時長超過預(yù)設(shè)時間或者丟包率超過預(yù)設(shè)閾值時,異常次數(shù)加1;步驟D:判斷異常次數(shù)是否達(dá)到預(yù)設(shè)次數(shù);在異常次數(shù)未達(dá)到預(yù)設(shè)次數(shù)時,返回執(zhí)行步驟B;在異常次數(shù)達(dá)到預(yù)設(shè)次數(shù)時,確定獲取的IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)的服務(wù)性能出現(xiàn)異常。
為了降低誤報率,本申請實(shí)施例中,增加異常次數(shù)來進(jìn)行不確定網(wǎng)絡(luò)節(jié)點(diǎn)是否為異常。其中,對于每個IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)異常檢測的方式如前述的方式相同,即,每一次檢測均采用探測請求、ping測試或者其結(jié)合的方式,這里不再贅述。
在進(jìn)行檢測的過程中,如果檢測出網(wǎng)路節(jié)點(diǎn)出現(xiàn)異常,但異常次數(shù)未達(dá)到預(yù)設(shè)次數(shù),則可以休眠預(yù)設(shè)時間之后,重新對該網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行檢測,再根據(jù)檢測結(jié)果進(jìn)行判斷。如果檢測數(shù)網(wǎng)絡(luò)節(jié)點(diǎn)出現(xiàn)異常,且異常次數(shù)達(dá)到預(yù)設(shè)次數(shù),則表明該網(wǎng)絡(luò)節(jié)點(diǎn)出現(xiàn)異常。該實(shí)施例中,如果確定網(wǎng)絡(luò)節(jié)點(diǎn)出現(xiàn)異常,則將最后一次檢測的異常信息發(fā)送給監(jiān)控終端。
根據(jù)本申請實(shí)施例,通過增加異常次數(shù)的判斷,從而避免將偶然性異常的網(wǎng)絡(luò)節(jié)點(diǎn)當(dāng)作異常節(jié)點(diǎn)進(jìn)行上報,降低了誤報率。
優(yōu)選地,在獲取用于查詢網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址的API地址之前,方法還包括:向域名系統(tǒng)發(fā)送對目標(biāo)域名的查詢請求;接收域名系統(tǒng)返回的查詢結(jié)果,從查詢結(jié)果中提取目標(biāo)域名對應(yīng)的別名記錄;利用別名記錄在預(yù)設(shè)的參照表中查詢別名記錄對應(yīng)的CDN服務(wù)商的信息和用于查詢網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址的API地址,其中,在將出現(xiàn)異常的IP地址及其對應(yīng)的異常信息發(fā)送至監(jiān)控終端的同時,將CDN服務(wù)商的信息發(fā)送至監(jiān)控終端。
本申請實(shí)施中,預(yù)先將CDN服務(wù)商的信息、網(wǎng)站別名記錄(CNAME)和CDN服務(wù)商提供的API地址對應(yīng)的存儲在參照表中,其中,CDN服務(wù)商的信息可以包括CDN簡稱、CDN服務(wù)商的客服電話等等。當(dāng)需要對目標(biāo)域名對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行檢測時,可以先將攜帶有目標(biāo)域名的查詢請求發(fā)送至域名系統(tǒng),域名系統(tǒng)對目標(biāo)域名進(jìn) 行解析,并將解析結(jié)果作為查詢結(jié)果返回,這樣,可以從返回的查詢結(jié)果中提取目標(biāo)域名的別名記錄,再以別名記錄作為查詢的關(guān)鍵詞,從參照表中查詢別名記錄對應(yīng)的CDN服務(wù)商的信息和用于查詢網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址的API地址,以便于在檢測出網(wǎng)絡(luò)節(jié)點(diǎn)異常時,將CDN服務(wù)商的信息一并發(fā)送給監(jiān)控終端。
以www.gridsum.com作為目標(biāo)域名為例,首先向DNS發(fā)出查詢請求,將DNS的返回信息的CNAME字段取出,例如DNS查詢結(jié)果:
www.gridsum.com CNAME gridsum.com.ccgslb.com.cn
得到CNAME:gridsum.com.ccgslb.com.cn;用該CNAME在參照表(程序預(yù)先訂制好的CDN簡稱、CNAME、解析查詢API、客服電話的對照表)中取出CDN簡稱,將其作為CDN服務(wù)商的名稱;用該CNAME繼續(xù)在參照表中取出解析查詢API地址,該API是CDN服務(wù)商提供的,用來查詢動態(tài)CDN解析IP池的,將該API地址存起來;用該CNAME繼續(xù)在參照表中取出“客服電話”等。
優(yōu)選地,利用API地址獲取多個IP地址,得到IP地址集包括:向API地址對應(yīng)的服務(wù)器發(fā)送HTTP連接請求,以使API地址對應(yīng)的服務(wù)器返回包含有網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址的HTML文件;接收API地址對應(yīng)的服務(wù)器返回的HTML文件,利用正則表達(dá)式獲取HTML文件中包含的網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址,得到IP地址集。
對于IP地址集的獲取,本實(shí)施例中,通過向API地址發(fā)送HTTP連接請求,該API地址對應(yīng)的服務(wù)器接收到該請求之后,返回一個HTML文件,該文件中包含有目前解析池內(nèi)的網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址。由于HTML文件具有其自身的文本格式,本實(shí)施例中,采用正則表達(dá)式對該HTML文件中數(shù)據(jù)進(jìn)行匹配,從而提取出其中包含的IP地址,形成IP地址集。
具體地,返回一個HTML文件的文本樣式可以是:
<td>10.1.1.1</td>
<td>10.1.1.2</td>
<td>10.1.1.3</td>
用正則表達(dá)式進(jìn)行匹配處理,將每個IP拿出來追加到list中,最終得到列表[‘10.1.1.1’,’10.1.1.2’,’10.1.1.3’…..]
列表中的IP即是目前解析池中的網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址。
根據(jù)本申請實(shí)施例,通過采用正則表達(dá)式快速地從HTML文件中提取IP地址, 提高了IP地址的提取效率。
本申請實(shí)施例的還提供了一種網(wǎng)絡(luò)監(jiān)測裝置,該裝置可以用于執(zhí)行本申請實(shí)施例的網(wǎng)絡(luò)監(jiān)測方法,如圖2所示,該裝置包括:第一獲取單元10、第二獲取單元20、檢測單元30和第一發(fā)送單元40。
第一獲取單元10用于獲取用于查詢網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址的API地址。
在CDN中,每個網(wǎng)絡(luò)節(jié)點(diǎn)對應(yīng)一個服務(wù)器,網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址即是該服務(wù)器的IP地址。應(yīng)用程序編程接口(Application Programming Interface,簡稱為API)地址可以是有CDN服務(wù)商提供的,用來查詢動態(tài)CDN解析IP池也即是IP地址集。
第二獲取單元20用于利用API地址獲取多個IP地址,得到IP地址集。
在獲取到API地址之后,利用該API地址獲取多個IP地址,從而得到目前解析池中的服務(wù)器的IP地址,形成IP地址集。具體地,利用API地址獲取IP地址可以是以發(fā)送請求,接收返回消息,再從返回消息中提取IP地址的形式來獲取。
檢測單元30用于檢測IP地址集中每一個IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)的服務(wù)性能是否異常。
第一發(fā)送單元40用于在檢測出IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)的服務(wù)性能出現(xiàn)異常時,將出現(xiàn)異常的IP地址及其對應(yīng)的異常信息發(fā)送至監(jiān)控終端,以使監(jiān)控終端顯示出現(xiàn)異常的IP地址及其對應(yīng)的異常信息。
獲取到IP地址集之后,對IP地址集中每一個IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)的服務(wù)性能進(jìn)行檢測,判斷目前解析池內(nèi)每一個IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)是否出現(xiàn)異常,并記錄異常信息。在檢測出異常的網(wǎng)絡(luò)節(jié)點(diǎn)時,將該網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址及其對應(yīng)的異常信息發(fā)送至監(jiān)控終端,可以是以短信或者郵件的方式發(fā)送。監(jiān)控終端將接收到的信息顯示在顯示器上,以便于網(wǎng)站工作人員進(jìn)行及時查看故障點(diǎn),及時進(jìn)行檢查和處理。
根據(jù)本申請實(shí)施例,通過獲取用于查詢網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址的API地址,利用API地址獲取多個IP地址,得到IP地址集,檢測IP地址集中每一個IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)的服務(wù)性能是否異常,在檢測出IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)的服務(wù)性能出現(xiàn)異常時,將出現(xiàn)異常的IP地址及其對應(yīng)的異常信息發(fā)送至監(jiān)控終端,以使監(jiān)控終端顯示出現(xiàn)異常的IP地址及其對應(yīng)的異常信息,網(wǎng)站工作人員可以及時查看故障點(diǎn),并進(jìn)行檢查和處理,相對于現(xiàn)有技術(shù)而言,無需進(jìn)行二次數(shù)據(jù)查詢,解決現(xiàn)有技術(shù)中無法及時獲知網(wǎng)絡(luò)節(jié)點(diǎn)的異常情況的技術(shù)問題,達(dá)到了及時提示工作人員網(wǎng)絡(luò)節(jié)點(diǎn)的故障點(diǎn)的效果。
優(yōu)選地,檢測單元包括:第一判斷模塊,用于向每一個IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)發(fā) 送探測請求,記錄探測請求的總時長,判斷總時長是否超過預(yù)設(shè)時間;和/或,對每一個IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)送預(yù)設(shè)次數(shù)的ping測試,記錄ping測試的丟包次數(shù),利用預(yù)設(shè)次數(shù)和丟包次數(shù)計(jì)算每一個IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)的ping測試的丟包率,判斷丟包率是否超過預(yù)設(shè)閾值;第一確定模塊,用于在判斷出總時長超過預(yù)設(shè)時間或者丟包率超過預(yù)設(shè)閾值時,確定總時長超過預(yù)設(shè)時間或者丟包率超過預(yù)設(shè)閾值的IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)的服務(wù)性能出現(xiàn)異常。
對網(wǎng)絡(luò)節(jié)點(diǎn)的服務(wù)性能的檢測可以有多種方式,本申請實(shí)施例優(yōu)選探測請求和/或ping測試的方式進(jìn)行檢測,本實(shí)施例中,可以采用其中一種進(jìn)行檢測,也可以兩種方式結(jié)合的形式進(jìn)行檢測。現(xiàn)對這兩種方式分別進(jìn)行描述:
對于探測請求的方式,在對每一個IP地址進(jìn)行檢測時,先向IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)送探測請求,記錄探測請求的總時長,該總時長是從發(fā)送探測請求開始直到該探測請求響應(yīng)結(jié)束的時間,可以包括域名系統(tǒng)(Domain Name System,簡稱為DNS)解析時間,建聯(lián)時間、下載時間等等。在得到探測請求的總時長時,判斷該總時長是否超過預(yù)設(shè)時長,如果是,則確定相應(yīng)的IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)出現(xiàn)異常。其中,記錄的異常信息可以是探測請求各個環(huán)節(jié)的時長和總時長。
進(jìn)一步地,首先借助python的多線程模塊創(chuàng)建一個子線程,此子線程:調(diào)用python的pycurl模塊(Pycurl是一個python語言編寫的,探測web服務(wù)質(zhì)量的python模塊,優(yōu)點(diǎn)是可精細(xì)定制HTTP請求,并檢測出詳細(xì)的HTTP響應(yīng)性能信息,運(yùn)行方式是在python的命令行中調(diào)用該模塊,或者是在編寫python程序中引用模塊。本實(shí)施例中,該模塊用于HTTP請求探測,可以收集探測過程中的各個環(huán)節(jié)響應(yīng)時間,如DNS時間、TCP建聯(lián)時間、下載時間等等),主線程首先利用for循環(huán),在IP地址集中為每個子線程取出一個探測IP,pycurl發(fā)出探測請求,把探測過程得到的各環(huán)節(jié)相應(yīng)時間信息存到預(yù)定義的變量中。再從預(yù)定義的變量中取出探測請求的總時長,進(jìn)行判斷,確定每個IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)是否異常。
對于ping測試,可以預(yù)先編寫探測命令,以向IP地址發(fā)送預(yù)設(shè)次數(shù)的ping測試,記錄ping測試的丟包次數(shù),再根據(jù)丟包次數(shù)和預(yù)設(shè)次數(shù)計(jì)算丟包率,具體地,丟包次數(shù)除以預(yù)設(shè)次數(shù)得到丟包率。判斷丟包率是否超過與預(yù)設(shè)閾值,如果是,則確定相應(yīng)的IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)出現(xiàn)異常。
進(jìn)一步地,對網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址進(jìn)行ping測試,可以預(yù)設(shè)探測命令ping–f–c1000,即快速發(fā)出1000次ping測試,用丟包次數(shù)/1000得到丟包率。再對丟包率進(jìn)行判斷,確定是否出現(xiàn)異常。
根據(jù)本申請實(shí)施例中,通過采用探測請求和/或ping測試的方式對網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行檢測,檢測過程快速簡潔,提高了檢測的效率。
可選地,檢測單元包括:獲取模塊,用于獲取IP地址集中的IP地址;第二判斷模塊,用于向獲取的IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)送探測請求,記錄探測請求的總時長,判斷總時長是否超過預(yù)設(shè)時間;和/或,對獲取的IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)送預(yù)設(shè)次數(shù)的網(wǎng)絡(luò)測試,記錄網(wǎng)絡(luò)測試的丟包次數(shù),利用預(yù)設(shè)次數(shù)和丟包次數(shù)計(jì)算每一個IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)的網(wǎng)絡(luò)測試的丟包率,判斷丟包率是否超過預(yù)設(shè)閾值;累加模塊,用于在判斷出總時長超過預(yù)設(shè)時間或者丟包率超過預(yù)設(shè)閾值時,異常次數(shù)加1;第三判斷模塊,用于判斷異常次數(shù)是否達(dá)到預(yù)設(shè)次數(shù);第二確定模塊,用于在異常次數(shù)達(dá)到預(yù)設(shè)次數(shù)時,確定獲取的IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)的服務(wù)性能出現(xiàn)異常,其中,第二判斷模塊在異常次數(shù)未達(dá)到預(yù)設(shè)次數(shù)時,重新對獲取的IP地址進(jìn)行檢測。
上述中網(wǎng)絡(luò)測試,可以是例如ping測試,以下為了便于理解本申請,均用ping測試?yán)e。
為了降低誤報率,本申請實(shí)施例中,增加異常次數(shù)來進(jìn)行不確定網(wǎng)絡(luò)節(jié)點(diǎn)是否為異常。其中,對于每個IP地址對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)異常檢測的方式如前述的方式相同,即,每一次檢測均采用探測請求、ping測試或者其結(jié)合的方式,這里不再贅述。
在進(jìn)行檢測的過程中,如果檢測出網(wǎng)路節(jié)點(diǎn)出現(xiàn)異常,但異常次數(shù)未達(dá)到預(yù)設(shè)次數(shù),則可以休眠預(yù)設(shè)時間之后,重新對該網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行檢測,再根據(jù)檢測結(jié)果進(jìn)行判斷。如果檢測數(shù)網(wǎng)絡(luò)節(jié)點(diǎn)出現(xiàn)異常,且異常次數(shù)達(dá)到預(yù)設(shè)次數(shù),則表明該網(wǎng)絡(luò)節(jié)點(diǎn)出現(xiàn)異常。該實(shí)施例中,如果確定網(wǎng)絡(luò)節(jié)點(diǎn)出現(xiàn)異常,則將最后一次檢測的異常信息發(fā)送給監(jiān)控終端。
根據(jù)本申請實(shí)施例,通過增加異常次數(shù)的判斷,從而避免將偶然性異常的網(wǎng)絡(luò)節(jié)點(diǎn)當(dāng)作異常節(jié)點(diǎn)進(jìn)行上報,降低了誤報率。
優(yōu)選地,裝置還包括:第二發(fā)送單元,用于在獲取用于查詢網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址的API地址之前,向域名系統(tǒng)發(fā)送對目標(biāo)域名的查詢請求;提取單元,用于接收域名系統(tǒng)返回的查詢結(jié)果,從查詢結(jié)果中提取目標(biāo)域名對應(yīng)的別名記錄;查詢單元,用于利用別名記錄在預(yù)設(shè)的參照表中查詢別名記錄對應(yīng)的CDN服務(wù)商的信息和用于查詢網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址的API地址,其中,第一發(fā)送單元還用于在將出現(xiàn)異常的IP地址及其對應(yīng)的異常信息發(fā)送至監(jiān)控終端的同時,將CDN服務(wù)商的信息發(fā)送至監(jiān)控終端。
本申請實(shí)施中,預(yù)先將CDN服務(wù)商的信息、網(wǎng)站別名記錄(CNAME)和CDN服務(wù)商提供的API地址對應(yīng)的存儲在參照表中,其中,CDN服務(wù)商的信息可以包括 CDN簡稱、CDN服務(wù)商的客服電話等等。當(dāng)需要對目標(biāo)域名對應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行檢測時,可以先將攜帶有目標(biāo)域名的查詢請求發(fā)送至域名系統(tǒng),域名系統(tǒng)對目標(biāo)域名進(jìn)行解析,并將解析結(jié)果作為查詢結(jié)果返回,這樣,可以從返回的查詢結(jié)果中提取目標(biāo)域名的別名記錄,再以別名記錄作為查詢的關(guān)鍵詞,從參照表中查詢別名記錄對應(yīng)的CDN服務(wù)商的信息和用于查詢網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址的API地址,以便于在檢測出網(wǎng)絡(luò)節(jié)點(diǎn)異常時,將CDN服務(wù)商的信息一并發(fā)送給監(jiān)控終端。
以www.gridsum.com作為目標(biāo)域名為例,首先向DNS發(fā)出查詢請求,將DNS的返回信息的CNAME字段取出,例如DNS查詢結(jié)果:
www.gridsum.com CNAME gridsum.com.ccgslb.com.cn
得到CNAME:gridsum.com.ccgslb.com.cn;用該CNAME在參照表(程序預(yù)先訂制好的CDN簡稱、CNAME、解析查詢API、客服電話的對照表)中取出CDN簡稱,將其作為CDN服務(wù)商的名稱;用該CNAME繼續(xù)在參照表中取出解析查詢API地址,該API是CDN服務(wù)商提供的,用來查詢動態(tài)CDN解析IP池的,將該API地址存起來;用該CNAME繼續(xù)在參照表中取出“客服電話”等。
優(yōu)選地,第二獲取單元包括:發(fā)送模塊,用于向API地址對應(yīng)的服務(wù)器發(fā)送HTTP連接請求,以使API地址對應(yīng)的服務(wù)器返回包含有網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址的HTML文件;接收模塊,用于接收API地址對應(yīng)的服務(wù)器返回的HTML文件,利用正則表達(dá)式獲取HTML文件中包含的網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址,得到IP地址集。
對于IP地址集的獲取,本實(shí)施例中,通過向API地址發(fā)送HTTP連接請求,該API地址對應(yīng)的服務(wù)器接收到該請求之后,返回一個HTML文件,該文件中包含有目前解析池內(nèi)的網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址。由于HTML文件具有其自身的文本格式,本實(shí)施例中,采用正則表達(dá)式對該HTML文件中數(shù)據(jù)進(jìn)行匹配,從而提取出其中包含的IP地址,形成IP地址集。
具體地,返回一個HTML文件的文本樣式可以是:
<td>10.1.1.1</td>
<td>10.1.1.2</td>
<td>10.1.1.3</td>
用正則表達(dá)式進(jìn)行匹配處理,將每個IP拿出來追加到list中,最終得到列表[‘10.1.1.1’,’10.1.1.2’,’10.1.1.3’…..]
列表中的IP即是目前解析池中的網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址。
根據(jù)本申請實(shí)施例,通過采用正則表達(dá)式快速地從HTML文件中提取IP地址,提高了IP地址的提取效率。
下面通過一個優(yōu)選的實(shí)施例來對本申請進(jìn)行描述。在該實(shí)施例中,主要包括識別模塊、IP地址生成模塊、探測模塊和報警模塊。其中,識別模塊相當(dāng)于本申請實(shí)施例中第二發(fā)送單元、提取單元和查詢單元,IP地址生成模塊相當(dāng)于第二獲取單元,探測模塊相當(dāng)于檢測單元,報警模塊相當(dāng)于第一發(fā)送單元。具體地:
識別模塊用于在開始檢測之前,首先向DNS發(fā)出一個監(jiān)控域名查詢請求,并將DNS的返回信息的CNAME字段取出,得到CNAME進(jìn)行CDN服務(wù)商辨別。
例如,DNS查詢結(jié)果為:www.gridsum.com CNAME gridsum.com.ccgslb.com.cn
得到CNAME:gridsum.com.ccgslb.com.cn;
用該CNAME在參照表(程序預(yù)先訂制好的CDN簡稱、CNAME、解析查詢API、客服電話的對照表)中取出CDN簡稱,以備報警模塊產(chǎn)生報警時將該簡稱加入報警信息的“CDN服務(wù)商名”項(xiàng)中;用該CNAME繼續(xù)在參照表中取出解析查詢API地址,該API是CDN服務(wù)商提供,用來查詢動態(tài)CDN解析IP池的,將該API地址存起來,供下面IP地址列表生成模塊使用;用該CNAME繼續(xù)在參照表中取出“客服電話”。
IP地址生成模塊用于向該API發(fā)出HTTP連接請求,該API返回一個HTML文件,文件中有若干IP地址,文本樣式類似:
<td>10.1.1.1</td>
<td>10.1.1.2</td>
<td>10.1.1.3</td>
用正則表達(dá)式進(jìn)行匹配處理,將每個拿出來追加到list中,最終得到列表[‘10.1.1.1’,’10.1.1.2’,’10.1.1.3’…..]
列表中的IP即是目前解析池中的服務(wù)器的IP地址。將此列表保存,以供探測模塊固定IP進(jìn)行檢測。
探測模塊用于在收到IP地址生成模塊發(fā)來的IP地址列表后,首先借助python的多線程模塊創(chuàng)建一個子線程,此子線程采用兩種方式進(jìn)行檢測:
第一種:調(diào)用python的pycurl模塊(此模塊專門用于HTTP請求探測,可以收集 探測過程中的各個環(huán)節(jié)響應(yīng)時間,如DNS時間、TCP建聯(lián)時間、下載時間等等),主線程首先利用for循環(huán),在IP列表中為每個子線程取出一個探測IP,pycurl發(fā)出探測請求,把探測過程得到的各環(huán)節(jié)相應(yīng)時間信息存到預(yù)定義的變量中;
第二種:對網(wǎng)絡(luò)節(jié)點(diǎn)的IP地址進(jìn)行ping測試,探測命令ping–f–c 1000,即快速發(fā)出1000次ping測試,用丟包次數(shù)/1000得到丟包率。
探測模塊還用于對網(wǎng)絡(luò)節(jié)點(diǎn)的報警判斷,具體地,如果本次探測請求的總時長未超過10秒并且ping的丟包率小于10%,則結(jié)束該子線程的探測過程;如果發(fā)生探測請求10秒超時或丟包率超過10%中的任一種情況,則“失敗次數(shù)”+1,判斷“失敗次數(shù)”是否超過3次,若還未超過3次,則此異常為“疑似報警”,本線程休眠10秒鐘,再次進(jìn)行探測;若“失敗次數(shù)”已超過3次,則此異常為“真實(shí)報警”,探測模塊帶著pycurl測試過程保留的最后一次測試的信息變量、ping丟包率,生成一個字典,字典的格式舉例如下:
{‘IP’:’10.1.1.1’,’CDN’:’chinacache’,’ping_lost’:’0%’,’time_totle’:’11s’,’time_dns’:’1s’,’time_connect’:’10s’…}
該字典內(nèi)大部分內(nèi)容會用來下一步生成報警信息中的探測詳情內(nèi)容。
報警模塊在被觸發(fā)時則是有IP地址探測連續(xù)3次超過10秒的情況,該IP服務(wù)性能可能有異常,需要報告給網(wǎng)站運(yùn)營商,首先將上一步生成的字典進(jìn)行讀取,得到報警IP、CDN名稱、檢測時間細(xì)節(jié),然后在shell中調(diào)用“nali”工具檢測此IP歸屬地,接下來開始整理格式,將識別模塊和探測模塊得到的細(xì)膩整理成一段報警字符串,字符串舉例:
[IP:10.1.1.1 狀態(tài):報警]
歸屬地:中國-北京
CDN服務(wù)商:chinacache
探測細(xì)節(jié):
time_totle:11s
time_dns:1s
time_connect:10s
time_download:0s
ping_lost:0%
客服電話:010-******
報警模塊在shell中調(diào)用被監(jiān)控模塊,將此字符串發(fā)送給監(jiān)控終端,該監(jiān)控終端在配置文件中是可配置的。
上述本申請實(shí)施例序號僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
在本申請的上述實(shí)施例中,對各個實(shí)施例的描述都各有側(cè)重,某個實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。
在本申請所提供的幾個實(shí)施例中,應(yīng)該理解到,所揭露的技術(shù)內(nèi)容,可通過其它的方式實(shí)現(xiàn)。其中,以上所描述的裝置實(shí)施例僅僅是示意性的,例如所述單元的劃分,可以為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本申請各個實(shí)施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨(dú)物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時,可以存儲在一個計(jì)算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本申請的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備(可為個人計(jì)算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請各個實(shí)施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、只讀存儲器(ROM,Read-Only Memory)、隨機(jī)存取存儲器(RAM,Random Access Memory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述僅是本申請的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本申請?jiān)淼那疤嵯?,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤 飾也應(yīng)視為本申請的保護(hù)范圍。