本申請(qǐng)涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,特別涉及一種監(jiān)控系統(tǒng)中的被監(jiān)控主機(jī)、監(jiān)控系統(tǒng)以及監(jiān)控方法。
背景技術(shù):
Zabbix是一個(gè)開(kāi)源分布式監(jiān)控系統(tǒng),可以對(duì)網(wǎng)絡(luò)設(shè)備進(jìn)行數(shù)據(jù)監(jiān)控。如圖1所示,Zabbix監(jiān)控系統(tǒng)中包括服務(wù)主機(jī)和若干個(gè)被監(jiān)控主機(jī),圖1中僅顯示一個(gè)被監(jiān)控主機(jī)。服務(wù)主機(jī)中包括Zabbix網(wǎng)絡(luò)(即web)圖形用戶界面(Graphical User Interface,GUI),Zabbix數(shù)據(jù)庫(kù)和Zabbix服務(wù)端。Zabbix實(shí)現(xiàn)的一種設(shè)備監(jiān)控方案中,在被監(jiān)控主機(jī)中安裝Zabbix客戶端和監(jiān)控腳本。用戶通過(guò)Zabbix網(wǎng)絡(luò)GUI在Zabbix服務(wù)端中添加監(jiān)控項(xiàng)等一些配置信息,在監(jiān)控客戶端的配置文件中配置監(jiān)控項(xiàng)的key和對(duì)應(yīng)的監(jiān)控腳本。Zabbix客戶端會(huì)從Zabbix服務(wù)端中同步監(jiān)控項(xiàng)等一些配置信息,根據(jù)這些配置信息調(diào)度對(duì)應(yīng)的監(jiān)控腳本采集監(jiān)控?cái)?shù)據(jù),并把采集到的監(jiān)控?cái)?shù)據(jù)上報(bào)給Zabbix服務(wù)端。Zabbix服務(wù)端將收到的監(jiān)控?cái)?shù)據(jù)存入到Zabbix數(shù)據(jù)庫(kù),用戶通過(guò)Zabbix網(wǎng)絡(luò)GUI可以查看監(jiān)控?cái)?shù)據(jù)的結(jié)果。
被監(jiān)控主機(jī)上運(yùn)行有服務(wù)進(jìn)程,用戶通過(guò)服務(wù)進(jìn)程與主機(jī)外面的業(yè)務(wù)系統(tǒng)交互,所述業(yè)務(wù)系統(tǒng)可以為通信系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)或者web服務(wù)系統(tǒng)等等。由于Zabbix系統(tǒng)只對(duì)被監(jiān)控主機(jī)自身進(jìn)行監(jiān)控,當(dāng)被監(jiān)控主機(jī)與業(yè)務(wù)系統(tǒng)之間的鏈路發(fā)生故障或者業(yè)務(wù)系統(tǒng)發(fā)生故障時(shí),Zabbix系統(tǒng)無(wú)法及時(shí)發(fā)現(xiàn)該故障。例如,被監(jiān)控主機(jī)可以與通信系統(tǒng)相連,被監(jiān)控主機(jī)可以連接到運(yùn)營(yíng)商的短消息網(wǎng)關(guān),使用所述被監(jiān)控主機(jī)的用戶通過(guò)短消息網(wǎng)關(guān)發(fā)送短消息。但是被監(jiān)控主機(jī)與短消息網(wǎng)關(guān)之間的通信鏈路發(fā)生故障或者短消息網(wǎng)關(guān)本身發(fā)生故障,用戶無(wú)法通過(guò)被監(jiān)控主機(jī)發(fā)送短消息,從而造成用戶的短消息業(yè)務(wù)失敗,由于被監(jiān)控主機(jī)自身沒(méi)有發(fā)生故障,Zabbix系統(tǒng)無(wú)法及時(shí)獲知用戶的短消息業(yè)務(wù)故障,從而無(wú)法及時(shí)向管理員或用戶上報(bào)短消息故障信息。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)實(shí)施例提供一種監(jiān)控系統(tǒng)中的被監(jiān)控主機(jī)、監(jiān)控系統(tǒng)以及監(jiān)控方法,用以解決被監(jiān)控主機(jī)與業(yè)務(wù)系統(tǒng)之間的鏈路發(fā)生故障或者業(yè)務(wù)系統(tǒng)發(fā)生故障時(shí),監(jiān)控系統(tǒng)無(wú)法及時(shí)發(fā)現(xiàn)該故障的問(wèn)題。
本申請(qǐng)實(shí)施例提供的具體技術(shù)方案如下:第一方面,提供一種監(jiān)控系統(tǒng)中的被監(jiān)控主機(jī),該被監(jiān)控主機(jī)包括監(jiān)控客戶端、代理工具模塊以及業(yè)務(wù)模塊,所述代理工具模塊向所述業(yè)務(wù)模塊提供服務(wù)接口,所述業(yè)務(wù)模塊記錄每種業(yè)務(wù)失敗類別關(guān)聯(lián)的一個(gè)key,以及與key一一對(duì)應(yīng)的故障描述參數(shù)集;代理工具模塊記錄key與模板文件的對(duì)應(yīng)關(guān)系,所述模板文件中包括所述key對(duì)應(yīng)的故障描述參數(shù)集;當(dāng)業(yè)務(wù)模塊與主機(jī)外部的業(yè)務(wù)系統(tǒng)交互失敗時(shí),所述業(yè)務(wù)模塊通過(guò)所述服務(wù)接口向代理工具模塊發(fā)送業(yè)務(wù)失敗對(duì)應(yīng)的key以及本次失敗對(duì)應(yīng)的故障描述參數(shù)的取值;代理工具模塊將所述各個(gè)故障描述參數(shù)的取值寫入所述key對(duì)應(yīng)的模板文件,生成并向監(jiān)控服務(wù)端上報(bào)監(jiān)控信息。本發(fā)明實(shí)施例通過(guò)在被監(jiān)控主機(jī)中新增代理工具模塊,由代理工具模塊向業(yè)務(wù)模塊提供服務(wù)接口,定義了業(yè)務(wù)模塊在業(yè)務(wù)失敗后的故障上報(bào)流程,實(shí)現(xiàn)了監(jiān)控系統(tǒng)對(duì)非被監(jiān)控主機(jī)故障引起的業(yè)務(wù)失敗的監(jiān)控。業(yè)務(wù)模塊無(wú)需與監(jiān)控系統(tǒng)耦合,業(yè)務(wù)模塊只需要根據(jù)自身的業(yè)務(wù)異常場(chǎng)景定義出key和該異常場(chǎng)景所需要的JSON格式的所有故障描述參數(shù)即可。
在一種可能的設(shè)計(jì)中,所述代理工具模塊在將所述各個(gè)故障描述參數(shù)的取值寫入模板文件之后,生成value,所述value為所述各個(gè)故障描述參數(shù)的取值對(duì)應(yīng)的字符串;相應(yīng)地,所述監(jiān)控信息包括本次業(yè)務(wù)失敗的類別對(duì)應(yīng)的key以及所述value。
在另一種可能的設(shè)計(jì)中,所述代理工具模塊可以通過(guò)調(diào)用所述監(jiān)控客戶端的命令行工具,將所述監(jiān)控信息上報(bào)給所述監(jiān)控服務(wù)端;或者,所述代理工具模塊將所述監(jiān)控信息發(fā)送給所述監(jiān)控客戶端,以使得所述監(jiān)控客戶端將所述監(jiān)控信息發(fā)送給所述監(jiān)控服務(wù)端。
在另一種可能的設(shè)計(jì)中,所述代理工具模塊通過(guò)所述服務(wù)接口向所述業(yè)務(wù)模塊提供本地環(huán)回地址,接收所述業(yè)務(wù)模塊通過(guò)HTTP方式傳遞的所述業(yè)務(wù)故障信息。
所述故障描述參數(shù)可以采用JSON對(duì)象。
在一種可能的場(chǎng)景中,本發(fā)明實(shí)施例通過(guò)對(duì)模板文件和JSON對(duì)象的組合變化,可以根據(jù)需要自定義監(jiān)控信息的內(nèi)容和格式,向監(jiān)控服務(wù)端上報(bào)自定義的監(jiān)控信息,方便系統(tǒng)管理員查看詳細(xì)的業(yè)務(wù)異常情況。再一方面,由于業(yè)務(wù)模塊與代理工具模塊之間采用無(wú)狀態(tài)的HTTP通信,即使監(jiān)控系統(tǒng)的進(jìn)程發(fā)生故障,也不會(huì)影響到業(yè)務(wù)模塊,從而不會(huì)對(duì)用戶的業(yè)務(wù)產(chǎn)生影響,保障了業(yè)務(wù)的安全。
所述代理工具模塊,還可以執(zhí)行流控策略,限定同一類別的業(yè)務(wù)失敗的上報(bào)頻率。所述流控策略包括限定同一key值對(duì)應(yīng)的監(jiān)控信息的上報(bào)頻率不大于預(yù)設(shè)值。
所述代理工具模塊與所述監(jiān)控客戶端合設(shè)。
第二方面,提供一種監(jiān)控系統(tǒng),包括:監(jiān)控客戶端、代理工具模塊以及監(jiān)控服務(wù)端,所述監(jiān)控客戶端以及所述代理工具模塊運(yùn)行在被監(jiān)控主機(jī)上,所述代理工具模塊向業(yè)務(wù)模塊提供服務(wù)接口;其中,所述所述代理工具模塊具有實(shí)現(xiàn)上述第一方面中所述的所述代理工具模塊的功能。
第三方面,提供一種監(jiān)控方法,與前述第一方面相對(duì)應(yīng),業(yè)務(wù)模塊、代理工具模塊以及監(jiān)控服務(wù)端執(zhí)行第一方面中的對(duì)應(yīng)模塊的功能。
第四方面,提供了另一種監(jiān)控系統(tǒng)中的被監(jiān)控主機(jī),該監(jiān)控系統(tǒng)中的被監(jiān)控主機(jī)具有實(shí)現(xiàn)上述第一方面和任一種可能的設(shè)計(jì)中被監(jiān)控主機(jī)行為的功能。所述功能可以通過(guò)硬件實(shí)現(xiàn),也可以通過(guò)硬件執(zhí)行相應(yīng)的軟件實(shí)現(xiàn)。所述硬件或軟件包括一個(gè)或多個(gè)與上述功能相對(duì)應(yīng)的模塊。
在一個(gè)可能的設(shè)計(jì)中,該監(jiān)控系統(tǒng)中的被監(jiān)控主機(jī)包括收發(fā)器和處理器,其中,處理器用于調(diào)用一組程序代碼,以執(zhí)行如第二方面和任一種可能的設(shè)計(jì)中所述的方法。
第五方面,提供了一種計(jì)算機(jī)存儲(chǔ)介質(zhì),用于儲(chǔ)存為上述方面所述的被監(jiān)控主機(jī)所用的計(jì)算機(jī)軟件指令,其包含用于執(zhí)行上述方面所設(shè)計(jì)的程序。
附圖說(shuō)明
圖1為現(xiàn)有技術(shù)中Zabbix監(jiān)控系統(tǒng)架構(gòu)圖;
圖2為本申請(qǐng)實(shí)施例中監(jiān)控系統(tǒng)架構(gòu)圖;
圖3為本申請(qǐng)實(shí)施例中監(jiān)控方法的流程示意圖;
圖4為本申請(qǐng)實(shí)施例中監(jiān)控系統(tǒng)中的被監(jiān)控主機(jī)硬件結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了使本申請(qǐng)的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本申請(qǐng)作進(jìn)一步描述。
如圖2所示,為本發(fā)明實(shí)施例提供的一種監(jiān)控系統(tǒng)結(jié)構(gòu)示意圖,該監(jiān)控系統(tǒng)包括被監(jiān)控主機(jī)11和監(jiān)控服務(wù)端12,監(jiān)控系統(tǒng)通過(guò)網(wǎng)絡(luò)13與業(yè)務(wù)系統(tǒng)14相連,具體的,被監(jiān)控主機(jī)包括監(jiān)控客戶端111、代理工具模塊112以及業(yè)務(wù)模塊113。其中,所述代理工具模塊112向所述業(yè)務(wù)模塊113提供服務(wù)接口,所述業(yè)務(wù)模塊113通過(guò)所述服務(wù)接口與所述代理工具模塊112交互,所述業(yè)務(wù)模塊113通過(guò)調(diào)用業(yè)務(wù)系統(tǒng)14的接口與業(yè)務(wù)系統(tǒng)交互。
在一種可能的場(chǎng)景中,用戶登錄所述被監(jiān)控主機(jī)11,運(yùn)行主機(jī)11上的應(yīng)用,該應(yīng)用通過(guò)所述業(yè)務(wù)模塊113接入到外部業(yè)務(wù)系統(tǒng)14,訪問(wèn)業(yè)務(wù)系統(tǒng)14提供的業(yè)務(wù)。例如,業(yè)務(wù)系統(tǒng)14可以為短消息系統(tǒng),業(yè)務(wù)模塊113通過(guò)網(wǎng)絡(luò)13連接到業(yè)務(wù)系統(tǒng)14的短消息中心,通過(guò)短消息中心對(duì)外發(fā)送短消息。
當(dāng)主機(jī)11本身運(yùn)行正常,主機(jī)與業(yè)務(wù)系統(tǒng)14之間的鏈路故障或者業(yè)務(wù)系統(tǒng)14故障,導(dǎo)致用戶無(wú)法正常使用短消息業(yè)務(wù)時(shí),監(jiān)控服務(wù)端需要及時(shí)獲知該故障的發(fā)生,為了實(shí)現(xiàn)上述目的,在本發(fā)明實(shí)施例中,在主機(jī)11上新增代理工具模塊112,代理工具模塊112提供服務(wù)接口給業(yè)務(wù)模塊113,在業(yè)務(wù)模塊113檢測(cè)到業(yè)務(wù)失敗時(shí),通過(guò)所述服務(wù)接口向代理工具模塊112上報(bào)業(yè)務(wù)失敗信息,從而通過(guò)代理工具模塊112實(shí)現(xiàn)將業(yè)務(wù)失敗的監(jiān)控信息上報(bào)給監(jiān)控服務(wù)端。
在一種可能的場(chǎng)景中,主機(jī)11可以為物理服務(wù)器集群中的任一物理服務(wù)器,該物理服務(wù)器集群可以為云計(jì)算物理服務(wù)器集群,對(duì)用戶提供云服務(wù);在另一種可能的場(chǎng)景中,主機(jī)11可以為獨(dú)立的物理服務(wù)器。監(jiān)控服務(wù)端12可以運(yùn)行在獨(dú)立的物理服務(wù)器上。
在一種可能的設(shè)計(jì)中,所述業(yè)務(wù)模塊113可以為服務(wù)進(jìn)程,用于處理業(yè)務(wù)。示例性的,該業(yè)務(wù)模塊113可以為與短消息中心通信的NS(notification service)進(jìn)程。
所述業(yè)務(wù)模塊113連接外部業(yè)務(wù)系統(tǒng)14,訪問(wèn)業(yè)務(wù)系統(tǒng)14提供的業(yè)務(wù)。當(dāng)業(yè)務(wù)訪問(wèn)失敗時(shí),所述業(yè)務(wù)模塊113確定業(yè)務(wù)失敗的類別,以及業(yè)務(wù)失敗的故障描述參數(shù)集。
需要說(shuō)明的是,業(yè)務(wù)失敗的類別表示引起業(yè)務(wù)失敗的因素。示例性的,業(yè)務(wù)失敗的類別可以包括鏈路故障、賬號(hào)不合法或業(yè)務(wù)系統(tǒng)故障等等,故障描述參數(shù)集可以包括進(jìn)程標(biāo)識(shí)、業(yè)務(wù)系統(tǒng)地址以及故障指示等等可以準(zhǔn)確描述業(yè)務(wù)失敗原因的參數(shù)的集合。不同的業(yè)務(wù)失敗類別可以對(duì)應(yīng)不同的故障描述參數(shù)集。本領(lǐng)域技術(shù)人員可以理解的是,業(yè)務(wù)失敗的類別和故障描述參數(shù)集可以根據(jù)不同的場(chǎng)景進(jìn)行靈活的定義,本發(fā)明實(shí)施例并不將所述業(yè)務(wù)失敗的類別限定為上述舉例。
進(jìn)一步的,監(jiān)控系統(tǒng)可以使用key-value的格式描述監(jiān)控信息。此時(shí),在監(jiān)控系統(tǒng)開(kāi)始運(yùn)行前,所述業(yè)務(wù)模塊113可以記錄每種業(yè)務(wù)失敗類別關(guān)聯(lián)的一個(gè)key,以及與key一一對(duì)應(yīng)的故障描述參數(shù)集,所述業(yè)務(wù)模塊113將各個(gè)業(yè)務(wù)失敗類別對(duì)應(yīng)的key以及與key一一對(duì)應(yīng)的故障描述參數(shù)集發(fā)送給代理工具模塊112。在一種可能的設(shè)計(jì)中,針對(duì)每種業(yè)務(wù)失敗類別分配一個(gè)key,所述key可以唯一標(biāo)識(shí)該業(yè)務(wù)失敗類別。例如,業(yè)務(wù)失敗類別為連接超時(shí)、鏈路無(wú)響應(yīng)、鏈路端口故障等等,對(duì)應(yīng)的key可以自由設(shè)定,也可以依據(jù)任務(wù)的定義規(guī)則設(shè)定。
所述代理工具模塊112記錄key與模板文件的對(duì)應(yīng)關(guān)系,所述模板文件中包括所述key對(duì)應(yīng)的故障描述參數(shù)集。
在一種可能的設(shè)計(jì)中,所述代理工具模塊112對(duì)業(yè)務(wù)模塊113提供RESTful接口,接口的請(qǐng)求內(nèi)容可以是任意的JSON(JavaScript Object Notation)格式數(shù)據(jù)。所述代理工具模塊112生成模板文件,故障描述參數(shù)集中的各個(gè)故障描述參數(shù)為模板文件中的元數(shù)據(jù)。一個(gè)業(yè)務(wù)失敗類型可以對(duì)應(yīng)一個(gè)模板文件。其中,JSON對(duì)象為一種輕量級(jí)的數(shù)據(jù)交換的語(yǔ)法格式,關(guān)于JSON的具體說(shuō)明請(qǐng)參閱https://www.w3.org/TR/json-ld/。
所述業(yè)務(wù)模塊113通過(guò)網(wǎng)絡(luò)13與業(yè)務(wù)系統(tǒng)14交互,當(dāng)業(yè)務(wù)失敗時(shí),通過(guò)所述服務(wù)接口向所述代理工具模塊112發(fā)送業(yè)務(wù)故障信息,所述業(yè)務(wù)故障信息包括本次業(yè)務(wù)失敗的類別對(duì)應(yīng)的key以及故障描述參數(shù)集中各個(gè)故障描述參數(shù)的取值,其中,各個(gè)故障描述參數(shù)的取值可以準(zhǔn)確表示本次業(yè)務(wù)失敗的信息,包括業(yè)務(wù)名稱以及失敗原因等等,具體的,可以通過(guò)進(jìn)程標(biāo)識(shí)來(lái)表示業(yè)務(wù)名稱。
所述代理工具模塊112通過(guò)所述服務(wù)接口接收所述業(yè)務(wù)模塊113發(fā)送的業(yè)務(wù)故障信息,根據(jù)所述對(duì)應(yīng)關(guān)系查找所述key對(duì)應(yīng)的模板文件,將所述各個(gè)故障描述參數(shù)的取值寫入模板文件,生成監(jiān)控信息。
在一種可能的設(shè)計(jì)中,所述代理工具模塊112讀取業(yè)務(wù)模塊113(服務(wù)進(jìn)程)調(diào)用RESTful接口提供的JSON格式的數(shù)據(jù),各個(gè)故障描述參數(shù)的取值寫入到模板文件中,并生成最終的監(jiān)控信息。具體的,所述代理工具模塊112根據(jù)寫入后的模板文件生成value,所述value為所述各個(gè)故障描述參數(shù)的取值對(duì)應(yīng)的字符串,相應(yīng)地,所述監(jiān)控信息包括本次業(yè)務(wù)失敗的類別對(duì)應(yīng)的key以及所述value。
所述代理工具模塊112通過(guò)所述監(jiān)控客戶端111將生成的監(jiān)控信息上報(bào)給監(jiān)控服務(wù)端12。
所述代理工具模塊112可以通過(guò)同步或異步的方式調(diào)用所述監(jiān)控客戶端111的命令行工具,將所述監(jiān)控信息上報(bào)給所述監(jiān)控服務(wù)端12;或者,所述代理工具模塊112將所述監(jiān)控信息發(fā)送給所述監(jiān)控客戶端111,以使得所述監(jiān)控客戶端111將所述監(jiān)控信息發(fā)送給所述監(jiān)控服務(wù)端12。
為提供監(jiān)控系統(tǒng)的監(jiān)控效率,避免同一故障重復(fù)、高頻率的上報(bào),所述代理工具模塊112還可以具備流控功能,限制同一種監(jiān)控信息重復(fù)發(fā)送的次數(shù)。例如,所述代理工具模塊112執(zhí)行流控策略,所述流控策略包括限定同一key值對(duì)應(yīng)的監(jiān)控信息的上報(bào)頻率不大于預(yù)設(shè)值。本領(lǐng)域技術(shù)人員理解的是,上述預(yù)設(shè)值可以根據(jù)需求由系統(tǒng)管理員靈活設(shè)定,優(yōu)選的,上報(bào)頻率可以根據(jù)業(yè)務(wù)重要性進(jìn)行設(shè)定。
在一種可能的設(shè)計(jì)中,所述代理工具模塊112可以單獨(dú)部署,也可以與監(jiān)控客戶端111合并部署。
所述代理工具模塊112通過(guò)RESTful服務(wù)接口向所述業(yè)務(wù)模塊113提供本地環(huán)回地址(如:127.0.0.1),接收所述業(yè)務(wù)模塊113通過(guò)超文本傳輸協(xié)議(HTTP,HyperText Transfer Protocol)方式傳遞的業(yè)務(wù)故障信息。具體的,關(guān)于具象狀態(tài)傳輸(Representational state transfer,REST)架構(gòu)和RESTful接口的說(shuō)明可以參閱https://zh.wikipedia.org/wiki/REST以及https://en.wikipedia.org/wiki/RESTful。
本申請(qǐng)實(shí)施例提供一種監(jiān)控系統(tǒng)中的被監(jiān)控主機(jī)11,在該主機(jī)11中新增了代理工具模塊112(AgentTool),通過(guò)上述方案,解決了解決業(yè)務(wù)模塊113在業(yè)務(wù)失敗后的故障上報(bào)問(wèn)題。一方面,業(yè)務(wù)模塊113無(wú)需與監(jiān)控系統(tǒng)耦合,業(yè)務(wù)模塊113只需要根據(jù)自身的業(yè)務(wù)異常場(chǎng)景定義出key和該異常場(chǎng)景所需要的JSON格式的所有故障描述參數(shù)即可。另一方面,通過(guò)對(duì)模板文件和JSON對(duì)象的組合變化,可以根據(jù)需要自定義監(jiān)控信息的內(nèi)容和格式,向監(jiān)控服務(wù)端上報(bào)自定義的監(jiān)控信息,方便系統(tǒng)管理員查看詳細(xì)的業(yè)務(wù)異常情況。再一方面,由于業(yè)務(wù)模塊113與代理工具模塊112之間采用無(wú)狀態(tài)的HTTP通信,即使監(jiān)控系統(tǒng)的進(jìn)程發(fā)生故障,也不會(huì)影響到業(yè)務(wù)模塊,從而不會(huì)對(duì)用戶的業(yè)務(wù)產(chǎn)生影響,保障了業(yè)務(wù)的安全。
在本發(fā)明實(shí)施例中,所述監(jiān)控系統(tǒng)可以為Zabbix系統(tǒng),前述的命令行工具可以為Zabbix Sender,可以傳遞Key/Value參數(shù)。
基于圖2所示的監(jiān)控系統(tǒng)的架構(gòu),下面將對(duì)本申請(qǐng)實(shí)施例提供的監(jiān)控方法進(jìn)行說(shuō)明。
參閱圖3所示,為本申請(qǐng)實(shí)施例提供的一種監(jiān)控方法。
步驟301:業(yè)務(wù)模塊通過(guò)網(wǎng)絡(luò)接入業(yè)務(wù)系統(tǒng),根據(jù)業(yè)務(wù)可能存在的異常情況,確定業(yè)務(wù)失敗類別對(duì)應(yīng)的key以及業(yè)務(wù)失敗的故障描述參數(shù)集。
業(yè)務(wù)失敗的類別表示引起業(yè)務(wù)失敗的因素。示例性的,業(yè)務(wù)失敗的類別可以包括鏈路故障、賬號(hào)不合法或業(yè)務(wù)系統(tǒng)故障等等,故障描述參數(shù)集可以包括進(jìn)程標(biāo)識(shí)、業(yè)務(wù)系統(tǒng)地址以及故障指示等等可以準(zhǔn)確描述業(yè)務(wù)失敗原因的參數(shù)的集合。不同的業(yè)務(wù)失敗類別可以對(duì)應(yīng)不同的故障描述參數(shù)集。故障描述參數(shù)集中的各個(gè)故障描述參數(shù)可以采用JSON格式。
示例如下:
Key:smn-001-001
JSON體:故障描述參數(shù)集
{
"Subject":"Channel Checking",
"ServiceName":"SMN-NS"
"ServiceAddress":"127.0.0.1"
"Error":"Error"
}
步驟302:業(yè)務(wù)模塊將將各個(gè)業(yè)務(wù)失敗類別對(duì)應(yīng)的key以及與key一一對(duì)應(yīng)的故障描述參數(shù)集發(fā)送給代理工具模塊。
在一種可能的設(shè)計(jì)中,所述代理工具模塊對(duì)業(yè)務(wù)模塊提供RESTful接口。
步驟303:代理工具模塊接收業(yè)務(wù)模塊發(fā)送的key以及與key一一對(duì)應(yīng)的故障描述參數(shù)集,記錄key與模板文件的對(duì)應(yīng)關(guān)系,所述模板文件中包括所述key對(duì)應(yīng)的故障描述參數(shù)集。
所述代理工具模塊生成模板文件,故障描述參數(shù)集中的各個(gè)故障描述參數(shù)為模板文件中的動(dòng)態(tài)變量,用于表示元數(shù)據(jù)。一個(gè)業(yè)務(wù)失敗類型可以對(duì)應(yīng)一個(gè)模板文件。
模板文件示例:
步驟304:系統(tǒng)管理員通過(guò)監(jiān)控系統(tǒng)的圖形用戶界面登錄監(jiān)控服務(wù)端,創(chuàng)建key以及監(jiān)控指標(biāo)。
在一種可能的設(shè)計(jì)中,代理工具模塊可以將key以及故障描述參數(shù)集發(fā)送給監(jiān)控服務(wù)端,監(jiān)控服務(wù)端創(chuàng)建key以及監(jiān)控指標(biāo),所述監(jiān)控指標(biāo)可以為文本格式,用于呈現(xiàn)接收到的監(jiān)控信息。
步驟305:業(yè)務(wù)模塊通過(guò)網(wǎng)絡(luò)訪問(wèn)業(yè)務(wù)系統(tǒng),當(dāng)發(fā)現(xiàn)業(yè)務(wù)失敗時(shí),調(diào)用代理工具模塊提供的服務(wù)接口,向代理工具模塊發(fā)送業(yè)務(wù)故障信息,所述業(yè)務(wù)故障信息包括本次業(yè)務(wù)失敗的類別對(duì)應(yīng)的key以及故障描述參數(shù)集中各個(gè)故障描述參數(shù)的取值,其中,各個(gè)故障描述參數(shù)的取值可以準(zhǔn)確表示本次業(yè)務(wù)失敗的信息,包括業(yè)務(wù)名稱以及失敗原因等等。
步驟306:代理工具模塊通過(guò)所述服務(wù)接口接收所述業(yè)務(wù)模塊發(fā)送的業(yè)務(wù)故障信息,根據(jù)所述對(duì)應(yīng)關(guān)系查找所述key對(duì)應(yīng)的模板文件,將所述各個(gè)故障描述參數(shù)的取值寫入模板文件,生成監(jiān)控信息。
步驟307:代理工具模塊將監(jiān)控信息發(fā)送給監(jiān)控服務(wù)端。
具體的,代理工具模塊讀取故障描述參數(shù)集中JSON格式的數(shù)據(jù),將各個(gè)故障描述參數(shù)的取值寫入到模板文件中生成value,所述value為所述各個(gè)故障描述參數(shù)的取值對(duì)應(yīng)的字符串。代理工具模塊將業(yè)務(wù)失敗類型對(duì)應(yīng)的key以及生成的所述value作為命令行工具的入?yún)?,調(diào)用監(jiān)控客戶端的命令行工具將監(jiān)控信息(即所述key以及生成的所述value)發(fā)送給監(jiān)控服務(wù)端。
具體的,代理工具模塊可以通過(guò)同步或異步的方式調(diào)用所述監(jiān)控客戶端的命令行工具,將所述監(jiān)控信息上報(bào)給所述監(jiān)控服務(wù)端;或者,所述代理工具模塊將所述監(jiān)控信息發(fā)送給所述監(jiān)控客戶端,以使得所述監(jiān)控客戶端將所述監(jiān)控信息發(fā)送給所述監(jiān)控服務(wù)端。
所述代理工具模塊與所述監(jiān)控服務(wù)端之間可以采用基于JSON的遠(yuǎn)程調(diào)用協(xié)議(JSON-remote protocol call,JSON-RPC)。
監(jiān)控信息示例如下:
key:smn-001-001
value:
Senior Alert:Channel Checking
Components SMN-NS 127.0.0.1
Error:Can not connect channel
步驟308:監(jiān)控服務(wù)端接收監(jiān)控信息,確定業(yè)務(wù)失敗時(shí),觸發(fā)告警,通知系統(tǒng)管理員。
本發(fā)明實(shí)施例通過(guò)在被監(jiān)控主機(jī)中新增代理工具模塊,由代理工具模塊向業(yè)務(wù)模塊提供服務(wù)接口,定義了業(yè)務(wù)模塊113在業(yè)務(wù)失敗后的故障上報(bào)流程,實(shí)現(xiàn)了監(jiān)控系統(tǒng)對(duì)非被監(jiān)控主機(jī)故障引起的業(yè)務(wù)失敗的監(jiān)控。一方面,業(yè)務(wù)模塊無(wú)需與監(jiān)控系統(tǒng)耦合,業(yè)務(wù)模塊只需要根據(jù)自身的業(yè)務(wù)異常場(chǎng)景定義出key和該異常場(chǎng)景所需要的JSON格式的所有故障描述參數(shù)即可。另一方面,通過(guò)對(duì)模板文件和JSON對(duì)象的組合變化,可以根據(jù)需要自定義監(jiān)控信息的內(nèi)容和格式,向監(jiān)控服務(wù)端上報(bào)自定義的監(jiān)控信息,方便系統(tǒng)管理員查看詳細(xì)的業(yè)務(wù)異常情況。再一方面,由于業(yè)務(wù)模塊與代理工具模塊之間采用無(wú)狀態(tài)的HTTP通信,即使監(jiān)控系統(tǒng)的進(jìn)程發(fā)生故障,也不會(huì)影響到業(yè)務(wù)模塊,從而不會(huì)對(duì)用戶的業(yè)務(wù)產(chǎn)生影響,保障了業(yè)務(wù)的安全。
與前述監(jiān)控系統(tǒng)和監(jiān)控方法相對(duì)應(yīng),本發(fā)明實(shí)施例提供了一種被監(jiān)控主機(jī),包括前述的監(jiān)控客戶端、代理工具模塊以及業(yè)務(wù)模塊。被監(jiān)控主機(jī)中的各模塊執(zhí)行前述監(jiān)控系統(tǒng)以及監(jiān)控方法中的功能,本發(fā)明實(shí)施例再次不再贅述。
與前述監(jiān)控系統(tǒng)和監(jiān)控方法相對(duì)應(yīng),本發(fā)明實(shí)施例提供了另一種被監(jiān)控主機(jī),包括前述的監(jiān)控客戶端以及代理工具模塊。被監(jiān)控主機(jī)中的各模塊執(zhí)行前述監(jiān)控系統(tǒng)以及監(jiān)控方法中的功能,本發(fā)明實(shí)施例再次不再贅述。此時(shí)業(yè)務(wù)模塊可以位于與被監(jiān)控主機(jī)存在網(wǎng)絡(luò)連接關(guān)系的另一主機(jī)上。
基于同一發(fā)明構(gòu)思,參閱圖4所示,本申請(qǐng)實(shí)施例還提供了另一種監(jiān)控系統(tǒng)中的被監(jiān)控主機(jī)400,包括收發(fā)器401、處理器402、存儲(chǔ)器403,收發(fā)器401、存儲(chǔ)器403均與處理器402連接,需要說(shuō)明的是圖4所示的各部分之間的連接方式僅為一種可能的示例,也可以是,收發(fā)器401與存儲(chǔ)器403均與處理器402連接,且收發(fā)器401與存儲(chǔ)器403之間沒(méi)有連接,或者,也可以是其他可能的連接方式。
其中,存儲(chǔ)器403中存儲(chǔ)一組程序,處理器402用于調(diào)用存儲(chǔ)器403中存儲(chǔ)的程序,以執(zhí)行前述圖2以及圖3所示的監(jiān)控系統(tǒng)和監(jiān)控方法中被監(jiān)控主機(jī)的各模塊的功能。
在圖4中,處理器402可以是中央處理器(英文:central processing unit,縮寫:CPU),網(wǎng)絡(luò)處理器(英文:network processor,縮寫:NP)或者CPU和NP的組合。
處理器402還可以進(jìn)一步包括硬件芯片。上述硬件芯片可以是專用集成電路(英文:application-specific integrated circuit,縮寫:ASIC),可編程邏輯器件(英文:programmable logic device,縮寫:PLD)或其組合。上述PLD可以是復(fù)雜可編程邏輯器件(英文:complex programmable logic device,縮寫:CPLD),現(xiàn)場(chǎng)可編程邏輯門陣列(英文:field-programmable gate array,縮寫:FPGA),通用陣列邏輯(英文:generic array logic,縮寫:GAL)或其任意組合。
存儲(chǔ)器401可以包括易失性存儲(chǔ)器(英文:volatile memory),例如隨機(jī)存取存儲(chǔ)器(英文:random-access memory,縮寫:RAM);存儲(chǔ)器401也可以包括非易失性存儲(chǔ)器(英文:non-volatile memory),例如快閃存儲(chǔ)器(英文:flash memory),硬盤(英文:hard disk drive,縮寫:HDD)或固態(tài)硬盤(英文:solid-state drive,縮寫:SSD);存儲(chǔ)器401還可以包括上述種類的存儲(chǔ)器的組合。
監(jiān)控服務(wù)端所在的物理服務(wù)器也可以采用如圖4所示的硬件結(jié)構(gòu)。本發(fā)明實(shí)施例不再贅述。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用硬件實(shí)施例、軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
這些計(jì)算機(jī)程序代碼可以存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本申請(qǐng)實(shí)施例進(jìn)行各種改動(dòng)和變型而不脫離本申請(qǐng)實(shí)施例的精神和范圍。這樣,倘若本申請(qǐng)實(shí)施例的這些修改和變型屬于本申請(qǐng)權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請(qǐng)也意圖包含這些改動(dòng)和變型在內(nèi)。