本發(fā)明涉及網(wǎng)卡技術(shù)領(lǐng)域,特別涉及一種Linux系統(tǒng)的網(wǎng)卡錯誤事件收集方法及系統(tǒng)。
背景技術(shù):
當(dāng)前,互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展給人們的工作生活帶來巨大的改變?,F(xiàn)在,人們在生活、學(xué)習(xí)和工作上都已經(jīng)很難離開互聯(lián)網(wǎng)和計算機。通過互聯(lián)網(wǎng),人們足不出戶,便可遠(yuǎn)程獲取自身所需的大量信息。在Linux系統(tǒng)中,為了實現(xiàn)與外界的遠(yuǎn)程數(shù)據(jù)交互,需要通過能夠正常工作的網(wǎng)卡與互聯(lián)網(wǎng)進行數(shù)據(jù)連接。一旦網(wǎng)卡發(fā)生了斷路、數(shù)據(jù)丟包等錯誤事件,便無法與互聯(lián)網(wǎng)進行正常的數(shù)據(jù)通信。為了提高網(wǎng)卡的通信可靠性,有必要及時地收集網(wǎng)卡中發(fā)生的錯誤事件的信息。目前,如何收集網(wǎng)卡中發(fā)生的錯誤事件信息是有待解決的問題。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種Linux系統(tǒng)的網(wǎng)卡錯誤事件收集方法及系統(tǒng),實現(xiàn)了收集網(wǎng)卡中發(fā)生的錯誤事件信息的目的。其具體方案如下:
一種Linux系統(tǒng)的網(wǎng)卡錯誤事件收集方法,包括:
對Linux系統(tǒng)的網(wǎng)卡進行實時監(jiān)測,得到相應(yīng)的網(wǎng)卡實時信息;
判斷所述網(wǎng)卡實時信息中是否包含用于指示所述網(wǎng)卡發(fā)生錯誤事件的信息,如果有,則從所述網(wǎng)卡實時信息中提取出相應(yīng)的錯誤事件實時信息;
將所述錯誤事件實時信息存儲至預(yù)設(shè)的錯誤事件信息數(shù)據(jù)庫中。
優(yōu)選的,所述對Linux系統(tǒng)的網(wǎng)卡進行實時監(jiān)測,得到相應(yīng)的網(wǎng)卡實時信息的過程,包括:
對所述網(wǎng)卡的接口信息進行實時監(jiān)測,得到相應(yīng)的網(wǎng)卡接口實時信息;
對所述網(wǎng)卡的總線信息進行實時監(jiān)測,得到相應(yīng)的網(wǎng)卡總線實時信息;
對所述網(wǎng)卡的鏈路狀態(tài)信息進行實時監(jiān)測,得到相應(yīng)的鏈路狀態(tài)實時信息。
優(yōu)選的,所述對所述網(wǎng)卡的接口信息進行實時監(jiān)測,得到相應(yīng)的網(wǎng)卡接口實時信息的過程,包括:
利用所述Linux系統(tǒng)中的/proc/net/dev文件,獲取所述網(wǎng)卡接口實時信息。
優(yōu)選的,所述網(wǎng)卡接口實時信息包括接收字節(jié)數(shù)、接收數(shù)據(jù)包數(shù)、接收錯誤數(shù)據(jù)包數(shù)、接收端丟包數(shù)、發(fā)送字節(jié)數(shù)、發(fā)送錯數(shù)據(jù)包數(shù)、發(fā)送錯誤數(shù)據(jù)包數(shù)以及發(fā)送端丟包數(shù)中的一種或任意幾種。
優(yōu)選的,所述對所述網(wǎng)卡的總線信息進行實時監(jiān)測,得到相應(yīng)的網(wǎng)卡總線實時信息的過程,包括:
將struct ethtool_drvinfo中的cmd設(shè)定為ETHTOOL_GDRVINFO,然后利用SIOETHTOOL進行IOCTL系統(tǒng)調(diào)用,以得到所述網(wǎng)卡總線實時信息。
優(yōu)選的,所述對所述網(wǎng)卡的鏈路狀態(tài)信息進行實時監(jiān)測,得到相應(yīng)的鏈路狀態(tài)實時信息的過程,包括:
將struct ethtool_value中的cmd設(shè)定為ETHTOOL_GLINK,然后進行IOCTL系統(tǒng)調(diào)用,以得到所述鏈路狀態(tài)實時信息。
優(yōu)選的,所述將所述錯誤事件實時信息存儲至預(yù)設(shè)的錯誤事件信息數(shù)據(jù)庫中的過程,包括:
將所述錯誤事件實時信息存儲至文件格式與預(yù)設(shè)文件格式相一致的目標(biāo)文件;
將所述目標(biāo)文件存儲至所述錯誤事件信息數(shù)據(jù)庫中。
優(yōu)選的,所述目標(biāo)文件的文件名的生成過程,包括:
從所述錯誤事件實時信息中提取出用于概括相應(yīng)錯誤事件的關(guān)鍵詞;
根據(jù)所述關(guān)鍵詞生成所述目標(biāo)文件的文件名。
優(yōu)選的,所述網(wǎng)卡錯誤事件收集方法,還包括:
若判斷出所述網(wǎng)卡實時信息中包含用于指示所述網(wǎng)卡發(fā)生錯誤事件的信息,則生成相應(yīng)的報警信息。
本發(fā)明還公開了一種Linux系統(tǒng)的網(wǎng)卡錯誤事件收集系統(tǒng),包括:
信息監(jiān)測模塊,用于對Linux系統(tǒng)的網(wǎng)卡進行實時監(jiān)測,得到相應(yīng)的網(wǎng)卡實時信息;
信息判斷模塊,用于判斷所述網(wǎng)卡實時信息中是否包含用于指示所述網(wǎng)卡發(fā)生錯誤事件的信息;
信息提取模塊,用于當(dāng)所述信息判斷模塊判定所述網(wǎng)卡實時信息中包含用于指示所述網(wǎng)卡發(fā)生錯誤事件的信息,則從所述網(wǎng)卡實時信息中提取出相應(yīng)的錯誤事件實時信息;
信息存儲模塊,用于將所述錯誤事件實時信息存儲至預(yù)設(shè)的錯誤事件信息數(shù)據(jù)庫中。
本發(fā)明中,網(wǎng)卡錯誤事件收集方法包括:對Linux系統(tǒng)的網(wǎng)卡進行實時監(jiān)測,得到相應(yīng)的網(wǎng)卡實時信息;判斷網(wǎng)卡實時信息中是否包含用于指示網(wǎng)卡發(fā)生錯誤事件的信息,如果有,則從網(wǎng)卡實時信息中提取出相應(yīng)的錯誤事件實時信息;將錯誤事件實時信息存儲至預(yù)設(shè)的錯誤事件信息數(shù)據(jù)庫中??梢姡景l(fā)明通過對網(wǎng)卡進行實時監(jiān)測,并判斷網(wǎng)卡實時信息是否包含用于指示網(wǎng)卡發(fā)生錯誤事件的信息,如果有,則將錯誤事件實時信息存儲至預(yù)設(shè)的數(shù)據(jù)庫中,由此實現(xiàn)了對網(wǎng)卡中發(fā)生的錯誤事件信息進行收集的目的。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本發(fā)明實施例公開的一種Linux系統(tǒng)的網(wǎng)卡錯誤事件收集方法流程圖;
圖2為本發(fā)明實施例公開的一種Linux系統(tǒng)的網(wǎng)卡錯誤事件收集系統(tǒng)結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明實施例公開了一種Linux系統(tǒng)的網(wǎng)卡錯誤事件收集方法,參見圖1所示,該方法包括:
步驟S11:對Linux系統(tǒng)的網(wǎng)卡進行實時監(jiān)測,得到相應(yīng)的網(wǎng)卡實時信息。
步驟S12:判斷網(wǎng)卡實時信息中是否包含用于指示網(wǎng)卡發(fā)生錯誤事件的信息,如果有,則從網(wǎng)卡實時信息中提取出相應(yīng)的錯誤事件實時信息。
可以理解的是,上述用于指示網(wǎng)卡發(fā)生錯誤事件的信息可以包括但不限于用于指示數(shù)據(jù)收發(fā)錯誤事件、丟包事件和通信斷路事件等的信息。
步驟S13:將錯誤事件實時信息存儲至預(yù)設(shè)的錯誤事件信息數(shù)據(jù)庫中。
本發(fā)明實施例中,網(wǎng)卡錯誤事件收集方法包括:對Linux系統(tǒng)的網(wǎng)卡進行實時監(jiān)測,得到相應(yīng)的網(wǎng)卡實時信息;判斷網(wǎng)卡實時信息中是否包含用于指示網(wǎng)卡發(fā)生錯誤事件的信息,如果有,則從網(wǎng)卡實時信息中提取出相應(yīng)的錯誤事件實時信息;將錯誤事件實時信息存儲至預(yù)設(shè)的錯誤事件信息數(shù)據(jù)庫中??梢姡景l(fā)明實施例通過對網(wǎng)卡進行實時監(jiān)測,并判斷網(wǎng)卡實時信息是否包含用于指示網(wǎng)卡發(fā)生錯誤事件的信息,如果有,則將錯誤事件實時信息存儲至預(yù)設(shè)的數(shù)據(jù)庫中,由此實現(xiàn)了對網(wǎng)卡中發(fā)生的錯誤事件信息進行收集的目的。
本發(fā)明實施例公開了一種具體的Linux系統(tǒng)的網(wǎng)卡錯誤事件收集方法,相對于上一實施例,本實施例對技術(shù)方案作了進一步的說明和優(yōu)化。具體的:
上一實施例步驟S11中,對Linux系統(tǒng)的網(wǎng)卡進行實時監(jiān)測,得到相應(yīng)的網(wǎng)卡實時信息的過程,具體包括下面步驟S111至S113;其中:
步驟S111:對網(wǎng)卡的接口信息進行實時監(jiān)測,得到相應(yīng)的網(wǎng)卡接口實時信息;
步驟S112:對網(wǎng)卡的總線信息進行實時監(jiān)測,得到相應(yīng)的網(wǎng)卡總線實時信息;
步驟S113:對網(wǎng)卡的鏈路狀態(tài)信息進行實時監(jiān)測,得到相應(yīng)的鏈路狀態(tài)實時信息。
需要指出的是,上述三個步驟之間的順序可以相互調(diào)換。
另外,上述步驟S111中,對網(wǎng)卡的接口信息進行實時監(jiān)測,得到相應(yīng)的網(wǎng)卡接口實時信息的過程,具體包括:利用Linux系統(tǒng)中的/proc/net/dev文件,獲取網(wǎng)卡接口實時信息。
其中,上述網(wǎng)卡接口實時信息具體包括接收字節(jié)數(shù)、接收數(shù)據(jù)包數(shù)、接收錯誤數(shù)據(jù)包數(shù)、接收端丟包數(shù)、發(fā)送字節(jié)數(shù)、發(fā)送錯數(shù)據(jù)包數(shù)、發(fā)送錯誤數(shù)據(jù)包數(shù)以及發(fā)送端丟包數(shù)中的一種或任意幾種。
進一步的,上述步驟S112中,對網(wǎng)卡的總線信息進行實時監(jiān)測,得到相應(yīng)的網(wǎng)卡總線實時信息的過程,具體包括:將struct ethtool_drvinfo中的cmd設(shè)定為ETHTOOL_GDRVINFO,然后利用SIOETHTOOL進行IOCTL系統(tǒng)調(diào)用,以得到網(wǎng)卡總線實時信息。
另外,上述步驟S113中,對網(wǎng)卡的鏈路狀態(tài)信息進行實時監(jiān)測,得到相應(yīng)的鏈路狀態(tài)實時信息的過程,具體包括:將struct ethtool_value中的cmd設(shè)定為ETHTOOL_GLINK,然后進行IOCTL系統(tǒng)調(diào)用,以得到鏈路狀態(tài)實時信息。
更具體的,上一實施例步驟S13中,將錯誤事件實時信息存儲至預(yù)設(shè)的錯誤事件信息數(shù)據(jù)庫中的過程,具體包括下面步驟S131和S132;其中:
步驟S131:將錯誤事件實時信息存儲至文件格式與預(yù)設(shè)文件格式相一致的目標(biāo)文件;
步驟S132:將目標(biāo)文件存儲至錯誤事件信息數(shù)據(jù)庫中。
具體的,上述目標(biāo)文件的文件名的生成過程,可以包括:從錯誤事件實時信息中提取出用于概括相應(yīng)錯誤事件的關(guān)鍵詞,然后根據(jù)關(guān)鍵詞生成目標(biāo)文件的文件名,例如生成文件名為ereport.io.network.sendpkg_fail的目標(biāo)文件。
進一步的,本實施例中的網(wǎng)卡錯誤事件收集方法,還可以包括:若判斷出網(wǎng)卡實時信息中包含用于指示網(wǎng)卡發(fā)生錯誤事件的信息,則生成相應(yīng)的報警信息。
相應(yīng)的,本發(fā)明實施例還公開了一種Linux系統(tǒng)的網(wǎng)卡錯誤事件收集系統(tǒng),參見圖2所示,該系統(tǒng)包括:
信息監(jiān)測模塊21,用于對Linux系統(tǒng)的網(wǎng)卡進行實時監(jiān)測,得到相應(yīng)的網(wǎng)卡實時信息;
信息判斷模塊22,用于判斷網(wǎng)卡實時信息中是否包含用于指示網(wǎng)卡發(fā)生錯誤事件的信息;
信息提取模塊23,用于當(dāng)信息判斷模塊22判定網(wǎng)卡實時信息中包含用于指示網(wǎng)卡發(fā)生錯誤事件的信息,則從網(wǎng)卡實時信息中提取出相應(yīng)的錯誤事件實時信息;
信息存儲模塊24,用于將錯誤事件實時信息存儲至預(yù)設(shè)的錯誤事件信息數(shù)據(jù)庫中。
可見,本發(fā)明實施例通過對網(wǎng)卡進行實時監(jiān)測,并判斷網(wǎng)卡實時信息是否包含用于指示網(wǎng)卡發(fā)生錯誤事件的信息,如果有,則將錯誤事件實時信息存儲至預(yù)設(shè)的數(shù)據(jù)庫中,由此實現(xiàn)了對網(wǎng)卡中發(fā)生的錯誤事件信息進行收集的目的。
本發(fā)明實施例公開了一種具體的Linux系統(tǒng)的網(wǎng)卡錯誤事件收集系統(tǒng),相對于上一實施例,本實施例對技術(shù)方案作了進一步的說明和優(yōu)化。具體的:
上一實施例中的信息監(jiān)測模塊具體可以包括第一監(jiān)測單元、第二監(jiān)測單元和第三監(jiān)測單元;其中,
第一監(jiān)測單元,用于對網(wǎng)卡的接口信息進行實時監(jiān)測,得到相應(yīng)的網(wǎng)卡接口實時信息;
第二監(jiān)測單元,用于對網(wǎng)卡的總線信息進行實時監(jiān)測,得到相應(yīng)的網(wǎng)卡總線實時信息;
第三監(jiān)測單元,用于對網(wǎng)卡的鏈路狀態(tài)信息進行實時監(jiān)測,得到相應(yīng)的鏈路狀態(tài)實時信息。
在本實施例中,上述第一監(jiān)測單元,具體用于利用Linux系統(tǒng)中的/proc/net/dev文件,獲取網(wǎng)卡接口實時信息。其中,上述網(wǎng)卡接口實時信息具體包括接收字節(jié)數(shù)、接收數(shù)據(jù)包數(shù)、接收錯誤數(shù)據(jù)包數(shù)、接收端丟包數(shù)、發(fā)送字節(jié)數(shù)、發(fā)送錯數(shù)據(jù)包數(shù)、發(fā)送錯誤數(shù)據(jù)包數(shù)以及發(fā)送端丟包數(shù)中的一種或任意幾種。
上述第二監(jiān)測單元,具體用于將struct ethtool_drvinfo中的cmd設(shè)定為ETHTOOL_GDRVINFO,然后利用SIOETHTOOL進行IOCTL系統(tǒng)調(diào)用,以得到網(wǎng)卡總線實時信息。上述第三監(jiān)測單元,具體用于將struct ethtool_value中的cmd設(shè)定為ETHTOOL_GLINK,然后進行IOCTL系統(tǒng)調(diào)用,以得到鏈路狀態(tài)實時信息。
更具體的,上一實施例中的信息存儲模塊具體用于將錯誤事件實時信息存儲至文件格式與預(yù)設(shè)文件格式相一致的目標(biāo)文件,然后將目標(biāo)文件存儲至錯誤事件信息數(shù)據(jù)庫中。
可以理解的是,上述信息存儲模塊中還包括文件名生成單元,具體可以用于從錯誤事件實時信息中提取出用于概括相應(yīng)錯誤事件的關(guān)鍵詞,然后根據(jù)關(guān)鍵詞生成目標(biāo)文件的文件名,例如生成文件名為ereport.io.network.sendpkg_fail的目標(biāo)文件。
進一步的,本實施例中的網(wǎng)卡錯誤事件收集系統(tǒng)還可以包括報警模塊,用于當(dāng)上述信息判斷模塊判斷出網(wǎng)卡實時信息中包含用于指示網(wǎng)卡發(fā)生錯誤事件的信息,則生成相應(yīng)的報警信息。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
以上對本發(fā)明所提供的一種Linux系統(tǒng)的網(wǎng)卡錯誤事件收集方法及系統(tǒng)進行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。