為什么要寫這本書如何對用戶的數(shù)據(jù)中心、業(yè)務(wù)系統(tǒng)進行妥善的日常運維和管理?這一課題是我們在日常工作當(dāng)中研究的重要方向。在研究過程中,我們接觸了很多商業(yè)產(chǎn)品和開源項目,但是在研究過程中發(fā)現(xiàn),很難找到一個行之有效的方案和手段,直到接觸了Cacti這個項目。它既不像企業(yè)級產(chǎn)品架構(gòu)那樣復(fù)雜龐大、交互體驗不好,也不像一些開源項目那樣——雖然設(shè)計簡單,但是不具備高級功能,制約用戶的需求擴展。
Cacti的外觀和架構(gòu)設(shè)計很簡單,而且是松散耦合,深究其內(nèi)涵,我們發(fā)現(xiàn)它對于高級功能的擴展支持也很到位,特別適合中小型企業(yè)、院校機構(gòu)、政府機關(guān)等潛在用戶使用。通過一段時期的實際項目部署,發(fā)現(xiàn)它確實解決了簡化用戶工作、增強運維性能的問題。
那么把Cacti相關(guān)的研究成果歸納成書籍出版的想法是怎么形成的呢?首先,當(dāng)我們的研究工作告一段落之后,回顧走來的這一路,發(fā)現(xiàn)Cacti這個開源項目目前在國內(nèi)非常受業(yè)內(nèi)技術(shù)人員的歡迎,大家也很積極地在各大論壇和社區(qū)討論。其實在研究過程中,社區(qū)和論壇對我們的支持是非常大的,也是我們重要參考資料的來源地(在這里必須向那些無名英雄們致敬!)。但是,我們驚訝地發(fā)現(xiàn),目前國內(nèi)竟然沒有任何關(guān)于Cacti的中文技術(shù)書籍。我們在研究過程中恰恰是因為這個原因,走了不少彎路,互聯(lián)網(wǎng)上信息的可信度需要篩選,需要不斷實驗驗證,難以找到一個明確的方法論和解決問題的思路。相比之下,Nagios這些同類項目的書籍在市面上已經(jīng)非常普及了。我們認(rèn)為,如果希望Cacti可以得到廣大愛好者的青睞,有一本全面介紹它的書籍,那將會是一件非常棒的事情。這本書也一定會成為像我們當(dāng)初一樣迷茫的技術(shù)人員的“攻略和法寶”。
其次,在我們的日常工作當(dāng)中,會接觸形形色色、各種各樣的系統(tǒng)項目,通過與用戶的一次次溝通交流,我們發(fā)現(xiàn)日常的運行維護是項目成功最核心的要素,那么如何評價和測量這個核心要素是非常重要的一個環(huán)節(jié)。同時,因為行業(yè)有行業(yè)的特性,每個行業(yè)用戶都有其自身特殊的工作流程、業(yè)務(wù)軟件和系統(tǒng)架構(gòu)。所以目前市面上的運維軟件很難滿足要求(開源項目也是基于這個原因,慢慢走近了技術(shù)人員和CTO的眼中)。Cacti也許并不是終極解決方案,但是就目前的情況來說,它的界面好看,可視化功能強大,擴展包完善,特別適合行業(yè)用戶及像政府機關(guān)這樣的用戶使用。通過一段時間的部署使用,用戶也在催促我們能否輸出一些技術(shù)文檔,以便作為培訓(xùn)教材、研究報告使用。這時候,我們發(fā)現(xiàn)確實是要寫一些東西留下來了。
最后,我們作為從業(yè)者,在某一項技術(shù)研究得到相應(yīng)成果之后,非常樂于且急于和大家分享,這就要求我們要非常完善地總結(jié)、歸納和提煉,并尋找一種更為友好的方式與大家交流。這是對自己的一種提高,也是對自己前期工作的歸檔和整理。我們覺得在把這些東西落實在白紙黑字的過程,也是對自己研究成果的另一次審視和質(zhì)疑。當(dāng)然,我們歡迎這種審視和質(zhì)疑。
基于以上三個主要原因,我們覺得完成一本從實戰(zhàn)角度出發(fā),先全面后深入介紹Cacti項目的書籍,一定會是讀者樂于接受的,也是作者敢于挑戰(zhàn)自己的表現(xiàn)。
本書特色本書寫作的核心思路是“突出實戰(zhàn),先全面后深入”。
按照技術(shù)人員的一般思路,面對一項新技術(shù)或者新產(chǎn)品時,首先要了解它具體是什么東東,能夠解決什么問題;然后開始實操,嘗試安裝配置,使它完好地運行起來,在此過程中會發(fā)生各種各樣的問題和錯誤,嘗試解決它;在全面了解之后,嘗試進行高級功能的探索與開發(fā),以實現(xiàn)自己的需求。本書的內(nèi)容也按照上述的線索闡述。
第一篇(第1~2章)為準(zhǔn)備篇。第1章首先介紹Cacti的起源、概念、架構(gòu)等內(nèi)容,給讀者留下初步的印象,讓大家清楚Cacti的一些基本情況。任何系統(tǒng)和軟件都是從安裝與初始化配置開始的,Cacti也不例外。第2章主要介紹Cacti系統(tǒng)安裝配置的過程,本章分為兩個主要的部分,第一部分是針對操作系統(tǒng)環(huán)境的安裝和配置,另一部分是Cacti系統(tǒng)本身的安裝配置,以及如何對Cacti進行升級和更新。
第二篇(第3~5章)為基礎(chǔ)篇。在安裝完成之后,第3章對Cacti系統(tǒng)的三大主流程進行介紹,以便讀者對Cacti系統(tǒng)的內(nèi)部運行機制有比較詳細的了解。第4章把Cacti的每一個操作細節(jié)展現(xiàn)出來,包括控制臺、圖形窗頁簽的樹狀菜單中的每一個節(jié)點的功能和作用。這部分相當(dāng)于一個快速查詢手冊,在不清楚某些部分的概念時,可以快速查詢這一章的內(nèi)容并得到答案。第5章主要介紹如何對Cacti用戶進行管理操作。
第三篇(第6~8章)為實戰(zhàn)篇。在第6章中,我們通過真正對接一臺服務(wù)器和一臺存儲設(shè)備等的過程來體會到Cacti的強大。系統(tǒng)的日常運行維護是非常重要的環(huán)節(jié),第7章介紹了日常維護系統(tǒng)運行時需要注意的地方,還通過3個比較典型的案例來展現(xiàn)如何處理Cacti系統(tǒng)運行中出現(xiàn)的緊急情況。在第8章中,大家可以通過命令行來進行Cacti的相關(guān)操作,包括新建一個被監(jiān)控的設(shè)備主機、修改圖形的權(quán)限、重建索引、關(guān)聯(lián)模板和設(shè)備,等等。
第四篇(第9~12章)為高級篇。第9章主要介紹數(shù)據(jù)輸入方式上的擴展,包括創(chuàng)建一個新的數(shù)據(jù)字段、通過腳本來實現(xiàn)數(shù)據(jù)采集的擴展功能。在第10~11章中,我們編寫XML文件來增強數(shù)據(jù)檢索的能力,以及基于單一的OID生成具體圖形。我們希望大家可以掌握建立PHP腳本服務(wù)器的技巧和Spine模塊的使用方法,這部分內(nèi)容在第12章中介紹。
附錄A通過剖析參數(shù)和數(shù)據(jù)庫,希望可以為讀者提供本書的快速定位索引。
另外,在本書創(chuàng)作的過程中,我們增加了針對某些周邊知識(相關(guān)IT發(fā)展史、名人介紹和周邊技術(shù)等)的介紹,也就是我們在“本章小結(jié)”后增加的“IT講堂”部分,這樣做的目的有3個:一是盡量增加本書的閱讀價值;二是盡量減少本書的枯燥程度;三是盡量使基礎(chǔ)較弱的技術(shù)人員也可以非常容易地上手實操。
讀者對象我們認(rèn)為,本書的讀者對象主要分為三類。
具備扎實的系統(tǒng)集成基礎(chǔ)知識,希望選擇Cacti作為運維平臺的系統(tǒng)管理員或者研發(fā)人員(如開發(fā)工程師、系統(tǒng)集成工程師、項目經(jīng)理等)。
對于這一類人群,本書詳細介紹了安裝和配置過程,盡量深入介紹Cacti的軟件實現(xiàn)機制,并在介紹排錯的部分列舉了相關(guān)的案例,通過案例來指導(dǎo)這些具有技術(shù)背景的讀者按圖索驥,由錯誤發(fā)生的線索開始一步一步深入Cacti內(nèi)部尋找錯誤根源。同時,通過介紹幾種典型的應(yīng)急預(yù)案來滿足讀者在使用過程中發(fā)生關(guān)鍵事件而尋找解決方案的需求。本書還介紹了如何通過編寫代碼來定制屬于用戶自己的Cacti,這一部分特別適合具有專業(yè)技術(shù)基礎(chǔ)的讀者從中得到一些創(chuàng)作靈感。
有系統(tǒng)運維需求,希望對Cacti有基本認(rèn)識的技術(shù)管理者和決策者(如政府技術(shù)主管、企業(yè)CTO、研究所總工程師等)。
對于這類人群,本書通篇采用簡單、直白的文字?jǐn)⑹鲲L(fēng)格,避免過多地出現(xiàn)技術(shù)專有名詞,讓這類讀者可以快速初步認(rèn)識某些陌生的技術(shù)和名詞。在前言以及“IT講堂”部分,詳細介紹了IT業(yè)內(nèi)的動態(tài)、歷史,以及Cacti的優(yōu)勢和劣勢、應(yīng)用價值等。
對Cacti有了初步的了解,并且實操過,希望了解更多技術(shù)細節(jié),或者希望找到某一問題解決方案的技術(shù)專家(如系統(tǒng)管理員、測試工程師等)。
這一類人已經(jīng)有實操Cacti項目的經(jīng)驗,在打開本書的一刻開始,腦中已經(jīng)有了對Cacti的某些認(rèn)識,一方面他們是帶著問題來閱讀,希望本書能夠給予相關(guān)問題的答案;另一方面,他們希望在閱讀過程中得到某些共鳴。所以本書著重在各個環(huán)節(jié)談一些安裝和使用過程中的感受以及總結(jié)的經(jīng)驗,希望可以和這一類讀者有良好的互動,使這類用戶可以從中得到一些解決問題的啟發(fā)。
知識準(zhǔn)備我們盡量不把一些事情搞得太高深莫測,其實完全沒有必要,我們希望讀者在閱讀本書的過程中,可以輕松、專注地享受這一過程,而不是糾結(jié)于非常專業(yè)的技術(shù)理論、技術(shù)操作。但是任何事情的完成都需要有一定的前提準(zhǔn)備,所以希望讀者可以在如下幾個方面豐富自己的知識地圖。
基礎(chǔ)的計算機概念是必需的,需要知道CPU、內(nèi)存、存儲、總線、接口、網(wǎng)絡(luò)等基礎(chǔ)知識,以及它們和應(yīng)用軟件、操作系統(tǒng)之間的交互機制。
基礎(chǔ)的OS安裝和操作,知道如何在Windows和Linux平臺上管理服務(wù)器,如何配置和啟動相關(guān)服務(wù),如何查看系統(tǒng)的日志信息,如何配置存儲資源,等等。
中間件,尤其是Web服務(wù)器的相關(guān)知識。本書需要用到其中的功能來展現(xiàn)用戶界面與數(shù)據(jù)可視化。
數(shù)據(jù)庫,特別是一些開源數(shù)據(jù)庫的相關(guān)知識,數(shù)據(jù)庫作為元數(shù)據(jù)的管理載體,在Cacti系統(tǒng)當(dāng)中也發(fā)揮著至關(guān)重要的作用。我們需要具備基礎(chǔ)的編寫SQL查詢語句的能力,明白數(shù)據(jù)庫平臺、實例、存儲區(qū)、表、字段等一系列與數(shù)據(jù)庫相關(guān)的知識。如果掌握這些,那么你學(xué)習(xí)的時間將會極大地縮短。
Perl和PHP(Hypertext Preprocessor)編程能力,如果讀者有簡單的Perl和PHP語言的編程能力,將會極大地發(fā)揮Cacti內(nèi)在的優(yōu)勢,在Cacti的日常使用中,我們經(jīng)常會碰到需要自己開發(fā)相關(guān)模板的情況,這就是我們進行創(chuàng)作的核心。
勘誤和支持由于筆者的水平有限,加之編寫時間倉促,書中難免會出現(xiàn)一些錯誤或者不準(zhǔn)確的地方,懇請讀者批評指正,期待能夠得到你們的真摯反饋。
致謝首先兩位筆者需要互相感謝一下,在一起學(xué)習(xí)和工作十余年結(jié)下的友誼對于我們是異常珍貴的一筆財富。
感謝ChinaUnix、CSDN、51CTO等網(wǎng)站及大牛們的默默支持,你們才是我們不斷披荊斬棘、無畏前進的引路人。
感謝鄧偉、駱蕭蕭和王雨,三位的人格魅力是我們能一直堅持下來的精神支柱!感謝曾慶豐、孟祥利和程顯峰,我們折服于你們卓越的技術(shù)能力,每當(dāng)我們走投無路,沮喪絕望的時候,你們總能伸出雙手把我們帶出困境。
感謝機械工業(yè)出版社華章公司的楊福川、高婧雅。在寫作的過程中,為了防止我們寫出一堆垃圾,你們兩位付出了很大的努力和心血,沒有你們的鼓勵和建議,我們完不成如此浩大的工程,這本書有你們一半的功勞。
感謝我們的爸爸、媽媽!
劉釗:謹(jǐn)以此書獻給我美麗的老婆杜瀟,我可愛的女兒劉筱昭!
張躍:謹(jǐn)以此書獻給我的新婚妻子楊碩,以及多年來一直支持我的家人和朋友!
劉釗 張躍
劉 釗 在從事IT技術(shù)崗位工作的10年期間,涉獵數(shù)據(jù)庫,存儲,數(shù)據(jù)中心,系統(tǒng)運維等多個領(lǐng)域。精通數(shù)據(jù)中心架構(gòu)設(shè)計,擅長Oracle,存儲系統(tǒng),近期正在關(guān)注大數(shù)據(jù),分布式計算,分布式文件系統(tǒng)等相關(guān)技術(shù)。經(jīng)常活躍于51CTO和ChinaUNIX等社區(qū)。
曾服務(wù)于華為技術(shù)有限公司,任技術(shù)合作高級經(jīng)理,數(shù)據(jù)中心高級架構(gòu)師等職位,所涉及項目遍布世界20余個國家,行業(yè)涉及政府,金融,電信,石油,媒體等多個領(lǐng)域。是Oracle認(rèn)證OCP,Cisco認(rèn)證CCNA和Novell認(rèn)證NCLA。
目前正就職于國內(nèi)某ISV廠家,任全球項目總監(jiān)。
張 躍 現(xiàn)就職于國內(nèi)某知名系統(tǒng)集成商,任系統(tǒng)整合實驗室首席專家、高級系統(tǒng)架構(gòu)師、存儲技術(shù)專家。是EMC 認(rèn)證的Proven Professional Specialist(EMCSA)、VMware Certified Professional(VCP)和Brocade Certified Fabric Administrator(BCFA)。
8年來一直從事信息系統(tǒng)的方案整合及架構(gòu)設(shè)計工作。曾參與國內(nèi)外多個重要項目的設(shè)計及實施工作,如:泰國UBC集團信息化數(shù)據(jù)中心項目,中國中央電視臺資料館數(shù)據(jù)中心分級存儲項目,遼寧省電視臺高清節(jié)目制作系統(tǒng)項目,以及河南省電視臺云計算系統(tǒng)項目。
序
前言
第一篇 準(zhǔn)備篇
第1章 認(rèn)識Cacti
1.1 Cacti的起源與發(fā)展現(xiàn)狀
1.1.1 什么是Cacti
1.1.2 Cacti的起源與發(fā)展
1.2 為什么要使用Cacti
1.2.1 Cacti的使用場景
1.2.2 Cacti與同類運維工具的對比
1.2.3 使用Cacti的理由
1.3 Cacti的架構(gòu)與原理
1.3.1 Cacti系統(tǒng)的組織架構(gòu)
1.3.2 Cacti系統(tǒng)的數(shù)據(jù)流向
1.4 本章小結(jié)
第2章 環(huán)境的安裝和配置
2.1 Cacti安裝前的準(zhǔn)備
2.2 安裝與配置相關(guān)組件和服務(wù)
2.2.1 Windows Server平臺的環(huán)境搭建
2.2.2 Linux平臺環(huán)境的搭建
2.3 Cacti的安裝與配置
2.3.1 安裝和配置Cacti的基礎(chǔ)平臺
2.3.2 安裝和配置Cacti擴展插件
2.3.3 安裝和配置Cacti擴展模板
2.4 安裝與配置過程中的排錯寶典
2.4.1 關(guān)于版本
2.4.2 關(guān)于軟件的依賴性
2.4.3 關(guān)于權(quán)限
2.5 Cacti的更新安裝
2.5.1 Cacti主體程序更新
2.5.2 Cacti更新補丁程序
2.6 本章小結(jié)
第二篇 基礎(chǔ)篇
第3章 Cacti的基礎(chǔ)流程
3.1 檢索流程
3.2 存儲流程
3.2.1 RRDTool存儲方式
3.2.2 數(shù)據(jù)庫存儲方式
3.3 數(shù)據(jù)可視化流程
3.4 本章小結(jié)
第4章 Cacti的基礎(chǔ)界面
4.1 控制臺
4.1.1 新建圖形
4.1.2 圖形管理
4.1.3 圖形樹菜單管理
4.1.4 數(shù)據(jù)源管理
4.1.5 設(shè)備管理
4.1.6 數(shù)據(jù)查詢
4.1.7 數(shù)據(jù)輸入方式
4.1.8 圖形模板
4.1.9 設(shè)備主機模板
4.1.1 0 數(shù)據(jù)模板
4.1.1 1 導(dǎo)入模板
4.1.1 2 導(dǎo)出模板
4.1.1 3 全局設(shè)置
4.1.1 4 插件管理
4.1.1 5 系統(tǒng)應(yīng)用
4.1.1 6 用戶管理
4.2 圖形窗
4.2.1 菜單模式
4.2.2 檢索過濾
4.2.3 全局設(shè)置
4.3 本章小結(jié)
第5章 Cacti的用戶管理
5.1 新建用戶
5.2 用戶復(fù)制
5.2.1 單用戶復(fù)制
5.2.2 批量用戶復(fù)制
5.3 用戶的激活與禁用
5.4 刪除用戶
5.5 用戶配置樣例
5.6 本章小結(jié)
第三篇 實戰(zhàn)篇
第6章 激動人心的第一次
6.1 接入第一臺Windows服務(wù)器
6.1.1 初始化SNMP組件
6.1.2 配置Cacti
6.2 接入第一臺Linux服務(wù)器
6.2.1 初始化Linux服務(wù)器
6.2.2 配置Cacti
6.3 接入第一臺以太網(wǎng)交換機
6.3.1 初始化以太網(wǎng)交換機
6.3.2 配置Cacti
6.4 接入第一臺FC交換機
6.4.1 初始化FC交換機
6.4.2 配置Cacti
6.5 接入第一臺存儲設(shè)備
6.5.1 初始化存儲
6.5.2 配置Cacti
6.6 本章小結(jié)
第7章 Cacti系統(tǒng)的運行和維護
7.1 Cacti的目錄和結(jié)構(gòu)
7.2 Cacti的備份及還原
7.2.1 備份MySQL數(shù)據(jù)庫
7.2.2 還原MySQL數(shù)據(jù)庫
7.2.3 需要備份Cacti的哪些重要文件
7.3 其他日常維護工作
7.3.1 發(fā)現(xiàn)并清理日志文件
7.3.2 清理孤立的rrd文件
7.4 本章小結(jié)
第8章 命令行模式
8.1 添加
8.1.1 添加設(shè)備主機
8.1.2 添加數(shù)據(jù)查詢
8.1.3 添加圖形模板
8.1.4 添加圖形
8.1.5 添加權(quán)限
8.1.6 添加結(jié)構(gòu)樹
8.2 重建
8.2.1 重建設(shè)備主機索引
8.2.2 清空poller輪詢器
8.2.3 重建poller輪詢器
8.2.4 重啟數(shù)據(jù)查詢
8.2.5 修復(fù)數(shù)據(jù)庫
8.2.6 修復(fù)模板
8.3 其他
8.3.1 數(shù)據(jù)庫分析工具
8.3.2 復(fù)制用戶
8.3.3 結(jié)構(gòu)化重置rra路徑
8.4 本章小結(jié)
第四篇 高級篇
第9章 數(shù)據(jù)管理
9.1 數(shù)據(jù)輸入方式
9.1.1 創(chuàng)建新的數(shù)據(jù)輸入方式
9.1.2 利用腳本增強數(shù)據(jù)輸入方式的能力
9.2 數(shù)據(jù)查詢
9.2.1 創(chuàng)建新的數(shù)據(jù)查詢
9.2.2 基于SNMP查詢的XML用法
9.3 本章小結(jié)
第10章 自定義模板
10.1 數(shù)據(jù)模板
10.1.1 創(chuàng)建數(shù)據(jù)模板
10.1.2 應(yīng)用數(shù)據(jù)模板
10.2 圖形模板
10.2.1 創(chuàng)建圖形模板
10.2.2 應(yīng)用圖形模板
10.3 主機模板
10.3.1 創(chuàng)建主機模板
10.3.2 應(yīng)用主機模板
10.4 導(dǎo)入/導(dǎo)出模板
10.4.1 導(dǎo)入模板
10.4.2 導(dǎo)出模板
10.5 本章小結(jié)
第11章 使用OID生成圖形
11.1 OID的相關(guān)知識
11.2 OID的數(shù)據(jù)類型
11.3 利用已定義OID制圖
11.4 自定義OID制圖
11.5 本章小結(jié)
第12章 增強型功能擴展
12.1 PHP腳本服務(wù)器
12.1.1 如何使用腳本服務(wù)器
12.1.2 HostMib數(shù)據(jù)查詢樣例的升級
12.1.3 將已經(jīng)存在的腳本遷移到PHP腳本服務(wù)器上執(zhí)行
12.1.4 測試腳本服務(wù)器
12.2 Spine的魔法
12.2.1 Spine簡介
12.2.2 Spine的安裝配置
12.2.3 Spine的優(yōu)化
12.3 本章小結(jié)
附錄A Cacti系統(tǒng)參數(shù)大全
寫在最后