WebSphere MQ File Transfer Edition 中的資源監控功能

CloudSpace發表於2010-01-26

轉自;http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0910_bonney/0910_bonney.html

WebSphere MQ File Transfer Edition(以下簡稱 WebSphere MQ FTE)在多個 IT 系統之間提供無需程式設計的可靠的、可審計的和可管理的檔案傳輸,並且對檔案大小沒有限制。本文將向您描述幾個場景,以展示如何使用 WebSphere MQ FTE 資源監控功能。

資源監控概述

資源監控功能是 IBM® WebSphere® MQ FTE V7.1 新新增的功能,該功能提供一種更靈活的任務啟動方法。這個新的 Ant 功能支援啟動一個檔案傳輸任務和其他多種任務。本文主要關注檔案傳輸功能,下面的場景將描述檔案移動過程,這種檔案移動是資源監控器的觸發器條件得到滿足後的結果。

資源監控最常見的形式是監控一個資源並在觸發器條件滿足時啟動預定義的任務。在 WebSphere MQ FTE V7.0.1 中,受監控的資源的範圍是一個目錄或多個子目錄。觸發條件是受監控的目錄中發生檔案到達、更新或移除事件。

本文描述兩個場景,這兩個場景中的所有示例都基於 WebSphere MQ FTE 提供的命令列命令,而不是 MQ Explorer WMQFTE Plug-in。但是,本文介紹的概念也適用於 MQ Explorer WMQFTE Plug-in。執行以下任務之前,需要正確配置 MQ 網路並定義和啟動特定代理。無論代理是否駐留在相同的機器或使用相同的佇列管理器,只要它們能夠在 MQ 網路上互相聯絡就行。這些場景在單個 Windows 機器上建立,但相同的概念也適用於 WebSphere MQ FTE 支援的任何平臺。這兩個場景是:

簡單資源監控

這個場景涉及一個源代理和一個目標代理,代理佇列管理器的名稱和代理名稱相同。您將建立一個在源代理上定義的資源監控器(因為在 WebSphere MQ FTE V7.0.1 中,資源監控器必須在源代理上定義,原因是要監控的目錄對源代理必須是可訪問的)。資源監控器將檢查受監控目錄 C:\monitored 中的檔案 trigger.go 是否存在或被更新。如果觸發條件被滿足,定義的任務是通過目標代理將檔案 C:\source\sourcefile.txt 從源代理傳輸到 C:\destination\destinationfile.txt。

建立任務檔案

首先,建立一個名為 task.xml 的檔案,該檔案定義當監控器的觸發條件得到滿足時將啟動的傳輸任務。在 fteCreateTransfer 命令中使用 -gt 選項,這不是為了啟動一個傳輸任務,而是為了編寫一個 XML 檔案,該 XML 檔案將定義某個檔案的傳輸,該檔案被指定為 -gt 選項的一個引數。這個 XML 檔案可以被手動放置到源代理的命令佇列上,也可以用於 fteCreateMonitor 命令(本例採用這種方法)。


清單 1. 建立一個簡單的資源監控器任務檔案

				
C:\WMQFTE\bin> fteCreateTransfer -sa SOURCEAGENT –sm SOURCEAGENT -da DESTINATIONAGENT
–dm DESTINATIONAGENT -de overwrite -t text -df
C:\destination\destinationfile.txt -gt C:\monitored\task.xml 
C:\source\sourcefile.txt 5655-U80, 5724-R10 Copyright IBM Corp.  2008, 2009.  
ALL RIGHTS RESERVED BFGCL0204I: Transfer request has been output to 
C:\monitored\task.xml

這個任務 XML 檔案可以在使用之前進行編輯,下一個場景將介紹這方面的內容。但是,對於這個簡單的傳輸任務,生成的任務檔案已經足夠滿足需求。

建立資源監控器

定義任務後,現在可以建立資源監控器了。在這個示例中,在源代理 SOURCEAGENT 上定義新監控器 SimpleResourceMonitor,用於監控目錄 C:\monitored 中的檔案 trigger1.go 是否存在或被更新。


清單 2. 建立一個簡單的資源監控器

				
C:\WMQFTE\bin> fteCreateMonitor -ma SOURCEAGENT -mn SimpleResourceMonitor -md 
C:\monitored -mt C:\monitored\task.xml -tr match,trigger.go -jn SimpleMonitorJob 
5655-U80, 5724-R10 Copyright IBM Corp.
2008, 2009.  ALL RIGHTS RESERVED BFGCL0188I: The request to create a monitor has
been submitted with a request id of 414d5120434f4d4d414e442020202020f3b48b4a20001f03.
BFGCL0251I: The request has successfully completed.

執行帶有詳細輸出的 fteListMonitors 命令將顯示已定義的監控器:


清單 3. 顯示一個簡單的資源監控器

				
C:\WMQFTE\bin>fteListMonitors -v
5655-U80, 5724-R10 Copyright IBM Corp.  2008, 2009.  ALL RIGHTS RESERVED 
Monitor Information:
    Name:             SIMPLERESOURCEMONITOR
    Agent:            SOURCEAGENT
    Status:           Started
    Root directory:   C:\monitored
    Condition:        Match
    Pattern:          trigger.go

測試資源監控器

現在您有兩個代理和一個資源監控器,它們將主動檢查目錄 C:\monitored 中是否存在檔案 trigger.go。此時,確保 C:\source\sourcefile.txt 存在於源代理的檔案系統中,C:\destination\ 存在於目標代理的檔案系統中。現在,在 C:\monitored 中建立檔案 trigger.go 將導致監控器在 1 分鐘的預設檢查間隔內啟動預定義的傳輸任務。可以通過兩種方法檢查傳輸結果:一是檢查檔案 C:\destination\destinationfile.txt,該檔案現在應該存在於目標代理的檔案系統中;二是檢查 WebSphere MQ Explorer GUI WMQFTE Plug-in,該外掛應該顯示檔案在兩個代理之間成功傳輸。如果檔案 trigger.go 被更新,進而導致修改日期更改,則監控器將在 1 分鐘檢查間隔內再次觸發並再次傳輸檔案 C:\destination\destinationfile.txt。由於原始任務擁有 -de 覆蓋選項,即使目標檔案自上次傳輸後已經存在,新傳輸任務仍將成功執行。

使用變數替代的資源監控

這個場景涉及 4 個代理:一個資源代理和 3 個目標代理。這 3 個目標代理分別命名為 AccountsAgent、FinanceAgent 和 HRAgent。與第一個場景一樣,代理佇列管理器的名稱與代理名稱一樣,您建立了一個在源代理上定義的資源監控器。這個資源監控器檢查受監控目錄 C:\monitored 或其任意子目錄中是否存在副檔名為 .txt 的檔案或這些檔案是否被更新,子目錄最大遞迴檢查級別為一級。當觸發條件滿足時,預定義任務將執行,將觸發器檔案從源代理傳輸到由觸發器檔案所在的子目錄名定義的目標代理。另外,預定義任務將基於原始檔名重新命名目標檔案,將副檔名 .txt 更改為 .,其中 是檔案傳輸到的目標代理的名稱。這個場景展示如何使用資源監控器提供的變數替代功能將一個靜態任務檔案轉換為多個動態檔案傳輸任務。

建立任務檔案

與基本場景相似,首先需要一個任務檔案。由於任務檔案需要進行手動編輯,因此您可以使用上一個場景生成的任務檔案(參見 清單 1. 建立一個簡單的資源監控器任務檔案)。這個初始任務檔案如下所示:


清單 4. 基本任務檔案

				
 
 

  
    
        localhost 
        Laurence
     
    
    
    
      
        
          C:\source\sourcefile.txt
        <source> 
        
          C:\destination\destinationfile.txt
        
      
    
  


根據場景描述,以下內容在這個場景中被視為是動態的。


將被變數替代的部分

描述 舊的靜態值 新的動態值
原始檔名 C:\source\sourcefile.txt ${FilePath}
目標代理 DESTINATIONAGENT ${FilePath{token=-2}{separator=/}}
目標 Qmgr DESTINATIONAGENT ${FilePath{token=-2}{separator=/}}
目標檔名 C:\destination\destinationfile.txt C:/destination/${FileName{token=1}{separator=.}}.${FilePath{token=-2}{separator=/}}

${FilePath} 將在任務執行時被它當前擁有的完整路徑值(包括觸發器檔名)所替代並被資源監控器讀取。只需使用這個變數,您就可以執行一些操作以實現一些有趣的傳輸任務。要了解其他幾個可以以類似方法使用的變數的相關資訊,請參見 WebSphere MQ FTE V7.0.1 資訊中心。對於對目錄分隔符的所有引用,我們使用 Unix 樣式的目錄分隔符 “/”。由於這種分隔符適用於 Windows 和 Unix,它使任務檔案看起來似乎是平臺通用的。

資源監控器使用與 ${FilePath} 相似的值讀取 ${FilePath{token=-2}{separator=/}}。但是,在這個示例中,您使用分隔符 / 分隔這個值,然後從右至左提取第二個標記值並用該值替代。在這個場景中,這將是 C:\monitored\ 目錄下的子目錄名。例如,在這個變數替代中,觸發器檔案 C:\monitored\FinanceAgent\reports.txt 將變為 FinanceAgent。關於可用的操作方法的更多資訊,請參見 WebSphere MQ FTE V7.0.1 資訊中心

C:\destination\${FileName{token=1}{separator=.}}.${FilePath{token=-2}{separator=/}} 在任務執行時被資源監控器讀取並替代。在這個示例中,您使用 ${FilePath} 和 ${FileName} 替代變數。${FileName} 計算忽略路徑的觸發器檔名,${FileName{token=1}{separator=.}} 計算由 “.” 分隔的第一個標記值,有效地保留檔名並移除副檔名。由於標記被指定為正值而不是負值,提取的值將使用從左到右的順序。而 ${FilePath{token=-2}{separator=/}} 計算出與前面的目標代理相同的值。因此,在這個變數替代中,觸發器檔案 C:\monitored\FinanceAgent\reports.txt 將變為 C:\destination\reports.FinanceAgent。

通過使用 3 個新的動態值替換舊的靜態值,這 3 個值在監控器每次發現一個匹配值並觸發一個傳輸任務時都會不同,這種動態變化完全基於匹配的觸發檔案的名稱和它在子目錄中的位置。這個任務檔案現在應該類似如下所示:


清單 5. 使用變數替代後的任務檔案

				
 

  
    
        localhost 
        Laurence
     
    
    
      
        
          ${FilePath}
        <source>
          
          C:/destination/${FileName{token=1}{separator=.}}.
               ${FilePath{token=-2}{separator=/}}
        
      
    
  


建立資源監控器

現在任務檔案已經修改為包含本場景需要的變數替代標記,下一步是定義資源監控器。在這個示例中,您可以在源代理 SOURCEAGENT 上定義新的監控器 VarSubResourceMonitor,檢查目錄 C:\monitored 中是否存在副檔名為 .txt 的檔案或那些檔案是否被更新。


清單 6. 建立變數替代資源監控器

				
C:\WMQFTE\bin> fteCreateMonitor -ma SourceAgent 
-mn VarSubResourceMonitor -md C:\monitored -mt C:\monitored\task.xml 
-tr match,*.txt -rl 1 -jn VariableSubstitutionMonitorJob 
5655-U80, 5724-R10 Copyright IBM Corp. 2008, 2009.  ALL RIGHTS RESERVED 
BFGCL0188I: The request to create a monitor has been submitted with a request id of 
414d5120434f4d4d414e442020202020f3b48b4a20002203.
BFGCL0251I: The request has successfully completed.

執行帶有詳細輸出的 fteListMonitors 命令將顯示已定義的監控器:


清單 7. 顯示變數替代資源監控器

				
C:\WMQFTE\bin>fteListMonitors -v 
5655-U80, 5724-R10 Copyright IBM Corp.  2008, 2009.  ALL RIGHTS RESERVED Monitor
Information: 
Name:             VARSUBRESOURCEMONITOR 
Agent:            SOURCEAGENT 
Status:           Started
Root directory:   C:\monitored 
Condition:        Match
Pattern:          *.txt

測試資源監控器

您現在有 4 個代理和一個資源監控器,它們動態監控目錄 C:\monitored 及其下一級子目錄,檢查是否存在副檔名為 .txt 的檔案或那些檔案是否被更新。確保目錄 C:\destination\ 存在於目標代理的檔案系統中。如果您現在在原始檔系統中建立一個名為 C:\monitored\FinanceAgent\results.txt 的檔案,監控器將在 1 分鐘的預設檢查間隔內啟動預定義傳輸任務。您將看到 FinanceAgent 的檔案系統的 C:\destination 目錄中將出現一個名為 results.FinanceAgent 的檔案。與上一個場景一樣,您也可以使用 MQ Explorer WMQFTE Plug-in 檢查傳輸結果,該外掛將顯示檔案在兩個代理之間成功傳輸。對 C:\monitored\HRAgent\results.txt 和 C:\monitored\AccountsAgent\results.txt 重複上述過程將會為這兩個代理生成類似的結果。

故障診斷

儘管這些故障診斷方法並不是特定於資源監控的,但當傳輸任務沒有按預期發生,或監控器在定義時沒有顯示為已註冊,可以按照以下方法找出產生問題的原因:

  • 檢查代理的 Output0.log 檔案,獲取關於您預期要發生的動作的相關資訊。
  • 訂閱 SYSTEM.FTE 主題以提取按代理分類的審計和日誌訊息輸出:在 MQ Explorer 中,在協調 Queue Manager 上右鍵單擊 SYSTEM.FTE 主題並選擇 Test Subscription。指定主題字串 SYSTEM.FTE/# 以獲取傳送到 SYSTEM.FTE 主題的所有訊息。
  • 檢查代理佇列和傳輸佇列以檢視正在出現的訊息,這些訊息可能會指出一個 MQ 網路問題。

要了解關於故障診斷的更多資訊,請參閱 WebSphere MQ FTE V7.0.1 資訊中心

結束語

本文介紹了幾個受益於資源監控的應用程式,資源監控開啟了 WebSphere MQ FTE 應用的新領域,這些新應用是 V7.0.1 之前的版本所不能實現的。本文描述的場景不可能涵蓋資源監控功能的所有應用和變化,但您可以從中體會 WebSphere MQ FTE 中的資源監控功能的強大力量。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14789789/viewspace-626032/,如需轉載,請註明出處,否則將追究法律責任。

相關文章