cacti+nagios完整安裝文檔和心得

目錄

1.          監控... 1

1.1    監控前調研... 1

1.1.1      首先:明確需求... 1

1.1.2      其次:開源等軟件調研... 4

1.2    LAMP平臺搭建 (Linux Apache MySql Php)... 14

1.2.1      Linux安裝:... 14

1.2.2      MySql Server 安裝... 14

1.2.3      Apache安裝... 15

1.2.4      Php 安裝... 15

1.3    安裝RRDTool. 18

1.4    安裝net-snmp. 20

1.5    Cacti. 20

1.5.1      概述... 20

1.5.2      Cacti的架構及工作流程... 20

1.5.3      安裝... 21

1.5.4      數據庫配置... 22

1.5.5      完成cacti的安裝... 23

1.6    Nagios. 24

1.6.1      概述... 24

1.6.2      Nagios的架構及工作流程... 25

1.6.3      Nagios安裝... 26

1.7    Cacti和Nagios整合... 36

1.7.1      安裝ndoutils36

1.7.2      配置ndoutils37

1.7.3      安裝npc. 38

1.7.4      其他插件安裝... 38

1.8    參考資料... 39

2.          進度報告... 41

2.1    基本監控運行正常... 41

2.2    郵件報警可用... 41

2.3    短信報警正在測試(主要是短信貓,其他不建議使用)... 41

2.4    細粒度的監控需進一步研究... 41


 

服務器監控及虛擬化平臺建設

 

1.  監控

1.1    監控前調研

1.1.1      首先:明確需求

1.1.1.1          硬件資源監控

l         CPU使用率

監控服務器CPU的使用率比例,還包括詳細統計,包括用戶態(User)、內核態(System)、I/O等待(IOWait)、空閒(Idle)等。

監控結果包括:

·      CPU使用率詳細比例,包括用戶態、內核態、I/O等待、空閒等

·      CPU使用率變化曲線。

·      每日CPU平均使用率、最小使用率、最大使用率。

·      每日CPU詳細使用率統計,·      包括用戶態、內核態、I/O等待、空閒等。

·      每日監控性能報告郵件(可選)。

·      告警通知。

l         CPU負載

監控Linux服務器的平均負載(load average),包括最近1分鐘、5分鐘、15分鐘等。

監控結果包括:

·      平均負載變化曲線,·       包括最近1分鐘、最近5分鐘、最近15分鐘。(loadaverage)

·      每日平均負載、最小負載、最大負載。

·      每日監控性能報告郵件(可選)。

·      告警通知。

l         內存使用率

監控服務器內存的使用率,包括Buffer Cache、Page Cache、應用程序內存等。

監控結果包括:

·      物理內存使用率詳細比例,·    包括Buffer Cache、Page Cache、應用程序內存、空閒內存等。

·      物理內存使用率變化曲線。

·      Swap使用率變化曲線。

·      每日物理內存平均使用率、最小使用率、最大使用率。

·      每日物理內存詳細使用率,·    包括用戶態、內核態、I/O等待、空閒等。

·      每日Swap內存平均使用率、最小使用率、最大使用率。

·      每日監控性能報告郵件(可選)。

·      告警通知。

l         磁盤空間使用率

監控所有磁盤分區的空間使用率,包括總空間和已用空間。

監控結果包括:

·      各磁盤分區的總空間、已用空間,· 以及空間使用率。

·      每日磁盤各分區的空間使用率變化。

·      每日監控性能報告郵件(可選)。

·      告警通知。

l         磁盤I/O

監控所有磁盤分區的I/O流量,包括寫入和讀取。

監控結果包括:

·      各磁盤分區(如Linux中的/home、/usr/local,·     或者Windows中的C盤)的寫入、讀取字節速率(Kbytes/s)。

·      各磁盤分區的寫入、讀取平均每秒次數。

·      每日各磁盤分區的寫入、讀取平均字節速率,·         最大字節速率。

·      每日監控性能報告郵件(可選)。

·      告警通知。

l         服務器網絡資源使用率

監控所有網絡設備的字節流量和數據包傳輸速率,包括流入和流出。

監控結果包括:

·      各網絡設備·    (如WAN網卡、LAN網卡)的流入、流出字節速率(Kbytes/s)或位速率(Mbps)。

·      各網絡設備·    的流入、流出包速率。

·      每日各網絡設備·     的流入、流出總流量。

·      每日各網絡設備·     的流入、流出平均字節速率,·  最大字節速率。

·      每日各網絡設備·     的流入、流出平均包速率,·      最大包速率。

·      每日監控性能報告郵件(可選)。

·      告警通知。

l         服務器進程監控

監控系統當前的進程數。     

1.1.1.2      業務服務監控:

  提供關鍵指標

  

可擴展的手段去定義業務服務監控

  

對錯誤的追蹤、回溯、判斷;

版本管理 支持,對同一輸入 的 不同版本 輸出 結果列表、性能指標、資源佔用 進行比較分析

1.1.1.3      功能需求:

告警通知:

    當發生故障時,必須能以有效的報警方式通知管理員,使故障能得到及時解決;

多種報警方式(根據故障嚴重程度):

郵件,msn,QQ...(一般故障)

短信 ,電話 (比較嚴重故障)

電視牆報警:包括聲音 (特別嚴重故障)

監控Web站點的狀態和性能(Web站點的性能就是業務量)

負載(並行用戶的數量)

 響應時間

輸出(每秒鐘的請求數量)

性能監控,實時瞭解被監控資源

 

自動化監控

 1. 定點監控

     創建任務(Job)

     創建計劃(Scheduling)

綁定計劃和任務

 2. 實時監控

     24X7

支持手機終端查看

     輕量級的手機終端查看(Android),能簡單查看各服務器的運行狀況

統一監控,集中展現

統一監控視圖可以將IT資源的監控信息分別在不同樣式的視圖上集中統一體現出來,方便運維人員集中監控管理。

IT組件全方位監控提供對網絡設備、主機操作系統、數據庫、中間件、應用軟件、安全、備份、存儲以及機房環境等IT基礎設施的專業監控。

業務服務視圖通過業務拓撲圖的形式展現業務的可用性、性能、處理及時率、用戶數和業務量等精選KPI(Key Performance Indicator)和KQI(KeyQuality Indicators)指標以及業務數據,展現業務系統內部關係、業務與IT系統架構之間的關聯關係,以及業務影響路徑和影響度,並通過不同的顏色來展現運行狀態。

集中事件處理可以將監控指標與配置信息、監控信息、告警信息、工單信息、變更信息等運維相關信息進行關聯,爲分析問題、處理問題提供方便。

監控指標相關性分析將業務系統性能指標同主機性能指標、網絡設備性能指標、線路帶寬利用率等IT基礎設施性能指標進行關聯,反映基礎設施與業務系統的性能、容量及處理能力

深入的性能分析:對收集的數據進行自動匯聚、抽取、分析,從整體架構到微觀性能指標,提供各種趨勢、比較、TopN及相關性分析,爲用戶系統優化、決策分析和業務規劃提供量化參考。

第三方工具集成:利用界面集成、數據集成、API調用技術及文件等方式整合網絡、系統監控、流量管理等第三方專業工具提供的數據和界面。

 

1.1.2       其次:開源等軟件調研

 監視系統運行狀態和網絡信息的監視系統

 

1監控軟件框圖

Monit

簡介:

Monit不僅可以監視你的服務器,還能通過一些預定的方法來應付特定情況下的問題。比如說你的數據服務器宕掉了,Monit可以自動重啓服務器,如果這是你所希望它做的話(提示:這往往是你希望的)。

當你需要監控多個服務器的時候,你可以使用M/Monit- Monit的一個擴展版本,它提供了一個簡單的途徑來管理多臺服務器。

M/Monit同時提供了iPhone app(iPhone接口)來幫助你方便地管理你的網站,你再不需要拖着一臺筆記本到處轉了。

Monit部分功能或工具需要收費,此處不展開討論

Ganglia

簡介:

 Ganglia是UC Berkeley發起的一個開源集羣監視項目,設計用於測量數以千計的節點。Ganglia的核心包含gmond、gmetad以及一個Web前端。主要 是用來監控系統性能,如:cpu 、mem、硬盤利用率, I/O負載、網絡流量情況等,通過曲線很容易見到每個節點的工作狀態,對合理調整、分配系統資源,提高系統整體性能起到重要作用。

當你擁有一個服務器羣組時,很難一下子看出你整個服務器組的工作概況。Ganglia卻可以讓你縱覽整個組。在應付一大羣服務器時,這是一個很好的工具。但從這個意義上來說,對付單服務器架構用這個工具就顯得大材小用了。

特點:

l      Ganglia由兩個獨立的daemon、一個基於PHP的web前端和其它實用程序所組成

l      用於測量數以千計的節點,用來監控系統性能(如:cpu、mem、硬盤利用率, I/O負載、網絡流量情況等)

l      每臺計算機都運行一個收集和發送度量數據(如處理器速度、內存使用量等)的名爲 gmond的守護進程

l      通過曲線查看每個節點的工作狀態

l      由RRDTool工具處理數據,並生成相應的的圖形顯示,以Web方式直觀的提供給客戶端

l      低單節點負載和高一致性,能夠適應不同的操作系統和處理器體系結構

優點:

l      Ganglia更多地與收集度量數據並隨時跟蹤這些數據有關

l      gmond帶來的系統負載非常少

缺點:

l      Ganglia沒有內置通知系統

l      前端將消耗大量的資源

Munin

簡介:

Munin 監測並將系統性能指標以圖形形式表現出來。它能自動地生成日/周/月/年性能圖表和許多重要指標的報告。它可以監測核心系統資源比如內存、硬盤空間、CPU使用率以及一些服務器程序如MySQL, Apache, Squid。

Munin最強大的一個地方是它的易擴展性。你僅僅只需要幾行代碼就可以給它寫一個插件來監控任何東西。這種易擴展性意味着Munin也可以用來監控一些與服務器性能無關的指標,像是註冊用戶數量或是網站點擊率。

特點:

l      Munin使用agent/master的模式,每個監控節點啓動一個agent,處理master發出的採集數據的請求。Master負責採集數據並生成對應的結果展示頁面

l      Munin使用tcp協議,可以通過telnet的方式直接訪問對應監控節點的狀態

l      Munin除了自身有豐富的插件之外,也提供良好的插件機擴展制,允許用戶自定義監控插件來增加監控項目。

l      通過訪問muin-master端所發佈的http服務,系統管理員可以同時查看監控主機的詳細信息。

優點:

l      和同類的mrtg,cacti,nagios相比,munin提供了一個安裝簡單、配置簡單、功能全面、界面友好的主機監控解決方案

l      易擴展性

缺點:

l      不支持基於日誌記錄的分析

l      有限的報警機制

 

MRTG:流量監控

簡介:

Multi RouterTraffic Grapher------MRTG是一個監控網絡鏈路流量負載的工具軟件,通過snmp協議得到設備的流量信息,並將流量負載以包含PNG格式的圖形的HTML 文檔方式顯示給用戶,以非常直觀的形式顯示流量負載。

特點:

l      可移植性:目前可以運行在大多數 Unix系統和 Windows 之上;

l      源碼開放:mrtg是用 perl 編寫的,源代碼完全開放;

l      高可移植性的SNMP支持:mrtg 採用了 Simon Leinen 編寫的具有高可移植性的 SNMP 實現模塊,從而不依賴於操作系統的SNMP模塊支持;

l      支持SNMPv2c:MRTG 可以讀取 SNMPv2c 的64位記數器,從而大大減少了記數器迴轉次數;

l      可靠的接口標識:被監控設備的接口可以以IP地址、設備描述、SNMP對接口的編號及 Mac 地址來標識;

l      常量大小的日誌文件:MRTG的日誌不會變大,因爲這裏使用了獨特的數據合併算法;

l      自動配置功能:MRTG自身有配置工具套件,使得配置過程非常簡單;

l      性能:時間敏感的部分使用 C代碼編寫,因此具有很好的性能;

l      PNG格式圖形:圖形採用 GD庫直接產生 PNG 格式;

l      可定製性:MRTG產生的 web 頁面是完全可以定製的。

優點:

l      簡單、易上手,基本安裝完了之後只要更改一下配置文件即可

缺點:

l      使用文本式的數據庫,數據不能重複使用;

l      只能按日、周、月、年來查看數據;

l      只能畫兩個DS:Data source(一條線、一個塊);

l      每取一次數據即需要繪圖一次,浪費系統資源;

l      無管理功能;

 

  CACTI:流量預警,性能報告

 簡介:

在廣義上來說cacti是一套網絡流量監測圖形分析工具,但從狹義來說cacti只是由php語言實現的一個軟件,它需要PHP,apache,Mysql,SNMP,RRDTool等工具的支持,它運用snmpget採集數據,使用rrdtool繪圖,使用Cacti能統計網絡設備的流量、CPU、系統負載等參數,也可以自定義監測的指標。

Cacti is 和Munin有很多相似的地方。不過它有一點和Munin相比表現突出的地方,那就是它允許你在一個較模糊的界限裏調整你的數據顯示的範圍大小。 Munin只有固定的日、周、月、年性能圖表(除非你自己寫一個擴展),而Cacti卻可以讓你以你希望的方式查看你的數據:最近2小時,近四天,近六個 月,不定期。你甚至可以在可視界面上拉近拉遠你的圖表。

 

特點:

l          無限圖的項目(unlimited graph items

l          對圖表的auto-padding支持(auto-padding support forgraphs

l          圖形數據處理(graph data manipulation

l          靈活的數據來源(flexibledata sources

l          數據收集在一個特殊的時間跨度(data gatheringon a non-standard timespan

l          自定義數據收集腳本(custom data-gatheringscripts

l          內置SNMP支持(built-in SNMP support)

l          圖形模板(graph templates

l          數據源模板(data source templates

l          主機模板(host templates

l          樹,清單,和預覽視圖圖形數據(tree, list, andpreview views of graph data

l          基於用戶的安全與管理(user-basedmanagement and security

優點:

l          強大的繪圖功能

l          非常容易地被安裝和使用

缺點:

l          一些對像的狀態監控,對於一些說明性的監控,做爲一個繪圖工具來講,可能就會有相應的困難 

l          如果在整體監控過程中,在上千的設備找到某一具體業務、某一具體位置、某一具體用途的服務器來講,是比較困難的

l          監控有限, 若要添加自定義圖表比較麻煩

補充:

Rrdtool:簡單的說,rrdtool就是一個強大的繪圖的引擎。

優點:

l       使用rrd存儲格式,數據能重複使用,比如我可以將一個rrd文件中的數據與另一個rrd文件中的數據相加。

l       可以定義任意時間段畫圖,即你可以畫出一張半年以來的數據的圖,也可以畫出一張半小時以來的圖。

l      能畫任意個DS(Data source)。

l      CDEF(一個虛擬的變數,其值爲 DEF 的某些運算)讓你能任意擺弄數據。

缺點:

l      rrdtool的作用只是存儲數據和畫圖,它沒有mrtg中集成的數據採集功能;

l      在命令行的使用非常複雜,參數極多。

l      無管理功能。

Nagios

簡介:

  Nagios是“IT網站監控的工業標準”。不過這只是他們網站自己這麼說的。Nagios的安裝以及配置非常繁瑣,但是它所擁有的豐富特性是市場上的任何工具都不可比擬的,適用於有經驗的IT網絡管理員。Nagios支持監控多臺服務器並且可以通過email,或者以紙質(只要你還在用這種古老的技術)發送警告或 SMS/text消息。像Monit一樣,Nagios也可以通過一定的配置來自動對故障作出反應。

nagios可以採集數據,但是不適合做歷史數據展示,它僅僅是一個監控,監視某些狀態值是否正確,而沒有把數據值的歷史記錄下來,nagios並不使用rrdtool。其實,nagios並不是跟cacti/mrtg等同的工具,還需要一個採集畫圖的工具。

  當前,Nagios可能是應用比較廣泛的監控工具了,例如,Facebook、Sina、Sohu、網易、阿里巴巴等大型企業都在採用這套監控平臺,twitter就是用nagios+munin的

特點:

l      監控網絡服務(SMTP、POP3、HTTP、NNTP、Ping等);

l      監控主機資源(處理器負載,磁盤利用率等);

l      簡單的插件設計使用戶可以方便地擴展自己服務的監測方法;

l      並行服務監測機制;

l      具備定義網絡分層結構的能力,用“parent”主機定義來表達網絡主機間的關係;這種關係被用來發現和明確主機宕機或不可達狀態;

l      當服務或主機問題產生與解決時將警告發送給聯繫人(通過Email,短信,用戶自定義);

l      具備定義事件句柄功能,它可以在主機或服務的事件發生時獲取更多問題定位;

l      自動的日誌回滾;

l      可以支持並實現對主機的冗餘監控;

l      可選的WEB界面用於查看當前的網絡狀態、通知和故障歷史、日誌文件等。

優點:

l      強大的報警功能

l      支持靈活的插件功能,能自定義監測

缺點:

l      界面簡單

l      繪圖功能不佳

l      遠程監控監控端和被監控端都需要安裝NRPE代理

l      插件開發至少要精通Perl,shell,python等其中一門腳本語言

l      nagios可以採集數據,但是不適合做歷史數據展示

 

Zabbix

 簡介:

Zabbix是一個企業級的開源分佈式監控解決方案,由一個國外的團隊持續維護更新,軟件可以自由免費下載使用,運作團隊靠提供收費的計技術支持贏利

Zabbix通過C/S模式採集數據,通過B/S模式在Web端展示和配置

被監控端:主機通過安裝agent方式採集數據,網絡設備通過SNMP採集數據

Server端:通過收集SNMP和agent發送的數據寫入MySql數據庫,再通過php+apache的方式在Web前段展示

Zabbix 是一種功能豐富的監控工具。它有強大的可視支持:用戶自定義界面、拉近拉遠和繪製方式。它可以通過email、SMS或即時消息來發送警告。同時它還可以發出聲音警告,當你人在監控機器旁邊的時候會很有用。

特點:

l          具備常見商業監控軟件所具備的功能(主機的性能監控,網絡設備性能監控、數據庫性能監控、FTP等通用議監控、多種告警方式、詳細的報表圖表繪製)

l          支持自動發現網絡設備和服務器

l          支持分佈式,能集中展示、管理分佈式的監控點

l          擴展性強,server提供通用接口,可以自己開發完善各類監控

優點:

l          Server對設備性能要求較低

l          支持設備多

l          支持分佈式集中管理

l          開放式接口,擴展性強

l          性能管理和容量規劃

缺點:

l          無廠家支持,出現問題解決比較麻煩

l          需要在被監測主機上安裝agent

Zenoss Core

簡介:

 Zenoss Core是開源企業級IT管理軟件-是智能監控軟件,他允許IT管理員依靠單一的WEB控制檯來監控網絡架構的狀態和健康度。Zenoss Core同時也是開源的網絡與系統管理軟件。

Zenoss是用Python寫的,用MySQL存儲數據

Zenoss 是商業服務器監控工具Zenoss Enterprise的一個開源版本,全部由Python語言編寫。它支持Nagios plugin format(Nagios插件格式),所以許多Nagios的插件也可以用於Zenoss。Zenoss的一個突出的地方是它強大而又容易使用的用戶接口。

特點:

l          警報控制

l          網絡監控

l          性能監控

l          服務監控

優點:

l          以CMDB爲核心,可以方便在系統中進行調整與管理

l          易於管理、易於閱讀並且功能齊全(即支持Cacti可視化,同時又支持Nagios擴展)

l          儀表盤風格很容易理解,能基本滿足所需要的任何監控

l          易於安裝和維護

l          虛擬化和雲計算監測能力

缺點:

l          顯示權限策略不全

Collectd

簡介:

Collectd 和Munin以及Cacti一樣是注重圖形式的系統指標顯示方式。與衆不同的是,它是專門爲性能和可移植性而設計的。這意味着它適用於那些粗糙的、低端的和嵌入式的系統。高性能低資源佔有率的設計使得Collectd可以在不干擾你的服務進程的條件下,每10秒鐘收集一次數據,提供高清晰的結果。可以用 C、Perl或是Java給它寫擴展程序。

特點:

l          完全是由C語言編寫,故性能很高,可移植性好

l          允許運行在系統沒有腳本語言支持或者cron daemon的系統上,比如嵌入式系統

l          包含優化以及處理成百上千種數據集

l          collectd包含有超過70多種插件,其中有標準的case到非常特殊和高級的專題

優點:

l          強大的網絡聯網特性,它能以多種方式來擴充

l          性能很高,可移植性好

l          文檔支持非常好

缺點:

l          它本身不能生成圖形

l          只能進行簡單門閥檢測
 

初步建議方案:

  方案一:Nagios+Cacti(靈活的監控機制+強大的繪圖能力)

    雖然 MRTG是一套非常好用的軟件但是它畢竟是一套很舊的軟件了,其作者在多年前已經開發出RRDTool 代替該軟件,現在已經發展的很成熟了,但由於 RRDTool 的指令非常複雜,對於使用者非常的麻煩,幸運的是有一套軟件 Cacti 的發展就是基於讓 RRDTool 使用者更方便使用該軟件,除了基本的 Snmp 流量跟系統資訊監控外,Cacti 也可外掛 Scripts 及加上 Templates 來作出各式各樣的監控圖,因此用Cacti取代MRTG,在方案中不考慮MRTG

  方案二:Zenoss

Zenoss fills both(Nagios,Cacti) roles, without the annoying shortcomingsprevalent in the alternative solutions. Zenoss uses the terms AvailabilityMonitoring and Performance Monitoring to describe these two fundamental roles.

 


Name

IP SLA Reports

Logical Grouping

Trending

Trend

Prediction

Auto

Discovery

Agent

SNMP

Syslog

Plugins

Triggers/

Alerts

WebApp

Distributed

Monitoring

Inventory

Data

Storage

Method

Maps

Access

Control

IPv6

Ganglia

 

N

Y

Y

N

Via gmond check in

Y

V

N

Y

N

Viewing

Y

U

RRDtool

Y

N

U

Munin

 

N

N

Y

Y

N

Y

Y

N

Y

Partial

Viewing

U

U

RRDtool

U

U

Y

CACTI

Y

Y

Y

Y

V

N

Y

Y

Y

Y

Full Control

Y

Y

RRDtool,MySQL

V

Y

Y

Nagios

 

V

Y

Y

N

V

S

V

V

Y

Y

Y

Y

V

Flat file,SQL

Y

Y

Y

Zabbix

 

Y

Y

Y

N

Y

S

Y

Y

Y

Y

Full Control

Y

Y

Oracle,MySQL,PostgreSQL,IBM DB2,SQLite

Y

Y

Y

Zenoss

 

Y

Y

Y

Y

Y

N

Y

Y

Y

Y

Full Control

Y

Y

ZODB,MySQL,RRDtool

Y

Y

Y

Collectd

 

N

N

N

N

Push model;
multicast
possible

S

Y

Y

Y

Y

Viewing

Y

N

RRDtool

N

Apache ACL

Y

表1 各監控軟件功能點比較

Description:Y-Yes    N-NO    U-Unkown  V-Via Plugins   S- Supported

 

Legend

Product Name 

The name of thesoftware

IP SLAsReports 

Feature reports onIP SLAs

LogicalGrouping 

Support arrangingthe hosts or devices it monitors into user-defined groups

Trending 

Provide trendingof network data over time

TrendPrediction 

The softwarefeature algorithms designed to predict future network statistics

AutoDiscovery 

The softwareautomatically discover hosts or network devices it is connected to

Agent 

The product relyon a software agent that must run on hosts it is monitoring, so that data canbe pushed back to a central server. "Supported" means that an agentmay be used, but is not mandatory. AnSNMP daemon does not countas an agent.

SNMP 

Able to retrieveand report on SNMPstatistics

Syslog 

Able to receiveand report on Syslogs

Plugins 

Architecture ofthe software based on a number of 'plugins' that provide additionalfunctionality

Triggers/Alerts 

Capable ofdetecting threshold violations in network data, and alerting the administratorin some form.

WebApp 

Runs as aweb-based application

·  No: There is noweb-based frontend for this software.

·  Viewing: Networkdata can be viewed in a graphical web-based frontend

·  Acknowledging:Users can interact with the software through the web-based frontend toacknowledge alarms or manipulate other notifications.

·  Reporting:Specific reports on network data can be configured by the user and executedthrough the web-based frontend.

·  Full Control: ALLaspects of the product can be controlled through the web-based frontend,including low-level maintenance tasks such as software configuration andupgrades.

DistributedMonitoring 

Able to leveragemore than one server to distribute the load of network monitoring.

Inventory 

Keeps a record ofhardware and/or software inventory for the hosts and devices it monitors

Data StorageMethod 

Main method usedto store the network data it monitors.

Maps 

Features graphicalnetwork maps that represent the hosts and devices it monitors, and the linksbetween them.

AccessControl 

Featuresuser-level security, allowing an administrator to prevent access to certainparts of the product on a per-user or per-role basis

IPv6 

Supportsmonitoring IPv6hosts and/or devices, receiving IPv6 data, and running on an IPv6-enabledserver. Supports communication using IPv6 to the SNMP agent via an IPv6address.

 

 

 


1.2    LAMP平臺搭建 (Linux Apache MySql Php)

1.2.1       Linux安裝:

RHEL 6.2

1.2.2       MySql Server 安裝

解壓軟件包,進入安裝目錄,我的編譯過程如下:
# ./configure --prefix=/usr/local/mysql
# make;make install
# cp support-files/my-medium.cnf /etc/my.cnf (這一步是將配置文件拷貝到/etc下面)
編譯選項當中指定安裝路徑就可以了
配置mysql過程:
#groupadd mysql
#useradd -g mysql mysql
#cd /usr/local/mysql
#./bin/mysql_install_db --user=mysql
#chown -R root .
#chown -R mysql var
#chgrp -R mysql .
啓動mysql
#./bin/mysqld_safe --user=mysql &
如果看到下面的信息,就說明啓動成功了
# Starting mysqld daemon with databases from /usr/local/mysql/var
可以測試一下,看看能不能登陸mysql數據庫
# /usr/local/mysql/bin/mysqladmin -uroot password '你的密碼'(給初始登陸mysql的用戶

root設置密碼,當
然不設置也能登陸,推薦設置密碼)
# /usr/local/mysql/bin/mysql -uroot -p你的密碼  (注意: -p後面不要帶空格)
如果出現下面的歡迎字樣,說明連接成功:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9 to server version: 5.0.20a-log
mysql> set password for root@localhost=password('cacti');
mysql> Query OK, 0 rows affected (0.00 sec)
mysql> create database cactidb;
mysql> grant all on cactidb.* to root;
mysql> grant all on cactidb.* to root@localhost;
mysql> grant all on cactidb.* to cactiuser;
mysql> grant all on cactidb.* to cactiuser@localhost;
mysql> set password for cactiuser@localhost=password('cacti');
mysql> flush privileges; (See cacti docs/INSTALL)
mysql> exit
//select * from user;
//查詢帳號是否添加成功

 

1.2.3       Apache安裝

Apache Http Server

下載地址:http://httpd.apache.org/

# tar –zxvf httpd-2.2.4.tar.gz

# cd httpd-2.2.4

# ./configure --prefix=/usr/local/apache--enable-so

//編譯時加上加載模塊參數--enable-so

# make

# make install

# vim /usr/local/apache/conf/httpd.conf

  //修改Apache配置文件,添加ServerNamewww.yourdomain.com             (或ServerName 本機ip)

# vim /etc/rc.d/rc.local

  //在rc.local上加入一行/usr/local/apache/bin/apachectl–k start,系統啓動時啓動Apache服務。

 

1.2.4       Php 安裝

php-5.3.3-3.el6_2.8.x86_64

   先安裝zlib,freetype,libpng,jpeg以便於讓PHP支持GD庫(Cacti的WeatherMap插件必須要較新GD庫的支持)

庫文件下載地址:http://oss.oetiker.ch/rrdtool/pub/libs/
1).安裝zlib

  tar zlib-1.2.3.tar.gz
  cd zlib-1.2.3
  ./configure --prefix=/usr/local/zlib
  make
  make install


2).安裝libpng

  tar zxvf libpng-1.2.16.tar.tar
  cd libpng-1.2.16
  cd scripts/
  mv makefile.linux ../makefile
  cd ..
  make
  make install
  注意,這裏的makefile不是用./configure生成,而是直接從scripts/裏拷一個


3).安裝freetype

  tar zxvf freetype-2.3.4.tar.gz
  cd freetype-2.3.4  
  ./configure --prefix=/usr/local/freetype
  make
  make install


4).安裝Jpeg

   tar -zxfjpegsrc-1.v6b.tar.gz
   cd jpeg-6b/
   mkdir /usr/local/libjpeg
   mkdir /usr/local/libjpeg/include
   mkdir /usr/local/libjpeg/bin
   mkdir /usr/local/libjpeg/lib
   mkdir /usr/local/libjpeg/man

   mkdir/usr/local/libjpeg/man/man1

  //可以用mkdir -p /usr/local/libjpeg/man/man1 一步創建多層目錄

   ./configure--prefix=/usr/local/libjpeg --enable-shared --enable-static
   make && make install
注意,這裏configure一定要帶--enable-shared參數,不然,不會生成共享庫

 

5).安裝Fontconfig

tar -zxvf fontconfig-2.4.2.tar.gz
cd fontconfig-2.4.2

./configure--with-freetype-config=/usr/local/freetype

make
make install


6).安裝GD

  tar -zxvf gd-2.0.34.tar.gz
  cd gd-2.0.34
  ./configure --prefix=/usr/local/libgd --with-png--with-freetype=/usr/local/freetype --with-jpeg=/usr/local/libjpeg

  make
  make install

編譯時顯示以下信息:

** Configuration summary for gd 2.0.34:

   Support for PNG library:         yes
   Support for JPEG library:        yes
   Support for Freetype 2.x library: yes
   Support for Fontconfig library:   yes
   Support for Xpm library:          no
   Support for pthreads:            yes

 

7).編輯/etc/ld.so.conf,添加以下幾行到此文件中。

    /usr/local/zlib/lib

    /usr/local/freetype/lib

    /usr/local/libjpeg/lib

    /usr/local/libgd/lib

    並執行ldconfig命令,使用動態裝入器裝載找到共享庫

 

8).安裝libxml,默認安裝libxml包,但版本可能太低,PHP5需要更高版本的libxml包。


      # tar –zxvf libxml2-2.6.25.tar.gz
      # cd libxml2-2.6.25
      # ./configure
      # make
      # make install

 

9).安裝PHP

PHP下載地址:http://www.php.net/downloads.php#v5

tar -zxvf  php-5.2.3.tar.gz
cd php-5.2.3
#./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs--with-mysql=/usr/local/mysql --with-gd=/usr/local/libgd --enable-gd-native-ttf--with-ttf --enable-gd-jis-conv --with-freetype-dir=/usr/local/freetype--with-jpeg-dir=/usr/local/libjpeg --with-png-dir=/usr--with-zlib-dir=/usr/local/zlib --enable-xml --enable-mbstring --enable-sockets

# make

# make install

# cp php.ini-recommended/usr/local/php/lib/php.ini

# ln –s /usr/local/php/bin/*/usr/local/bin/

# vi /usr/local/apache/conf/httpd.conf

查找AddType application/x-compress .Z

AddType application/x-gzip .gz .tgz

在其下加入 AddType application/x-tar .tgz

AddType application/x-httpd-php .php

AddType image/x-icon .ico

修改DirectoryIndex 行,添加index.php

修改爲DirectoryIndex index.php index.htmlindex.html.var

# vim /usr/local/apache/htdocs/test.php

添加以下行:  //按i進行編輯

//php標記(用<代替[)

[?php       

 Phpinfo();

?]

wq保存退出。 //先按 Esc鍵,然後按:(冒號),最後才按輸入wq!退出

# /usr/local/apache/bin/apachectl –kstop

#/usr/local/apache/bin/apachectl –kstart

在瀏覽器中輸入:http://www.yourdomain.com/test.php進行測試。

 

對php編譯選項的解釋:

--prefix=/usr/local/php   //指定PHP的安裝目錄

--with-apxs2=/usr/local/apache2/bin/apxs     //支持Apache模塊

--with-mysql=/usr/local/mysql   //支持MySQl

--with-gd=/usr/local/libgd    //支持GD庫

--enable-gd-native-ttf    //激活對本地TrueType 字符串函數的支持

--with-ttf     //激活對 FreeType 1.x 的支持

--with-freetype-dir=/usr/local/freetype   //激活對FreeType 2.x 的支持

--with-jpeg-dir=/usr/local/libjpeg //激活對 jpeg-6b 的支持

--with-png-dir=/usr   //激活對 png 的支持

--with-zlib-dir=/usr/local/zlib //激活對zlib 的支持

--enable-mbstring    //激活mbstring模塊

--enable-gd-jis-conv //使JIS-mapped可用,支持日文字體

--with-mail   //支持Mail函數

--enable-xml     //支持XML

--enable-sockets     //支持套接字

 

也可以以yum 的方式一齊安裝

參見 http://holy2010.blog.51cto.com/1086044/325434

 

1.3    安裝RRDTool

  由於rrdtool-1.2.23需要一些庫文件支持,故需先安裝配置支持的環境,然後編譯安裝。直接運行以下bash腳本就可以完成安裝:
注意:將cgilib-0.5.tar.gz、zlib-1.2.3.tar.gz、libpng-1.2.18.tar.gz、freetype- 2.3.5.tar.gz、libart_lgpl-2.3.17.tar.gz、rrdtool-1.2.23.tar.gz放到/root /rrdtool-1.2.23目錄下,將腳本保存爲/root/rrdtool-1.2.23/rrdtoolinstall.sh,並給執行權限 chmod u+x /root/rrdtool-1.2.23/rrdtoolinstall.sh。
以下鏈接是我重新打好的一個rrdtool-1.2.23的安裝包,裏面包括了所有用到的庫文件和安裝腳本,下載解壓後執行腳本rrdinstall.sh即可以完成RRDTool的安裝。
點擊下載rrdtool-1.2.23.tar.gz

如果以上腳本安裝失敗,可以試試以下安裝包:

http://61.156.20.41/autodownload/rrdtool-1.2.11.tar.gz

#!/bin/sh
BUILD_DIR=`pwd`
INSTALL_DIR=/usr/local/rrdtool
cd $BUILD_DIR
tar zxf cgilib-0.5.tar.gz
cd cgilib-0.5
make CC=gcc CFLAGS="-O3 -fPIC -I."
mkdir -p $BUILD_DIR/lb/include
cp *.h $BUILD_DIR/lb/include
mkdir -p $BUILD_DIR/lb/lib
cp libcgi* $BUILD_DIR/lb/lib
cd $BUILD_DIR
tar  zxf zlib-1.2.3.tar.gz
cd zlib-1.2.3
env CFLAGS="-O3 -fPIC" ./configure --prefix=$BUILD_DIR/lb
make
make install
cd $BUILD_DIR
tar zxvf libpng-1.2.18.tar.gz
cd libpng-1.2.18
env CPPFLAGS="-I$BUILD_DIR/lb/include"LDFLAGS="-L$BUILD_DIR/lb/lib" CFLAGS="-O3 -fPIC" \
    ./configure --disable-shared --prefix=$BUILD_DIR/lb
make
make install
cd $BUILD_DIR
tar zxvf freetype-2.3.5.tar.gz
cd freetype-2.2.5
env CPPFLAGS="-I$BUILD_DIR/lb/include"LDFLAGS="-L$BUILD_DIR/lb/lib" CFLAGS="-O3 -fPIC" \
    ./configure --disable-shared --prefix=$BUILD_DIR/lb
make
make install


cd $BUILD_DIR
tar zxvf libart_lgpl-2.3.17.tar.gz
cd libart_lgpl-2.3.17
env CFLAGS="-O3 -fPIC" ./configure --disable-shared--prefix=$BUILD_DIR/lb
make
make install

IR=-I$BUILD_DIR/lb/include
CPPFLAGS="$IR $IR/libart-2.0 $IR/freetype2 $IR/libpng"
LDFLAGS="-L$BUILD_DIR/lb/lib"
CFLAGS=-O3
export CPPFLAGS LDFLAGS CFLAGS

cd $BUILD_DIR
tar zxf rrdtool-1.2.23.tar.gz
cd rrdtool-1.2.23
./configure --prefix=$INSTALL_DIR --disable-python --disable-tcl &&make && make install


//完成後建立符號連接 

ln –s /usr/local/rrdtool/bin/*/usr/local/bin/

//執行rrdtool看是否安裝正確

 

1.4    安裝net-snmp

  RedHat默認安裝了SNMP服務,但好象沒有snmpwalk,snmpget這兩個命令,所以需要編譯安裝NET-SNMP。

NET-SNMP官方網站:http://www.net-snmp.org/

# tar zxvf net-snmp-5.2.4.tar.gz

# cd net-snmp-5.2.4
# ./configure --prefix=/usr/local/net-snmp  --enable-developer
# make
# make install

# ln –s /usr/local/net-snmp/bin/*/usr/local/bin/

# cp EXAMPLE.conf /usr/local/net-snmp/share/snmp/snmpd.conf

//修改snmpd.conf(修改COMMUNITY、允許抓取snmp數據的主機、抓取數據範圍等)。

#/usr/local/net-snmp/sbin/snmpd     //啓動SNMP服務

# vi /etc/rc.d/rc.local

   //在rc.local上加入一行/usr/local/net-snmp/sbin/snmpd,系統啓動時啓動SNMP服務。

 

1.5    Cacti

1.5.1       概述

l         cacti是用php語言實現的一個軟件,它的主要功能是用snmp服務獲取數據,然後用rrdtool儲存和更新數據,當用戶需要查看數據的時候用rrdtool生成圖表呈現給用戶。因此,snmp和rrdtool是cacti的關鍵。Snmp關係着數據的收集,rrdtool關係着數據存儲和圖表的生成。

l         Mysql配合PHP程序存儲一些變量數據並對變量數據進行調用,如:主機名、主機ip、snmp團體名、端口號、模板信息等變量。

l         snmp抓到數據不是存儲在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目錄的rra文件夾下)。rrdtool對數據的更新和存儲就是對rrd文件的處理,rrd文件是大小固定的檔案文件(Round Robin Archive),它能夠存儲的數據筆數在創建時就已經定義。

1.5.2       Cacti的架構及工作流程

 

2 Cacti架構圖

 3 Cacti工作原理圖

1.5.3       安裝

Cacti官方網站:www.cacti.net/

# tar –zxvf cacti-0.8.6j.tar.gz

# mv –r cacti-0.8.6j/usr/loca/apache/htdocs/cacti

# vi/usr/local/apache/htdocs/cacti/include/config.php

$database_type = "mysql";

$database_default = "cacti";

$database_hostname ="localhost";

$database_username = "cacti";

$database_password = "cacti";

 

//添加cacti用戶

# useradd cacti

//將rra目錄的所有權給cacti用戶

# chown –R cacti/usr/loca/apache/htdocs/cacti/rra

//修改cacti目錄所屬組

# chgrp –R cacti/usr/loca/apache/htdocs/cacti

//爲cacti用戶添加cron任務

# su – cacti

# crontab –e

*/5 * * * * /usr/local/bin/php/usr/local/apache/htdocs/cacti/poller.php > /dev/null 2>&1

注意:首次執行poller.php時請使用cacti用戶,否則生成的rrd文件cacti將沒有寫入權限。

     

4.安裝Cactid

CACTID 的安裝需要以下支持:

o    net-snmp-devel (需要編譯安裝net-snmp時添加--enable-developer選項)

o    mysql              

o    mysql-devel    (mysql源文件編譯安裝後默認支持)

o    openssl-devel  (Redhat默認安裝)

# tar -zxvf cacti-cactid-0.8.6i.tar.gz

# cd cacti-cactid-0.8.6i

# ./configure--with-mysql=/usr/local/mysql --with-snmp=/usr/local/net-snmp

# make

//這時你將在此目錄下看到多出了cactid、cactid.conf兩個文件

# mkdir /usr/local/cactid

# cp cactid cactid.conf /usr/local/cactid

# vi /usr/local/cactid/cactid.conf       //修改cactid配置文件

DB_Host        127.0.0.1

DB_Database    cacti

DB_User        cacti

DB_Pass        cacti

 

1.5.4       數據庫配置

#mysql –uroot –p

Password:

mysql> create database cacti;

Query OK, 1 row affected (0.00 sec)

 

mysql> grant all on cacti.* tocacti@localhost identified by “cacti”;

Query OK, 1 row affected (0.00 sec)

 

mysql>exit

# cd /usr/local/apache/htdocs/cacti

# mysql –uroot –p cacti < cacti.sql

Password:

 

1.5.5       完成cacti的安裝

1).在瀏覽器中輸入:http://www.yourdomain.com/cacti/

默認用戶名:admin 密碼:admin

2).更改密碼

3).設置cacti用到的命令路徑

snmpwalk BinaryPath        /usr/local/ bin/snmpwalk

snmpget Binary Path        /usr/local/ bin/snmpget

RRDTool BinaryPath         /usr/local/ bin/rrdtool

PHP BinaryPath             /usr/local/bin/php

Cacti Log FilePath         /usr/local/apache/htdocs/cacti/log/cacti.log

Cactid Poller FilePath     /usr/local/cactid/cactid

4).進入cacti後需確認更改以下位置:(如下圖)

Console>Settings>General

 

Console>Settings>Poller

 

1.6    Nagios

1.6.1       概述

Nagios是一個用來監視系統和網絡的開源應用軟件,它通常運行於一個主服務器上,這個服務器運行 Liunx 或 Unix 操作系統。Nagios利用其衆多的插件實現對本機和遠端服務的監控,當被監控對象出現異常,Nagios 就會及時給管理人員告警。它是一個基於TCP/IP協議的軟件包,包含有nagios主程序和它的各個插件,配置非常靈活,可以監視的項目很多,也可以通過自定義 shell 腳本進行監控服務,非常適合各類企業的網絡應用。
   Nagios功能非常強大,它可以監控服務和主機,但是他自身並不包括這部分功能的代碼,所有的監控、檢測功能都是有插件來完成的。再說報警功能,如果監控系統發現問題不能報警那就沒有意義了,所以報警也是nagios很重要的功能之一。但是,同樣的,nagios自身也沒有報警部分的代碼,甚至沒有插 件,而是交給用戶或者其他相關開源項目組去完成。nagios安裝,是指基本平臺,也就是nagios軟件包的安裝。它是監控體系的框架,也是所有監控的基礎。
   打開nagios官方的文檔,會發現nagios基本上沒有什麼依賴包,只要求系統是linux或者其他nagios支持的系統。不過如果你沒有安裝 apache(http服務),那麼你就沒有那麼直觀的界面來查看監控信息了,所以apache姑且算是一個前提條件。
   
Nagios 系統的特點主要有下面幾點:

l         監控主機資源和網絡服務

l         允許用戶通過設計實現簡單的插件來監控自己特定的服務

l         當被監控對象出現問題時,會及時通知管理人員

l         事先定義事件處理程序,當對象出現問題時自動調用對應的處理程序

l         通過 web 頁面來監視對象狀態,警告提示和日誌文件。

 

1.6.2       Nagios的架構及工作流程

Nagios通常由一個主程序(Nagios) 、一個插件程序(Nagios-plugins) 和四個可選的ADDON(NRPE、NSCA、 NSClient++和NDOUtils)組成。Nagios的監控工作都是通過插件實現的,因此,Nagios和Nagios-plugins是服務器端工作所必須的組件。而四個ADDON中

l         NRPE:用來在監控的遠程Linux/Unix主機上執行腳本插件以實現對這些主機資源的監控

l         NSCA:用來讓 被監控的遠程Linux/Unix主機主動將監控信息發送給Nagios服務器(這在冗餘監控模式中特別要用到)

l         NSClient++:用來監控 Windows主機時安裝在Windows主機上的組件

l         NDOUtils:則用來將Nagios的配置信息和各event產生的數據存入數據庫,以實現 這些數據的快速檢索和處理

這四個ADDON(附件)中,NRPE和NSClient++工作於客戶端 ,NDOUtils工作於服務器端,而NSCA則需要同時安裝在服務器端和客戶端

  

  Nagios 架構圖

  nagios在企業級應用的位置

1.6.3       Nagios安裝

1.6.3.1          nagios安裝

這裏我用的是root用戶進行安裝的,一般情況下最好用別的sudo用戶,原因很簡單,安全。

# groupadd nagios &&useradd nagios -g nagios -M –r //建立nagios的運行用戶和組
# tar -zxf ./ nagios-2.10.tar.gz
# cd ./nagios-2.10
# ./configure –prefix=/usr/local/nagios
# make all && make install
# chown –R nagios:nagios /usr/local/nagios //把nagios文件夾給nagios用戶
# make install-init && make install-commandmode && makeinstall-config //分別安裝nagios啓動腳本、cgi文件和config文件。
# ls /usr/local/nagios/ //如果安裝目錄下有etc、bin、 sbin、 share、 var則說明nagios安裝成功。

1.6.3.2           nagios插件(nagios-plugins)安裝

Nagios是一個框架,真正的所有的監控工作全部是由nagios插件來完成的,而nagios只是做一個彙總,把監控結果整理的明瞭之後呈現到用戶面前。(如果語言比較N的話,可以嘗試自己寫nagios插件)
# tar -zxf ./nagios-plugins-1.4.10.tar.gz
# cd ./nagios-plugins-1.4.10
# ./configure –prefix=/usr/local/nagios //注意這裏要把安裝目錄與nagios安裝目錄相同
# make && make install //安裝完畢之後回在/usr/local/nagios/下產生一個libexec的目錄
# ls /usr/local/nagios/libexec //裏面有很多插件,安裝完成

1.6.3.3           配置

l         配置apache

因爲我們最終是通過apache訪問nagios的,直接訪問nagios目錄的是apache的執行用戶,很多朋友安裝好之後抱怨說不能夠通過web執行cgi程序,其實最主要的原因就是這一環節,網上有很多的文檔都沒有說明這個問題。
Apache的安裝省略。
# useradd apache -g daemon -M -r //爲apache添加執行用戶
# vi /usr/local/apache/conf/httpd.conf //編輯apache配置文件
找到 User xxx
Group xxx
改爲 User apache
Group daemon
在文件的最後添加:
####################
#setting for nagios#
####################
ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin
<Directory "/usr/local/nagios/sbin">
AuthType Basic
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user
</Directory>
Alias /nagios /usr/local/nagios/share
<Directory "/usr/local/nagios/share">
AuthType Basic
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "nagios Access"
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user
</Directory>

保存退出
# usermod –G nagios apache //把apache的執行用戶添加到nagios組裏
//這一步非常重要,是能在web頁面執行cgi的關鍵
# /usr/local/apache/bin/htpasswd –c /usr/local/nagios/etc/htpasswd test
//爲訪問nagios用戶設置權限,這裏我們建立了一個用戶test,之後提示輸入兩次密碼(我設置的是123456)。

l         nagios配置文件

“大家看到了,nagios安裝起來非常簡單,但是很多人都覺得nagios很複雜,原因就是nagios的配置文件太多,太複雜。”網上的文檔都這麼說,但是我卻不怎麼複雜,建立過一次文件之後估計就能輕車熟路了。
如 果你想監控一臺主機,首先要配置nagios的主體配置文件,譬如執行用戶,web刷新頻率,cgi的執行權限等等,然後1、你必須在 nagios裏把主機定義好;2、要對這個主機監控什麼服務,針對每一臺主機定義服務;3、如果服務出錯了要及時通知,定義聯繫人;4、我們的監控的時間 段,以及通訊我們的時間段,定義時間;5、如果監控的機器多了,爲了容易管理,我們可以把主機分組,定義主機組;6、監控一個服務,需要用到哪個插件,注 冊插件。比較重要的就這麼些了,下面讓我們一個一個來看。

i. 主體配置文件nagios.cfg
這個文件是nagios的主體配置文件,我們需要修改以下幾個地方:

註釋行:
#cfg_file=/usr/local/nagios/etc/localhost.cfg
去掉以下幾行的註釋:
cfg_file=/usr/local/nagios/etc/contactgroups.cfg //聯繫組配置文件路徑
cfg_file=/usr/local/nagios/etc/contacts.cfg //聯繫人配置文件路徑
cfg_file=/usr/local/nagios/etc/hostgroups.cfg //主機組配置文件路徑
cfg_file=/usr/local/nagios/etc/hosts.cfg //主機配置文件路徑
cfg_file=/usr/local/nagios/etc/hostgroups.cfg //服務組配置文件路徑
cfg_file=/usr/local/nagios/etc/services.cfg //服務配置文件路徑
cfg_file=/usr/local/nagios/etc/timeperiods.cfg //監視時段配置文件路徑

改check_external_commands=0爲check_external_commands=1
//允許在web界面下執行重啓nagios、停止主機/服務檢查等操作

把command_check_interval的值從默認的1改成command_check_interval=10s(或更高,根據自己需求而定)

ii. CGI腳本控制文件cgi.cfg
首先確保use_authentication=1。
修改
default_user_name=test //這裏只能寫一個用戶

authorized_for_system_information=nagiosadmin,test
authorized_for_configuration_information=nagiosadmin,test
authorized_for_system_commands=test //多個用戶之間用逗號隔開
authorized_for_all_services=nagiosadmin,test
authorized_for_all_hosts=nagiosadmin,test
authorized_for_all_service_commands=nagiosadmin,test
authorized_for_all_host_commands=nagiosadmin,test
這裏的test用戶,就是
/usr/local/apache/bin/htpasswd –c /usr/local/nagios/etc/htpasswd test
這個用戶。如果要添加新管理員,執行:
# /usr/local/apache/bin/htpasswd /usr/local/nagios/etc/htpasswd test1
之後把test1用戶添加到上面的cgi.cfg裏的授權用戶後,多個用戶用逗號隔開。

iii. 時間段定義timeperiods.cfg
# vi /usr/local/nagios/etc/timeperiods.cfg
define timeperiod{
timeperiod_name 24x7 //時間段的名稱,這個地方不要有空格
alias 24 Hours A Day,7Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}
這 裏我們定義了一個時間段,每天都是00:00-24:00,這個時間段我們給它取個名字叫24x7。在之後的host和service配置文件裏都會用到這裏定義的時間短,當然我們還可以定義其他的時間短,譬如說再定義一個24x5的時間段。那麼這個文件裏就定義了兩個時間短,我們可以監控用 24x7的,而警報通知用24x5的,當然這只是打個比方。

iv. 聯繫人定義contacts.cfg
# vi /usr/local/nagios/etc/contacts.cfg
define contact {
contact_name lele //聯繫人的名稱,這個地方不要有空格
alias System Administrator
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email [email protected]
}

創建了一個名爲test的聯繫人,下面列出其中重要的幾個選項做說明
service_notification_period 24x7
服務出了狀況通知的時間段,這個時間段就是上面在timeperiods.cfg中定義的.
host_notification_period 24x7
主機出了狀況通知的時間段, 這個時間段就是上面在timeperiods.cfg中定義的
service_notification_options w,u,c,r
當服務出現w—報警(warning),u—未知(unkown),c—嚴重(critical),或者r—從異常情況恢復正常,在這四種情況下通知聯繫人.
host_notification_options d,u,r
當主機出現d¬¬¬¬—當機(down),u—返回不可達(unreachable),r—從異常情況恢復正常,在這3種情況下通知聯繫人
service_notification_commands notify-by-email
服務出問題通知採用的命令notify-by-email,這個命令是在commands.cfg中定義的,作用是給聯繫人發郵件.至於commands.cfg之後將專門介紹
host_notification_commands host-notify-by-email
同上,主機出問題時採用的也是發郵件的方式通知聯繫人
email [email protected]
很明顯,聯繫的人email地址
pager 1338757xxxx
聯繫人的手機,如果支持短信的通知的話,這個就很有用了.
alias是聯繫人別名,address是地址 意義不大.
按照上面的方式簡單的複製修改就可以創建多個聯繫人了.

v. 聯繫人組contactgroups.cfg
# vi /usr/local/nagios/etc/contactgroups.cfg
define contactgroup{
contactgroup_name sagroup //聯繫人組的名稱,同樣不能空格
alias System Administrator Group //別名
members test //組的成員,來自於上面定義的contacts.cfg,如果有多個聯繫人則以逗號相隔
}

vi. 定義被監控主機hosts.cfg
# vi /usr/local/nagios/etc/hosts.cfg
define host {
host_name Nagios-Server //被監控主機的名稱,別帶空格
alias Nagios Server //別名
address 192.168.1.201 //被監控主機的IP地址
contact_groups sagroup //聯繫人組,上面在contactgroups.cfg中定義的sagroup
check_command check-host-alive //監控的命令check-host-alive,這個命令來自commands.cfg,用來監控主機是否存活
max_check_attempts 3 //檢查失敗後重試的次數
check_period 24x7 //檢查的時間段24x7,同樣來自於我們之前在timeperiods.cfg中定義的
notification_interval 50 //提醒的間隔,每隔50分鐘提醒一次
notification_period 24x7 //提醒的週期, 24x7,同樣來自於我們之前在timeperiods.cfg中定義的
notification_options d,u,r //指定什麼情況下提醒,具體含義見之前contacts.cfg部分的介紹
}
通過簡單的複製修改就可以定義多個主機了.

vii. 主機組定義hostgroups.cfg
# vi /usr/local/nagios/etc/hostgroups.cfg
define hostgroup{
hostgroup_name sa-servers //主機組名稱
alias sa Servers //別名
members nagios-server //組的成員主機,多個主機以逗號相隔,必須是上面hosts.cfg中定義的
}

viii. 監控服務定義services.cfg
這 部分是整個監控系統的核心部分. 用nagios主要是監控一臺主機的各種信息,包括本機資源,對外的服務等等.這些在nagios裏面都是被定義爲一個個的項目(nagios稱之爲服 務,爲了與主機提供的服務相區別,我這裏用項目這個詞),而實現每個監控項目,則需要通過services.cfg文件中定義的命令.
# vi /usr/local/nagios/etc/services.cfg
define service{
host_name nagios-server //被監控的主機,hosts.cfg中定義的
service_description Check Disk //這個監控項目的描述(也可以說是這個項目的名稱),可以空格,我們這裏定義的是監控這個主機是不是存活
check_command check_local_disk!10%!5%!/ //所用的命令,是commands.cfg中定義的,其中!後面跟的是命令後面需要跟的參數,多個參數可以用多個!來追加,這裏 check_local_disk的第一個參數是10%第二個參數是5%
max_check_attempts 3
normal_check_interval 3
retry_check_interval 2
check_period 24x7 //監控的時間段,是timeperiods.cfg中定義的
notification_interval 50
notification_period 24x7 //通知的時間段, ,是timeperiods.cfg中定義的
notification_options w,u,c,r //在監控的結果是wucr時通知聯繫人,具體含義看前文.
contact_groups sagroup //聯繫人組,是contactgroups.cfg中定義的
}
可以看到基本上所有的成員都是已經定義的.同樣的將上面的內容複製修改,就可以定義多個服務。

ix. 插件註冊commands.cfg
# vi /usr/local/nagios/etc/commands.cfg
define command{
command_name check-host-alive
//在hosts.cfg和services.cfg中,check_command所對應的命令名
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100%-p 1
//其中$USER1$是在resource.cfg文件中定義的,代表插件的安裝路徑.就如我們上面看到的那樣$USER1$=/usr/local/nagios/libexec,至於$HOSTADDRESS$,則默認被定義爲監控主機的地址.
}
我 們在services.cfg中定義了對Nagios-Server執行check-host-alive命令,實際上就是執行了 /usr/local/nagios/libexec/check_ping -H 192.168.1.201(Nagios-Server的ip地址)-w 3000.0,80% -c 5000.0,100% -p 1
commands.cfg 默認已經定義了很多這樣的命令,如check_http,check_ftp等,這些命令,我們都可以直接用,但是如果我們要用的命令這裏沒有定義,那麼我們就需要把/usr/local/nagios/libexec下我們需要用得插件,像上面的格式寫到 commands.cfg中,完成插件註冊,之後我們就可以在services.cfg和hosts.cfg裏調用了。
當我們的services.cfg需要調用命令的時候,就在check_command後面對應寫上需要的調用的命令,當命令帶參數時,例如:
define command{
command_name check_local_disk
command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
}
其中$ARG1$是參數一,$ARG2$是參數二,當我們在services.cfg裏調用的時候,check_command應該對應的寫上 check_local_disk!10%!5%!/,這裏的3個參數用!追加.例如:
define service{
host_name nagios-server
//被監控的主機,hosts.cfg中定義的
service_description Check Disk
//這個監控項目的描述
check_command check_local_disk!10%!5%!/
max_check_attempts 3
normal_check_interval 3



}

參數的意義可以運行/usr/local/nagios/libexec check_disk –h得知.

1.6.3.4          啓動

# /usr/local/apache2/bin/apachectl -kstart
//啓動apache。
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
//檢查配置是否有誤。
# /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
//用守護進程在後臺運行nagios或者使用/etc/init.d/nagiosstart(這條命令的前提是,編譯安裝nagios的時候必須執行了make install-init。)

在任意一臺機器上打開網頁192.168.1.201/nagios
輸入用戶名test 密碼123456
登入,就可以看到nagios的真正界面了。

 

1.6.3.5          監控其它機器的本地信息

監控其它機器的本地信息的時候,必須要藉助另外一個插件nrpe,這個插件需要安裝到被監控的機器上。
    工作原理是:插件nrpe在被監控機上開啓一個daemon,通過這個daemon來和監控主機建立一條ssl加密通道,通過這條通道來傳送被監控機的本地信息,達到監控的目的。
裝在被監控機上的daemon就相當於一個nagios的傳遞員,命令行從nagios監控主機發出,然後daemon接受到信息,就會執行這條命令行,執行的方式,其實是和nagios主機是一樣的,所以被監控機上也需要裝一套nagios-plugins插件。
例 如:nagios主機需要監控被監控機的硬盤信息,就會對被監控機發出一條命令說:“我要看你的硬盤信息。”被監控機nrpe的daemon接到這個命 令之後,就會運行一個插件,來檢查被監控機本地硬盤的信息,然後插件把信息反饋到nrpe,nrpe通過ssl通道再把這些信息反饋到nagios主機。
下面讓我們來看看具體來怎麼樣安裝。

1.    需要兩個包:nrpe,nagios-plugins,這兩個包都可以從www.nagios.org上得到。

2.    需要openssl,openssl的安裝過程略

3.    安裝:

  a)首先在被監控機上建立nagios工作的用戶和組
# groupadd nagios && useradd nagios -g nagios -M –r
b) 安裝nagios-plugins插件
# tar zxvf nagios-plugins-1.4.10.tar.gz
# cd ./nagios-plugins-1.4.10
# ./configure --prefix=/usr/local/nagios
# make && make install
c) 更改nagios文件夾所屬用戶和組
# chown nagios:nagios /usr/local/nagios/
# chown -R nagios:nagios /usr/local/nagios/libexec/
d) 安裝nrpe
# tar zxvf nrpe-2.10.tar.gz
# cd ./nrpe-2.10
# ./configure
# make all
# make install-plugin
//安裝check_nrpe插件,在被監控機上安裝這個插僅僅是爲了測試,而這個插件是nagios監控主機需要安裝的,這個插件就是向nrpe的daemon發命令的工具。
# make install-daemon
//安裝daemon到被測試機,等待接受命令。
# make install-daemon-config
//安裝配置文件,所有的daemon所接受到得命令都必須通過這個配置文件才能和插件建立聯繫。
# make install-xinetd
//把nrpe安裝到xinetd腳本內,開機自啓動。

4.    更改配置文件

a)      更改xinetd啓動腳本配置文件。
# vi /etc/xinetd.d/nrpe


# default: on
# description: NRPE (Nagios Remote Plugin Executor)
service nrpe
{
flags = REUSE
socket_type = stream
port = 5666 //服務端口
wait = no
user = nagios
group = nagios
server = /usr/local/nagios/bin/nrpe
server_args = -c /usr/local/nagios/etc/nrpe.cfg --inetd
log_on_failure += USERID
disable = no
only_from = 127.0.0.1 192.168.1.201
//在後面增加監控主機的地址,以空格間隔
}

b)      編輯/etc/services文件,增加NRPE服務
# vi /etc/services
添加:
nrpe 5666/tcp # NRPE

c)       編輯nrpe主配置文件
# vi /usr/local/nagios/etc/nrpe.cfg
把文件裏類似的幾行改成:
command[check_users]=/usr/local/nagios/libexec/check_users -w 4 -c 6
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 25,20,15
command[check_disk]=/usr/local/nagios/libexec/check_disk -w 10% -c 5% -p / -uGB
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 2 -c 5 -sZ
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 120 -c 150

這樣就完成了被監控機上的插件註冊。

 

5.    測試

a) 重啓xinetd服務
# /etc/init.d/xinetd restart
b) 把xinetd服務改爲開機自啓動
# chkconfig --level 3 xinetd on
c) 測試nrpe安裝是否成功
# /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1
//如果顯示:NRPE v2.10 則代表安裝成功。

6.    在nagios監控主機上安裝check_nrpe插件

# tar zxvf nrpe-2.10.tar.gz
# cd ./nrpe-2.10
# ./configure
# make all
# make install-plugin


安裝結束後,測試
/usr/local/nagios/libexec/check_nrpe -H 192.168.1.111
//如果顯示:NRPE v2.10 則代表安裝成功。

 

7.    在nagios監控主機註冊check_nrpe插件

 #vi /usr/local/nagios/etc/commands.cfg
找個合適的地方添入:
# 'check_nrpe' command definition
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

8.    在services.cfg裏添加服務

 defineservice {
host_name www.asiacom-online.com
//前提是我必須在hosts.cfg裏定義過此主機!!!
service_description Check Disk
check_period 24x7
max_check_attempts 3
normal_check_interval 3
retry_check_interval 2
check_period 24x7
contact_groups sagroup
notification_interval 50
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_disk
//!後面跟的參數就是在被監控機器上的nrpe.cfg裏command[check_disk]方括號內的內容.
}

要監控別的服務只需要複製粘貼.

9.    重新啓動nagios服務

  a)檢查
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
b) 重啓
# /etc/init.d/nagios restart

1.6.3.6          根據自己的需要添加主機,服務,註冊插件

 最艱難的部分完成了,剩下的工作就只是複製粘貼了.我們根據自己的需要,爲了管理的方面,還可以把服務分組,編輯/usr/local/nagios/etc/servicegroup.cfg,具體請參考官方說明文檔.

注:
一個服務一定屬於一臺被監控機,一臺被監控機一定屬於一個機器組.
一個服務或被監控機的check_command

一定要在commands.cfg裏註冊.

另外可參見 :http://kerry.blog.51cto.com/172631/107831

 

1.7    Cacti和Nagios整合

說整合其實是假的,表面上的,cacti和nagios還是以他們原來的方式工作,ndo負責將nagios收集的數據存放在數據庫中,cacti的NPC插件會從數據庫中區數據,並且在cacti的npc標籤中展現

在整合cacti和nagios之前先要安裝一些軟件

1.7.1      安裝ndoutils

tar –xvf ndoutils-1.4b9.tar.gz

./configure      //沒有報錯就說明沒有什麼問題。然後不要make && make install

cd ndoutils-1.4b9/src

cp file2sock log2ndo ndo2db-3xndomod-3x.o /usr/local/nagios/bin/

注意:ndo2db和ndomod後面的數字是表示nagios的板本,考的時候要對應好了。

cd ndoutils-1.4b9/config

cp ndo2db.cfg-sample ndomod.cfg-sample/usr/local/nagios/etc/ndoutils/

注意:nagios下的ndoutils這個目錄是我自己建的,便於管理。

配置文件考完後,把它改名爲ndo2db.cfg,ndomod.cfg

到此ndoutils安裝完成。

 

1.7.2       配置ndoutils

修改一下ndo2db.cfg這個文件。只要修改四個地方。

 

只要修改一下數據庫名,數據庫用戶,數據庫存密碼,生成的表。

注意:db_name寫的是cacti的數據庫,也可以寫其它的,可是到後面裝npc的時候,在cacti裏面看到的nagios是Off的。

然後在nagios.cfg裏面配置一下ndomod。

 

event_broker_options=-1 //nagios-3.2.3默認是開啓的。

broker_module=/usr/local/nagios/bin/ndomod-3x.oconfig_file=/usr/local/nagios/etc/ndoutils/ndomod.cfg

到此ndoutils就安裝好了。現在來啓動。

/usr/local/nagios/bin/ndo2db-3x -c/usr/local/nagios/etc/ndoutils/ndo2db.cfg

這裏注意一下,啓動後看一下tail –f /var/log/message看到沒有報錯,說明配置都是正確的。如果看到報錯修改後重啓ndo2db-3x,一定

要把/usr/local/nagios/var/下的ndo.sock刪除掉然後運行上面的命令,才能重啓成功,不然會報它已經啓動過了。

1.7.3        安裝npc

tar –xvf npc-2.0.4.tar.gz  //解壓後把npc目錄考到cacti/plugins目錄下並給相應的擁有者和權限。

cp –R npc /var/www/html/cacti/plugins

然後就來設置了

首先看一下cacti裏面的插件管理有沒有開,沒有開的開啓一下

UserManagement-&gt;admin-&gt;Plugin Management  勾上保存一下就行了。

然後在Plugin Management-&gt;Npc安裝一下後,激活就可以用了。

在然後在Settings-&gt;Npc

這樣npc就安裝和設置好了。到npc下看一下有沒有數據。

1.7.4       其他插件安裝

其他插件的安裝和NPC類似。

請參見:

cacti monitor、settings、thold插件的安裝  :

http://lihuipeng007.blog.163.com/blog/static/1210843882011415447882/

配置cacti-plugins-arch以及settings插件、thold報警插件:

http://skyou.blog.51cto.com/2915693/548557

 

1.8    參考資料

l        cacti安裝

http://lihuipeng007.blog.163.com/blog/static/1210843882011317115251671/

 

l        Nagios全攻略

http://yahoon.blog.51cto.com/13184/41893

http://viong.blog.51cto.com/844766/288278

http://holy2010.blog.51cto.com/1086044/325434

 

Nagios監控與原理

http://blog.sina.com.cn/s/blog_72e339cd01011s6b.html

http://erdp.iteye.com/blog/1184484

 

明確了在nagios安裝過程中監控機和被監控機應該安裝的軟件或插件

http://hi.baidu.com/fengqixuan/blog/item/d27a23f3d55e1243342acc0c.html

 

Nagios通過ssh監控linux客戶端

http://510621028.blog.51cto.com/714732/831640

 

Nagios短信報警

hi.baidu.com/novv/blog/item/72fc983d76282809bba1675d.html

 

Nagios中文文檔

http://nagios-cn.sourceforge.net/nagios-cn/profession.html

 

Cacti+Nagios完全攻略(三)spine及最新補丁的安裝:

http://viong.blog.51cto.com/844766/477235/

原文有這麼一段話:

本來不打算安裝spine的,就使用cmd.php來完成數據採集,可是後來發現cmd.php採集存在很大的延遲,執行效率太低了。兩廂比較了一下,從添加device好到設備up,spine只需要不到一分鐘,而cmd等的時間較長,超過10分鐘。
當設備down後 2分鐘之內spine可以發出alert,而cmd可能需要10分鐘以上。
所以還是要使用spine

 

http://hi.baidu.com/hanyan_007/blog/item/770472f5df00b9c9f2d38594.html

spine是一個基於C語言的,非常快速的輪詢引擎。它是默認的cmd.php的可選替代。
如果決定使用它的話,需要自己來顯式的安裝和配置。cacti本身並不包含該引擎。
安裝Spine的最簡單的方法就是使用rpm或者使用ports。如果使用yum來進行安裝,需要添加rpmforge的軟件倉庫。

 

被監控機需要安裝 nrpe-plugin和nrpe-deamon,nagios-plugin

監控機和被監控機都需安裝nagios-plugins

被監控機和監控機

http://kerry.blog.51cto.com/172631/107831

 

l        Cacti 和 Nagios 整合

http://hi.baidu.com/zhang_yunxiao/blog/item/c9d0dbf15d8f5542242df2cc.html

http://blog.sina.com.cn/s/blog_4e424e2101000b5y.html

http://blog.chinaunix.net/uid-20384269-id-3043290.html

 

在整合前需要安裝的一些軟件

http://huangyu.blog.51cto.com/1021686/699819

 

整合一定要用Cacti創建的數據庫

注意最後要修改nagios.cfg

需增加 broker-moduler=/usr/local/nagios/bin… 

參考http://huangyu.blog.51cto.com/1021686/699819

 

        另外安裝 Cacti+Nagios+NPC過程可以參考

http://jianfei.dushitao.com/?p=255

這個很重要,可以做重要指導,以便理解yum安裝與./configure安裝結合時的軟件安裝方法

 

NPC (nagios forcacti)

            NPC中的nagios總是 off的解決方法

必須保證/usr/local/nagios/bin/ndo2db-3x   -c   /usr/local/nagios/etc/ndo2db.cfg

 

Cannot find mysql header file 的解決方法:

安裝mysql-devel

同時保證在 /usr/local/nagios/etc/ndo2db.cfg文件中 broker-moduler=/usr/local/nagios/bin…

參見http://huangyu.blog.51cto.com/1021686/699819

 

NPC頁面空白:http://luozhaoyu.iteye.com/blog/1383455

很多都建議安裝php-json,但RHEL6.2中的php-common就已經包括了php-json

 

cacti plugins下載地址

http://docs.cacti.net/templates

 

2.  進度報告

2.1    基本監控運行正常

包括

    CPU使用率

    CPU負載

    內存使用率

    磁盤空間使用率

    磁盤I/O

    服務器網絡資源使用率

    服務器進程監控

2.2    郵件報警可用

2.3    短信報警正在測試(主要是短信貓,其他不建議使用)

2.4    細粒度的監控需進一步研究   

5分鐘以下監控/實時監控報警


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章