翻譯:
Java Dynamic Management Kit - Technical Overview
技術概述1.介紹
2.裝配資源為MBeans
3.Java動態管理架構
4.在代理中暴露MBeans
5.遠程訪問代理
6.SNMP工具包
介紹Java動態管理工具包(Java DMK)是一個Java應用程序接口和一套為設計和實現新一代的管理程序的開發工具。作為JMX和JMX API的實現,DMK提供了通過基于Java技術的應用程序管理Java對象的框架。
Java動態管理工具包(Java DMK)為設計分布的管理系統提供了一套完整的架構。一個基于Java技術的解決方案可以嵌入管理系統到代理中,還提供一個抽象的通信層,并可以動態的升級個擴展。管理程序還可以從其他的Java API中獲得好處,比如提供用戶接口的Swing組件和提供數據庫訪問的JDBC API。
另外,Java動態管理工具包為被廣泛的應用于網絡和設備管理的架構--簡單網絡管理協議(SNMP)--提供了一整套工具。這樣可以開發Java動態管理代理和管理程序,并使其能與現有系統協同工作。另外,一個實現了SNMPv3的實現還為管理系統提供了一套安全機制。
裝配資源為MBeans資源可以是任何希望通過網絡使其可用并可被管理的實體,不論是物理上的,還是虛擬的。物理的資源可以是一堆設備例如網絡上打印機等設備;虛擬資源包括某一特定主機上的應用程序等。資源通過其自身的管理接口暴露自己。管理接口通常包括管理程序可以訪問的一系列的屬性、方法和通知。
裝配一個資源就是為其開發一個代表這個資源管理接口的Java對象。JMX規范中定義了如何按照某一設計模式來裝配資源。這些模式跟JavaBean組件模型類似:屬性有其對應的getter和setter,操作由Java方法來表示,以及依賴于Java事件模型的通知。
因此,MBean就是遵從JMX規范中設計模式的資源的工具。如果資源本身是Java應用程序,則他可以作為自己的MBean,否則MBean就是本地資源的一個Java wrapper或者是設備的一個Java表示。MBean的開發者可以決定那些屬性和操作對于MBean來說是有效的。
設備的生產商和應用程序的銷售商可以提供插入他們客戶現有產品的MBean。管理解決方案集成商可以針對之前沒有裝配的資源開發MBean。由于 MBean是遵從JMX規范的,因此他們可以被應用于任何一個遵從JMX的代理中。這使其為可移持的,并且不依賴于任何私有的管理架構。
Java動態管理架構下圖展示了Java動態管理解決方案的架構。后面將對其中關鍵的組件進行介紹。
在這個例子中,兩個資源的MBean被注冊到代理的MBean Server中。代理服務監視器作為另一個MBean注冊。代理是包含遠程方法調用(RMI)或JMX消息協議(JMXMP)的一個連接服務器,還包含一個 SNMP或HTML的協議適配器。代理可以擁有任意數量的通信組件,每個組件有希望通過其通信的協議和端口。
遠程管理者是運行在遠程的Java應用程序。它包含一個指定協議的連接客戶端和表示兩個被管資源的代理MBean。當其與代理服務器建立連接以后,其他的組件可以將應用程序的管理請求發送給代理。例如,可以通過代理對象調用第一個資源的操作,也可以配置監視服務來輪訓第二個資源。
HTML適配器提供一個簡單的用戶接口,使用戶可以通過Web瀏覽器來查看代理。每一個MBean的信息用一個獨立的HTML頁面來顯示,通過這個 HTML頁面用戶可以修改MBean的屬性以及調用MBean的方法。另外還有一個管理界面用來從MBean Server添加和刪除MBean。
在代理中暴露MBeansJava動態管理代理遵從C/S模型,代理響應所有希望訪問其包含的資源的客戶端應用程序的管理請求。代理集中所有的請求,然后派遣到對應的MBean并返回響應。代理處理所有的通信問題,包括接收和發送數據,MBean完全不需要關心。
代理的中心組件是MBean Server,它是一個MBean實例的注冊器,并暴露一個通用的接口,讓客戶端可以發送請求到指定的MBean。為了知道什么資源通過MBean來暴露,客戶端可以發送請求來得到MBean管理接口的描述信息。使用這些信息客戶端可以制定一個給MBean Server的請求來獲取或設置MBean的屬性,調用MBean的方法或注冊通知。
MBean只能通過發送請求到MBean Server來進行訪問。管理程序只能通過代理中MBean的對象名(Object Name)標識符來引用MBean,而不能直接通過MBean的引用來進行訪問。這在保留了C/S模型,同時又是實現查詢和安全特性的重要因素。
MBean Server還提供允許代理服務與MBean進行交互的框架。服務本身也是被做為MBean來實現的,其與資源MBean的交互通過執行定義的Task來實現。例如:管理程序可以監視給定的MBean的屬性,它為監視服務MBean創建實例,配置域值,并且注冊要接收的警報。管理程序不再需要輪訓代理,無論何時監視的屬性超過指定的域值,都會被通知。
服務庫包含需要實現高級管理策略,如計劃事件、監視屬性、建立和執行關聯、發現其他代理、創建子代理分層結構和下載MBean對象等這類策略的邏輯。也可以開發適合自己管理需要的服務MBean,例如記錄日志和持久化服務。
遠程訪問代理Java DMK能夠使遠程應用程序很容易訪問代理和代理中的資源。已經提供了代理和客戶端程序處理通信的所需的所有組件。通過MBean Server暴露的API對于遠程管理程序同樣是有效的。這種對稱性有效的使通信層透明化。
管理程序通過MBean的標識符來執行獲取或設置屬性,以及調用操作的請求。代理對象通過表示遠程的MBean和處理通信,提供了更深層次的抽象。管理程序可以將所有資源看成本地的資源來進行設計和開發。通信組件還處理對通知的轉發,以致于遠程的管理程序可以注冊來接收從廣播的MBean中發出的通知。
用Java語言開發的管理程序使用連接器來做到通信層的透明。連接器使用同樣的交互接口提供了對JMX Remote API中定義的RMI,RMI/IIOP和JMXMP協議的支持。
而適配器通過其他協議為不是基于Java技術開發的管理程序提供了代理的視圖。例如HTML適配器將MBean表示為網頁,這樣可以通過任何一個Web瀏覽器來查看。而SNMP適配器能暴露表示SNMP MIB和響應SNMP協議請求的特殊的MBean。使用SNMP適配器可以不需要將MIB注冊到MBean Server中。
所有的連接器和適配器都是為MBean而實現的。管理程序因此可以根據網絡條件和可用的協議,動態的創建、配置和移除通信資源。每種協議可以有自己內建的安全機制,如SSL,SASL和SNMPv3。對于每種協議的安全方面應該由連接器和適配器層來處理,使其對于MBean開發人員是完全透明的。
通信MBean的適應性,以及對多種協議可用的連接器使得可以將管理方案部署在異構的網絡環境中。可以使用適配器將基于JMX架構的代理和現有的管理系統連接起來。也可以通過創建自己的連接器和適配器來適應私有的協議或者以后的管理需要。
SNMP工具包Java DMK為將SNMP管理集成到基于JMX架構的方案中提供了一個工具包。其中包括:
使用SNMP協議適配器開發一個SNMP代理
通過mibgen編譯器生成代表SNMP MIB的MBean
如果有需要,可以使用SNMP管理API開發一個SNMP管理程序
SNMP代理是響應對定義在MIB中的變量格式化為get和set方法的請求的程序。這些行為可以被完全的影射到提供那些實現MIB的MBean的Java動態管理代理的MBean Server和MBean資源上。
表示MIB的MBean是通過為需要實現MIB功能的程序員而準備的工具mibgen自動生成的。這個工具還可以生成表示SNMP表和組的元數據對象。下圖其他的管理程序如何通過MBean的實現訪問MIB變量。
Java DMK提供了兩個SNMP協議適配器,一個支持SNMPv1和v2,另一個支持SNMPv3。添加到Java DMK5.0中支持SNMPv3 USM MIB的適配器,提供基于用戶的安全驗證,和有作用域的MIB的所有特性,可以使用一個Context名字注冊到適配器中。通過對SNMP適配器和定時器的多線程支持,Java DMK 5.0中SNMP的性能得到改良。
SNMP協議適配器響應SNMP請求,并將請求轉換成指定MIB MBean上的管理操作。SNMP適配器跟JMX代理發送通知一樣,同樣還發送trap信息,來響應SNMP事件和錯誤信息。
SNMP協議適配器可以管理不限制數量的不同的MIB。這些MIB可以通過注冊和取消對應的MBean來動態的加載和卸載。適配器嘗試通過訪問所有的加載了的MIB來響應SNMP請求。MIB是通過代理程序來動態加載的,而SNMP協議本身是不支持加載和卸載MIB的請求的。
SNMP協議適配器還會從SNMP代理發送通知請求到SNMP管理程序。SNMP管理程序返回響應到SNMP代理。
SNMP管理API簡化了開發Java的SNMP代理程序。其中的類通過Java對象來表示SNMP管理程序中的概念,例如會話(session)、參數(Parameter)和等級(Peer)。使用這個API可以開發一個能發送請求到SNMP代理的資源。例如,可以使用SNMP管理API創建一個SNMP資源。這樣需要定義一個對應資源的MIB,所有變量影射為MBean的屬性的管理接口。為了響應對屬性的getter和setter,MBean必須構造和發送SNMP請求到表示該資源SNMP代理。
SNMP管理API提供SNMP v1,v2和v3協議的請求,包括SNMP管理程序之間的通知請求。管理API可以用來訪問任何適合的SNMP代理,包括使用Java DMK開發的。
Java DMK5.0中支持的SNMP可以構建一個主代理,主代理將幾個子代理組合在一起,并通過單點訪問來導出他們的信息。主代理注冊子代理來處理MIB或MIB的一部分,還轉換管理程序使用的SNMP版本的請求到子代理支持的請求。
posted on 2005-04-28 01:48
非飛 閱讀(1190)
評論(0) 編輯 收藏