基于.NET技術的監控應用分析

作者: 野男人  來源: 博客園  發布時間: 2010-08-22 21:13  閱讀: 987 次  推薦: 0   原文鏈接   [收藏]  
摘要:網站后臺的支持系統是相當多的,各系統之間盤結交錯,會出現很多應用方面的問題,下面該文章將分析在windows平臺如何開發此類應用。

      我們都知道,作為一個百、千萬及以上訪問量的網站,網站后臺的支持系統是相當多的,各系統之間盤結交錯,系統之間頻繁的互相通信、交換數據。如果某個結點稍一出差錯,可能就導致某個業務出現停滯現象,尤其對于一些關鍵的業務系統來說,需要做到高可用性,需要每天不間斷的處于運行狀態。除了業務系統具有良好的容錯、備份機制以外,還有必要對關鍵系統的運行狀態、輸出日志等進行監控。一旦出現異常現象,及時的反饋給技術人員,使得我們可以對部署在各地的服務器進行一個有效地處置。下面將分析一下在windows平臺如何開發此類應用。

先來大致描述一下網站方面的東西,我們這個網站是用asp.net開發的,服務器操作系統是windows 2003,專門提供視頻內容分享方面的服務。前臺基本上是以shtml頁面展現內容,后臺有負責生成頁面內容的系統,負責視頻上傳,轉換,分發,存儲及播放的系統,負責數據統計方面的系統,站內搜索的系統等。后臺的系統是以系統服務的形式運行,各數據中心的系統通過IBM MQ進行通信。需要監控的地方主要可以分為硬件,軟件及網絡方面,例如:存儲視頻的磁盤空間小于某個閥值,MQ的核心隊列堆積了大量數據包,某個系統服務輸出了錯誤的日志信息,某臺服務器出現故障關機,網絡中斷等。

  一、系統架構分析

該系統一種典型的網絡通訊應用,所以可以在系統的每個層次之間通過業務協議作為接口,協議根據業務的內容可以不斷的擴充,這樣層與層之間的耦合性低,功能相對獨立。在數據采集和數據通訊層都比較完善的時候,數據展現層的功能擴展對下面兩層的影響可以降低到最小。數據通訊的模式可以分為主動和被動的方式發送數據到監控平臺。例如有一些數據需要被監控計算機實時發送,而另一些數據是由操作員向某臺計算機發出查詢命令,然后被監控計算機執行應答。可以從功能上可以自下而上把整個系統的架構分為數據采集,數據通訊和數據展現共三個層次。


數據采集層是服務器數據的源。主要包括對服務器運行狀態、IIS可用性與性能、MQ服務器與消息隊列、ORACLE數據庫服務、自行開發的服務和服務器資源的使用情況等等軟硬件數據進行抓取。從技術上分析可以把采集的數據分為兩大類:一是被監控服務器主動發送出來的數據,這里又包含計算機的實時運行狀態和一些定制的事件。二是監控中心向被監控服務器發送的各項數據指令。

數據通訊是傳輸數據的承載體。主要是把采集到的數據準確,安全的輸送到監控中心。這里需要考慮通訊的性能,安全,以及現有的網絡結構。然后綜合這些情況選擇合適的網絡通訊模型。與采集數據的接口是業務協議。這個層面負責把協議進行解析,關鍵數據進行加密,然后傳輸數據。

數據展現層是對采集的數據進行加工、表現的地方,它是作為監控人員與機器之間的一個控制接口,所有的業務功能都最終體現到這個層面。例如:各服務器的運行信息實時顯示,遠程操作服務、權限管理、輸出報表、數據的存放以及預警功能。

數據上行流程:

 


                 二、數據采集技術分析

因為服務器的操作系統是Windows Server,數據的采集就可以用WMI技術。它可以采集到幾乎所有的軟硬件數據信息。MicrosoftWMI封裝成COM接口的形式提供給開發人員使用。而在 .NET 框架中,提供了更為簡便的使用方法來查詢系統各種的信息、訂閱事件。


 

  System.Managerment, System.Management.Instrumentation命名空間就包含了所有對WMI的操作功能。通過WMISQL語句就可以查詢和訂閱計算機的運行狀態信息。例如:

查詢某臺機器的類型創建事件,就可以用類似SQL語法的程序代碼來完成。

  

  三、數據通信技術分析

傳輸的數據內容是由業務功能決定的,但其設計方法可以統一制定一個規范。考慮到網絡通訊程序的特點,可以用消息的形式,發送方把數據進行封裝,然后轉換成字節流,由網絡通訊層把數據發送到目的機器。目的機器接收到某段字節流后,解析之,然后轉換成對應的消息。

每一個消息都包含消息頭和消息體。由命令標識、序列號、消息長度,再加上特定的業務信息就構成了一個完整的消息。協議解析時就可以根據消息標識,選擇相應的消息處理對象,生成對應的消息實體。數據展現層再負責把消息實體持久化到數據庫中。

       針對不同的消息,會有應答消息,即消息一般以成對的方式出現。比如監控方向被監控方查詢某個設備狀態,它接收到命令后,會把查詢的結果以相同的序列號為關聯,發出應答消息。這樣監控方就可以準確無誤的收到信息。

6.1.1消息頭格式

字段

長度(字節)

類型

說明

Message Length

4

Integer

消息的總長度(字節)

Command ID

4

Integer

命令ID

Sequence Number

12

Integer

序列號

6.1.2 消息體格式

字段

長度(字節)

類型

說明

MessageLength

4

Integer

消息的長度

MessageContent

Message Length

String

消息的內容

Reserve

8

String

保留,擴展用

6.1.3 應答格式

字段

長度(字節)

類型

說明

Result

1

Integer

命令是否成功執行。

0:執行成功

其它:錯誤碼

MessageLength

4

Integer

消息的長度

MessageContent

Message Length

String

消息的內容

Reserve

8

String

保留,擴展用

6.1.4 消息ID定義

消息ID名稱

消息ID取值

BIND

0x1

BIND_RESP

0x80000001

UNBIND

0x2

UNBIND_RESP

0x80000002

6.1.5 錯誤碼定義

錯誤碼

描述

0

無錯誤

1

非法用戶名

2

3

  四、結束

windows平臺下可以通過WMI技術采集服務器的狀態,然后把狀態消息發送到監控中心,對接收到的數據進行加工呈現,同時以郵件,短信發送警報信息。最終實現對服務器軟硬件狀態的有效監控。

0
0
 
標簽:.NET 監控
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()