系統易用性的管理之第五篇——監控

fiona8953發表於2014-09-04
關於系統易用性的管理,我將連續發表8篇文章,這是第5篇。在這篇文章中,我將重點解釋系統易管理性的第3個元素——監控。
水平集-監控:監控程式和其他資料收集工具是所有管理策略的主要組成部分。正確地收集和組織主機資料可以讓使用者手動或系統自動的對錯誤資料做出調整和改正。現在有很多在Linux平臺上可用的開源或免費軟體監控工具,本文將對這些工具展開概要分析,但本文並不是比較這些監控軟體的異同,而是分析它們作為資料收集系統的內部工作方式。本文將會簡單介紹WBEM/CIM,即使它不只侷限於系統易管理性這個範疇,但它也是作為一個資料收集和管理系統的基礎。
Ⅰ. WBEM/CIM:接下來的部分將介紹WBEM(Web Based Enterprise Management基於web的企業管理)和現有的開源CIM(Common Information Model公共資訊模型)實現。DMTF(Distributed Management Task Force分散式管理任務組)對WBEM有如下定義:
“WBEM是一套使用Internet標準技術開發的一體化企業計算管理環境。WBEM提供了基於WEB技術的完整的工業統一管理工具。促進了完全不同技術和平臺的資料交換。”
WBEM中使用的核心元件和工業標準包括:CIM,CIM-XML,CIM Query Language(CIM查詢語言),SLP(Service LocationProtocol,服務定位協議,用於WBEM發現),WBEM URI(Universal Resource Identifier 統一資源定位符)對映。基於系統易管理性目的,DMTF還開發了一個WBEM管理檔案模板。WBEM已經被設計成適合所有現有的管理協議,包括SNMP,DMI,CMIP。現在有一些開源的WBEM工具,包括OpenWBEM,WBEM Services,OpenPegasus和SBLIM。這些接下來都會做詳細討論。而且,現在還有符合WBEM標準的客戶端和伺服器WBEM工具。
◆WBEM客戶端工具包括PyWBEM和Purgos。PyWBEM是一個用Python編寫的開源WBEM類庫,Purgos是用C++編寫的適用於Windows的開源管理客戶端工具。
◆WBEM伺服器工具包括OpenPegasus和OpenWBEM。OpenWBEM是用C++編寫的開源客戶端和伺服器工具(Novell就採用它,並且把它新增到了SLES9/10中)。
接下來是DMTF對CIM的解釋:
“CIM為系統,網路,應用程式和服務的資訊管理提供公共定義,而且允許使用者擴充。CIM的公共定義使得使用者可以透過網路在彼此的系統之間交換語義豐富的管理資訊。它是描述管理的概念模型,而並不是一個特殊的工具。它允許在管理系統和應用程式之間互換管理資訊。這就給分散式系統管理提供了或者是“代理機到管理機”或者是“管理機到管理機”之間的資訊交流。”
CIM由兩部分組成:規範和模式
1. CIM規範:它描述了語言、命名、元模式和到其他管理模型(如SNMP MIBs和DMTF MIFs等等)的對映技術。元模式是模型的形式定義,它定義了表述模型的術語以及術語的用法和語義。元模式的元素有類,屬性和方法。元模式還支援指標和聯合。
2. CIM模式:它給出了模型的實際描述。CIM模式提供一個帶有屬性和聯合的類集,這個類集提供一個易於理解的概念框架,這個概念框架用來組織有關管理環境的可用資訊。CIM模式本身分三層結構:
◆核心模型:核心模型提供適用於所有管理領域的基本資訊模型。
◆公共模型:公共模型提供針對特定管理領域的通用資訊模型,但並不依賴於特殊技術或實現。這些公共領域包括系統、裝置、網路、應用程式、軟體度量、資料庫、物理環境、事件定義和處理、CIM底層結構的管理(互用性模型)、使用者和安全、政策和問題知識交換(支援模型)。這些模型為每個管理領域定義了一個通用類,使得每個領域有統一的與應用或平臺無關的抽象
◆擴充套件模型:為公共模型提供與具體特定應用或平臺相關的擴充套件。這些模型可以特定到環境,如作業系統(例如 UNIX或Microsoft Windows)。擴充套件模型分兩類。特定技術領域,如UNIX98;或者特定產品領域,如Windows。
WBEM(CIM)體系結構圖
OpenPegasus:
OpenPegasus是一個遵循DMTF CIM和WBEM標準的開源工具,由開放組織(The Open Group)贊助開發成功。OpenPegasus是一個得到MIT開源許可的開源軟體,在OpenPegasus網站上可以下載到tar,zip,和exe格式的OpenPegasus。根據網站上的文件所說,Pegasus是一個為DMTF CIM物件開發的開源CIM伺服器。它是用C++編寫的,包括物件管理器(CIMOM),一個定義的介面集,實現在HTTP操作和CIMXML HTTP編碼之上的CIM操作,還有一個為客戶端和供給端提供的介面類庫。它遵從DMTF CIM和WBEM規範,有詳細的說明文件,易於維護。它的設計具有靈活性和模組性。它用C++編寫,把CIM中的物件、類的概念轉換成程式模型。Pegasus現在可以執行在大部分版本的UNIX和Windows上。OpenPegasus包括如下元件:
◆一個遵從DMTF的CIM伺服器,用來處理CIM操作、CIM指標,並且包括類和例項庫以及建立CIM伺服器和供給端所需的介面
◆供給介面,這樣供給程式就可以用多種語言來寫(如C++,C,Java)
◆大量CIM供給端
◆一個MOF編譯器
◆大量CIM客戶端,提供使用例項、CIM伺服器測試功能、管理功能。
OpenWBEM On SLES10(SLES10上的OpenWBEM):
SUSE Linux企業伺服器9和10就包含OpenWBEM,OpenWBEM允許任何符合WBEM的管理程式管理系統的配置資訊。SLES9和10還包含一個CIM模型包和一個MOF編譯器包,可以用來建立和引入模型。
## 建立叫做/root/cimv2的名稱空間
SLES10:/etc/openwbem # owcreatenamespace -n /root/cimv2
Creating namespace (/root/cimv2)
## 進入CIM模型
SLES10:/etc/openwbem # owmofc /usr/share/mof/cimv2.12/cimv212.mof
[ ... Lots of Output ... ]
Compilation finished. 0 errors occurred.
編譯和引入CIM模型
 
## 開始OpenWBEM後臺程式
SLES10:~ # /etc/init.d/owcimomd start
Using common server certificate
   /etc/ssl/servercerts/servercert.pem
Starting the OpenWBEM CIMOM Daemon                   
done
## 檢查OpenWBEM服務的狀態
SLES10:~ # /etc/init.d/owcimomd status
Checking for service OpenWBEM CIMOM Daemon           
running
Ⅱ. NAGIOS:Nagios是一個透過網路來監控遠端主機和應用程式的系統監控程式。該應用程式提供一個基於網路的圖形顯示,允許使用者觀察節點狀態和執行在節點上的應用程式。以下是從Nagios文件中摘錄出的Nagios的特徵描述:Nagios的一些特徵包括:
◆監控網路服務(SMTP,POP3,HTTP,NNTP,PING等)
◆監控主機資源(處理機工作量,磁碟使用量等)
◆一些外掛設計,使使用者能很容易開發自己的服務檢查。
◆平行的服務檢查
◆使用“parent”主機能夠定義網路主機層次,能夠探測和區別那些掉線和不可達到的主機。
◆當服務或是主機出現問題的時候會發出通知並得到解決(透過email,網路尋呼機,或使用者自定義的方法)
◆能夠定義一些事件處理程式,捕獲服務或是主機事件,並做出相應的反應。
◆自動生成日誌檔案。
◆支援實現多餘主機監測。
◆可選的網路介面用來觀察當前網路狀態,通知和歷史問題,日誌檔案等。
Nagios中有很多方法,可以自選伺服器並獲得資料。最直接的辦法就是直接連線到遠端主機,然後測試主機是否可用或者是否有某個特殊服務正在執行。一般資料會在主機上,例如在儲存器上空閒,或是正在被處理機使用,但是這些資料必須透過使用Nagios代理,SNMP,其他自定義指令碼或程式,或是一個叫做check_by_ssh的Nagios外掛來獲得。check_by_ssh是一個標準外掛,可以在遠端主機上執行一個命令來收集輸出。Nagios的配置都是透過一個基於文字的配置檔案完成。主機和其他資源都被定義成塊,可以從其他預先定義的塊繼承資訊,可以得到更復雜的配置並且更易於管理。現在也有一些可用的第三方應用程式,可以提供一個web或其他GUI介面來幫助配置Nagios,但是在我們的工程中並沒有對這些做測試。以下的這個配置塊定義了一個叫做“linux-server”的主機模板。很多例如“24x7 和 “workhours”的值實際上都是在Nagios的其他配置塊中定義的。這就允許管理員為特定時期作定義,如“workhours”,同時還可以在配置的其他部分使用這個定義。
define host {
   name                       linux-server
   use                        generic-host
   check_period               24x7
   max_check_attempts         10
   check_command              check-host-alive
   notification_period        workhours
   notification_interval      120
   notification_options       d,u,r
   contact_groups             admins
   register                   0
}
Nagios主機定義模板
個人主機在配置塊中定義,下面是一個叫做management的個人主機的配置例子。注意,這裡的use宣告是繼承了前面提到的模板中已經定義的“linux-server”
define host {
   use            linux-server ;Name of host template to use.
   host_name      management
   alias          Management Server
   address        10.197.173.100
}
最後,為了更好的管理,主機可能會被組織成邏輯的組。下面的例子定義了一個包含5個主機的主機組。
define hostgroup {
   hostgroup_name test
   alias       Test Servers
   members   localhost,management,www,rhel4-production2,network
}
Nagios的釋出形式是大量類別的外掛,用來獲得資料或是檢查一個特定服務。外掛就是一些獨立的包,必須要和伺服器以及代理(如果要使用代理)一起安裝。Nagios外掛是簡單的單機執行程式,每一個都完成一個特殊的任務併為每個服務或是被測試的子系統返回一個結果。因為外掛是獨立指令碼或是二進位制程式,所以它通常都會接受不同的引數來改變執行方式和返回的結果資訊。每一個外掛的具體使用都必須在配置檔案中用define command語法分別定義。有些外掛接受多個選項,這樣當需要為某個特殊系統寫配置檔案的時候就可以使用者化定製該外掛。define command定義提供一種使用模板,這樣Nagios就會知道該如何執行該命令。對新手來說,幸運的是,預設樣本配置檔案已經為預設外掛提供了精確的定義。如果你已經熟悉了命令是如何定義的,那麼你就可以自己定義新命令或使用者指令碼了。
NRPENRPE是一個安裝在遠端主機上的Nagios遠端外掛執行程式(Nagios Remote Plugin Executor)。它能夠代表Nagios伺服器執行Nagios外掛並返回結果。安裝在伺服器上的外掛必須同時安裝在遠端主機上供NRPE使用。一個叫做check_nrpe的新外掛已經發布,用來查詢來自Nagios伺服器的NRPE daemon後臺程式。NRPE利用一個訪問控制系統來確定只有特定的Nagios主機可以連到NRPE客戶機。下面的這條配置語句就使得只有這個特定的主機可以和客戶機通訊:
allows_hosts=10.197.173.100
還可以透過配置NRPE,使它可以根據不同引數執行不同命令,儘管在文件中禁止這樣做。預設時,NRPE只能執行特定的命令,這些命令的引數都在它的配置檔案中有明確宣告(配置檔案位於NRPE主機上)。意思就是,Nagios伺服器只會讓NRPE執行定義在遠端主機的/etc/nrpe.cfg檔案中的命令,伺服器可能不會傳遞命令或外掛引數給代理機執行。下面是一個NRPE配置檔案樣本。特殊的命令(外掛)和引數必須在這裡宣告。然後Nagios伺服器就可以請求NRPE來執行這裡的一個或多個命令並返回結果:
command[check_users]=/usr/local/nagios/libexec/check_users –w 5 –c 10
command[check_load]=/usr/local/nagios/libexec/check_load –w 15,10,5 –c 30,25,20
command[check_disk_root]=/usr/local/nagios/libexec/check_disk –w 20 –c 10 –p /dev/sda1
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs –w 5 –c 10 –s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs –w 150 –c 200
預設情況下,NRPE在自身主機和Nagios伺服器之間使用SSL通訊。SSL引數在編譯時產生,並儲存在NRPE資源樹內部的C標頭檔案中,檔名是dh.h。該標頭檔案用來編譯NRPE daemon後臺程式和check_nrpe外掛。這就意味著如果想要使用SSL通訊,那麼NRPE daemon後臺程式和check_nrpe外掛就必須使用同樣引數(來自同樣資源樹)進行編譯
Ⅲ. Hyperic:Hyperic HQ是一個基於java的監控軟體,由一箇中心監控伺服器和一個或多個遠端代理組成,遠端代理用來向伺服器報告節點資訊。Hyperic HQ支援多種平臺,包括Linux,Solaris, Windows, HP-UX, AIX, Mac OS X 和FreeBSD。Hypeirc釋出了該軟體的兩個版本:
1.一個遵循GNU GPL規範的開源版本
2.一個叫做HQ Enterprise的商業版本,它包括附加的元件和功能。
HQ Open Source和HQ Enterprise的特點比較
注意:介於開源和企業版之間的HQ 3.0可能會有所改變,詳情請看:
Hyperic安裝和配置:Hyperic HQ旨在能夠快速安裝並且能夠容易配置。它透過命令列安裝,並會提示系統管理員輸入它成功執行所須的所有資訊(管理員密碼,資料庫資訊,等)。在安裝的時候選擇-upgrade選項,可以很容易升級程式。Hyperic HQ提供一個web介面,用來向終端使用者傳送監控警告和狀態資訊。但是,和其他監控程式不一樣,web介面也被用作該程式最初的配置介面。所有節點和代理細節,度量(metric)選項和警告都將透過web介面進行正確配置。監控代理的安裝方式與伺服器類似,因為所有代理的配置都是在伺服器上透過web介面完成的,代理安裝指令碼所需的唯一資訊就是用來登入伺服器的登入資訊,節點上安裝代理檔案的首選路徑,以及很多其他零碎的資訊(如伺服器和代理執行的埠號)。當代理成功地向伺服器登記後,系統管理員就可以連線到web介面,然後新增新的要被監控的主機到它的監控列表中。Hyperic HQ伺服器使用開源PostgreSQL資料庫應用程式儲存配置資訊和監控資料。PostgreSQL封裝在Hyperic HQ軟體中,會隨著系統的安裝而自動安裝並配置。也有人可能會選擇一個已經存在的PostgreSQL或Oracle資料庫,那麼安裝系統會提示管理員輸入有關資料庫的資訊,這樣Hyperic HQ就可以連線到該資料庫並使用它。預設情況下,Hyperic HQ會把它的資訊儲存到這個資料庫裡,但也可以透過配置使用外部可用的LDAP伺服器。
自動發現:Hyperic HQ監控方案的一大特色就是它能自動定位和監控執行在遠端節點的服務和daemon後臺程式。一旦代理安裝到遠端節點,它就可以掃描各種已知服務,並把這些服務新增到主機的目錄裡。一旦新增到這個目錄裡,那麼就可以配置度量和警告程式來監控那些特殊服務。Hyperic支援兩種掃描選項,自動掃描和檔案掃描。代理程式會預設定期執行“自動掃描”,它會為已知的伺服器型別掃描程式列表。另外一種更廣泛使用的掃描是“檔案掃描”,它會搜尋遠端節點的檔案系統,然後定位已知的應用程式。因為這需要很長時間,而且佔用很多資源,所以這種型別的掃描必須由系統管理員手動配置和規劃。
警告(alerts)和通知:Hyperic HQ支援基於任何量度(metric)的警告配置,可以為任何執行在主機上的特殊資源(如主機本身)或服務配置警告。例如,當一個主機的資源可用性低於一個預先設定的值,就可以觸發一個警告。當一個警告被觸發,可以發一封email到一個預先設定的email地址。根據警告的優先權,一個訊息可能會被髮送到DashBoard(Hyperic HQ管理員前端)。Enterprise版本里有的很多高階通知選項,但HQ Open Source版本沒有。HQ Enterprise還支援Recovery Alerts(恢復警告)的概念,這個概念用來取消和重新設定警告的觸發。對於Open Source版本,當一個警告被觸發的時候,該警告會連續被觸發,直到問題解決或警告失效。Recovery Alerts允許管理員使一個活動警告失效,然後當問題解決後再重新讓它有效。HQ Enterprise版本還支援傳送SNMP包的通知選項
Hyperic HQ外掛:Hyperic外掛是以.jar或.xml檔案格式釋出的,可以在伺服器和代理上進行部署。可以透過安裝外掛來增強從特定應用程式或服務收集資訊的能力,透過外掛定位和增加一個新監控目錄以及控制動作來控制特殊資源。Hyperic網站提供關於外掛發展的全面文件。開發和新增一個新外掛與Nagios或其他監控程式相比似乎是一個更復雜的工作。Hyperic HQ提供的框架給出了高階APIs,透過APIs,外掛可以在多種平臺上查詢資訊。例如,在Windows上,Hyperic HQ提供一些類,外掛可以使用這些類來訪問Windows特殊資料和函式。這些函式提供對效能資訊、註冊資料、事件日誌資訊和服務控制管理器(SCM)的有效訪問。Hyperic HQ還支援基於指令碼的簡單外掛,用這樣的外掛來制定特殊的度量規則。甚至是個人指令碼或是Nagios指令碼都可以被Hyperic HQ伺服器和代理引入並配置使用。
SIGAR – System Information Gatherer And Reporter(系統資訊收集報告器):SIGAR是Hyperic HQ主要的資料收集元件。這個軟體用來從許多平臺收集系統和處理資訊,這些平臺包括:Linux, Windows, Solaris, AIX, HP-UX, FreeBSD and Mac OSX。SIGAR是用C語言編寫的,但Hyperic提供C,C#,Java和Perl APIs,用來把SIGAR結合到它們的應用程式裡。SIGAR元件遵循GNU GPL許可,與Hyperic監控代理分開發布,用於第三方應用程式。Sigar API 提供一個方便的介面來收集系統資訊,如:
◆系統記憶體,頁面交換,cpu,平均負載,執行時間,登入資訊
◆每個程式佔用的記憶體,cpu,帳號資訊,狀態,引數,環境,開啟的檔案
◆檔案系統探測和度量
◆網路介面探測,配置資訊和度量
◆網路路由和連線表
user@linux:~/hyperic-sigar-1.3.0.0>
; java -jar sigar-bin/lib/sigar.jar
Loaded rc file:
/home/user/hyperic-sigar-1.3.0.0/sigar-bin/lib/.sigar_shellrc
sigar> help
Available commands:
        alias        - Create alias command
        cpuinfo      - Display cpu information
        df           - Report filesystem disk space usage
        du           - Display usage for a directory recursively
        free         - Display information about free and used memory
        get          - Get system properties
        help         - Gives help on shell commands
        ifconfig     - Network interface information
        iostat       - Report filesystem disk i/o
        kill         - Send signal to a process
        mps          - Show multi process status
        netinfo      - Display network info
        netstat      - Display network connections
        pargs        - Show process command line arguments
        penv         - Show process environment
        pfile        - Display process file info
        pinfo        - Display all process info
        pmodules     - Display process module info
        ps           - Show process status
        ptql         - Run process table query
        quit         - Terminate the shell
        route        - Kernel IP routing table
        set          - Set system properties
        sleep        - Delay execution for the a number of seconds
        source       - Read a file, executing the contents
        sysinfo      - Display system information
        test         - Run sigar tests
        time         - Time command
        ulimit       - Display system resource limits
        uptime       - Display how long the system has been running
        version      - Display sigar and system version info
        who          - Show who is logged on
sigar>
SIGAR的命令列使用例子
這就是“監控”部分。還有很多我們曾接觸過的工具,如Monit,Argus,Oprofile等,這裡就不一一介紹了,如有什麼問題請給予回覆

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

相關文章