Cacti部署

来源:http://www.cnblogs.com/xiaocheche/archive/2017/10/28/7748502.html
-Advertisement-
Play Games

1>監控概述 通常運維人員在一個企業當中所需要管理一臺或者多台伺服器,或者甚至更多,特別是BAT公司或者門戶級別的公司,一個人管理的伺服器可能上百甚至上千台 而在這些管理的過程當中,作為運維人員我們需要知道我所管理的每一個伺服器所運行的詳細狀態,其中包括,物理資源的消耗狀態(CPU 記憶體 硬碟 IO ...


 

 

 

   1>監控概述            

          通常運維人員在一個企業當中所需要管理一臺或者多台伺服器,或者甚至更多,特別是BAT公司或者門戶級別的公司,一個人管理的伺服器可能上百甚至上千台                           而在這些管理的過程當中,作為運維人員我們需要知道我所管理的每一個伺服器所運行的詳細狀態,其中包括,物理資源的消耗狀態(CPU 記憶體 硬碟 IO 等等)以及網                          絡帶寬和每一個伺服器上所運行的每一個服務所在某一個時段當中的某一個時刻所有運行的狀態,能夠清晰地展示給我們運維人員觀看,而且的話當這個服務狀態出現                          問題之後能給我們的運維人一個非常直接的提示或者說告警信息,甚至可以去嘗試去修複這個伺服器的故障的狀態,我們把它稱為監控系統,各位可想而就這麼一個監控                        系統給我們的運維工作帶來多大的便捷性!

      2>常見的監控開源工具

      1)Cacti概述

          cacti只是一個圖形展示工具.其實就是一堆(php)腳本和RRDTool繪圖工具;

          這些PHP腳本能調用這個工具(rrdtool)來實現數據的獲取存儲和保存以及通過圖形來展示,只不過展示的時候CACTI作為前端來實現的,而且展示這些數據,數                            據的類型必須是跟時間序列相關的數據才可以; 什麼是時間序列? 比如說:我想探測1天當中早上8點最高溫度是多高,最低溫度是多高,早上9點最高溫度是多高,                           最低溫度是多高,那這個時間數據,根據我們時間的向後走動、向前扭轉而有了不同的數據走勢這麼一種數據時間,我們把它稱為時間序列數據。如果我們想探測一                             個伺服器的埠是不是線上的話。你一想一想80埠是不是線上、8點是不是線上,9點是不是線上、11點是不是線上,這個時間序列有關係沒有?那麼它只有兩種狀                           態,要麼線上,要麼不再線,不再線的話時間序列還有沒有時間呢?是不是就沒有了?那麼因此通過cati來展示這種非時間序列或者意義不大的數據的走勢,那麼它就                           不是cati的優勢所在了.也不是cati的特點;這個時候就需要另外一種工具來實現呢。這個工具叫做Nagios.

      2)Nagios 概述

                Nagios 專門就是用來監控服務的簡單狀態。比如說是不是線上?那麼線上就是online,不再線就offline 或者是正在從offline 恢覆成online的過程當中,比如說                               本來我的服務是ON的突然之間變成了OFF了。那很顯然是不是發生了狀態轉換了?一旦發生狀態轉換以後我們的Nagios可以自動探測的到這個狀態,而且Nagios可                             以根據自己強大的報警功能給管理員發送告警信息.所以我們說Nagios是一個狀態監控工具,而Cacti是一個時間序列數據的展示工具.所以很多公司為了實現監控功                                 能。將這兩種工具結合一起來一起使用。

       3)Zabbix

          那麼隨著科技的發展,互聯技術的高速更新。人們就像這又沒有一種方法,將以上兩種功能集合到一個軟體當中去了?於是乎就出現了我們所謂的Zabbix 。

    3>Cacti協議組成

        Cacti是一套基於PHP,MySQL,SNMP及RRDTool開發的網路流量監測圖形分析工具;

        1)SNMP的工作原理

            那麼首先我們需要先通過一個SNMP來瞭解一個網路監控到底是如何進行的。SNMP的全稱叫做"Simple Network Manangerment Protocol"

        2)SNMP 有三個版本V1 V2 V3

          v1 都是基於communities來實現,它有三種communitie

              (1)read_only

                                  對它只讀--->

                NMS監控端-------------->被監控端

                NMS只針對於被監控端有隻讀的功能

              (2)read_write

                                  對它可寫--->

                NMS監控端-------------->被監控端

                NMS可以命令去控制被監控端做一些事情,比如停止一個服務等。

              (3)trap 捕獲(陷阱)

                        NMS等待--->被監控的通知。

                比如客戶端1被監控端出現故障了,這個時候會通知信息告知NMS,NMS可以捕獲這個信息。

 

         3)一個網路中被監控的對象

              通常網路被監控的對象有哪些類型?

                  (1)、fault Management

                    故障管理,能探測伺服器所發生的故障

                  (2)、Configureation Management

                    每個伺服器上它的配置是否工作正常的。

                  (3)、Accounting Management

                    記賬管理,每一個登陸到伺服器上的用戶是不是都是我們所允許的用戶,這個作為用戶審核使用。

                  (4)、Performance Management

                      性能管理,比如CPU使用多高,記憶體使用了多少?

                  (5)、Secruity Management

                    安全管理系統監控,比如IDS FW等等。

          4)NMS和agent通信流程

            那麼我們知道NMS和agent要基於snmp協議。那麼snmp協議是基於UDP協議的,正常情況下我們的哪一個服務被動的打開埠?是NMS還是agent?並等待                                   其他人的連接?agent應該打開一個埠,隨時等待伺服器發來的請求.

                 

            

          (1)、被監控端(agent)首先被動打開一個UDP 161介面,隨時等待伺服器端的查詢請求;

          (2)、一擔被監控端自己發生故障,它可以向監控端(NMS)發起顯陷阱(trap)通知 對方發送一個trap告訴監控端,老子這裡出大事了,發大水了,出故障了,你                                             快來看看啊,從而及時引起監控端的註意;

          (3)、既然是agent向監控端發送trap信息,那麼監控端是不是也的被動打開一個埠?這個UDP埠為162,當然只還是那句話,只有雙方共同用到trap之後,                                                  監控端才需要打開162。否則是不需要的;

          (4)、但不管怎麼講 他們也是通過IP協議數據報,通過UDP協議進行封裝。IP封裝最終發送給被監控端。被監控端執行以後反饋給監控端,也是個UDP協議。                                                 之所以使用UDP主要是為了實現速度,為了速度考慮。TCP建立雖然可靠,但是需要3次握手,是要很多時間,等你握手握完了,啊,我快掛了,趕緊過                                                 來檢查;手沒握完別人就掛了,更別說採取什行動了,好,這是雙方通信的簡單機制;

      5)SNMP 內置的Communites

        對於SNMP的communite來講任何一個設備或者任何一個主機通常都有兩個內置的Communites,只要我們裝上系統以後啟用了SNMP的功能。就會有這兩個機制。

          (1)      public (只讀) communite

          (2)      private (讀寫的) communite

        再說一遍只要主機啟用了snmp那麼主機機會有兩個預設的communite的,一個是public,一個是private。

        就是我們的MYSQL一樣,裝完之後預設就有一個ROOT用戶,如果不改密碼是不是所有的人都能連接進來?那麼我們的SNMP也是這樣的;

      6)SNMP 當中的MIB庫介紹

        管理信息基礎"(Management Infomation Base)

        我們想通過SNMP去監控一個一個設備,標識每一個設備唯一(oid)的號必須依賴一個叫做MIB subtree的一個庫信息表來實現。MIB信息庫跟DNS一樣是一個到樹形                                結構;

        MIB-II subtree

               

                             

            (1)、比如要監控一個主機跟系統相關的信息,根DNS一樣一層層的往下找,

                 MIB庫當中如何找到這個信息的OID(OID-Object Identifiers)?一個OID是一個唯一的鍵值對,該代理存放這些值並讓它們可用,一個                                                               SNMP管理器(客戶)可以向代理查詢鍵值對中的特定信息;

            (2)、找到跟主機相關的信息為systemA(1) 那麼樹形結構OID為:1.3.6.1.2.1.1 

               

      7)SNMP 命令去獲取OID

        我們可以通過snmp(options)選項可以去獲得oid信息,常用的有四種:

          (1)     get方式

          (2)     getnext方式

          (3)     getbulk方式

          (4)     set方式

                

 

       8)SNMP 安裝包

        net-snmp(agent被監控端)

        net-snmp-utils(主監控端所要用的命令)

               說明:對被監控端我們只要安裝一個net-snmp就可以了,但是主監控端如果想接收agent發送過來的trap信息的話。那麼則將net-snmp的裝上去。如果只                           是 單純的是去獲取被監控端獲取數據的話,那麼主監控端只需要安裝一個net-snmp-utils這個包就好了。

         # yum -y install net-snmp net-snmp-utils

        9)SNMP 實際操作

          環境:10.0.10.201 ,既為監控端又為被監控端

          (1)     查看可以獲取的當前用戶的信息

              # snmpwalk -v 2c -c public localhost

               獲取本地資源所有的信息

              -v 版本為2c

              -c public(communite為public)

                       

                                        

              有三個mib庫位我們提供了信息.但是在ls /usr/share/snmp/mibs/ 下麵有很多mib庫,為甚麼只有3個庫位我們提供了信息呢?          

            (2)     編輯OID範圍可以看到更多的信息.

              # vim /etc/snmp/snmpd.conf

              # /etc/init.d/snmd restart   

                                                          

              這個這個subtee的範圍執定當中,只包含了三個MIB庫當中的部分信息,如果想看到的範圍更廣。我們可以這樣調整。這樣看到範圍就更廣                                

                # snmpwalk -v 2c -c public localhost

            (3)snmpget查看特定OID的資源

              # snmpwalk -v 2c -c public localhost                                  

                     

              # snmpget -v 2c -c public localhost HOST-RESOURCES-MIB::hrSystemUptime.0 查看特定的資源

             (4)定義獲取資源的許可權:

              # vim /etc/snmp/snmpd.conf

              #com2sec notConfigUser  default       public  系統預設是default所有人都可以獲取,很危險,這個位置應該改成主監控端的地址,我這裡主監控端為                                                                                                                                     自己,所有寫127.0.0.1

             com2sec notConfigUser  127.0.0.1       mypublic  communitie可以自己定義名字。通常這個名字在企業裡面會改的很複雜。別人越難猜越好。

              測試一下:# snmpwalk -v 2c -c public 127.0.0.1 是否用可以獲取到呢?如果使用 # snmpwalk -v 2c -c mypublic 127.0.0.1 試試。是否可以獲                                                     取到數據呢?

 2》Cacti相關:        

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

      2. Mysql配合PHP程式存儲一些變數數據並對變數數據進行調用,如:主機名、主機ip、snmp團體名、埠號、模板信息等變數;

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

          

       1>Cacti組成部分

            

               

                       

        Data Retrieval

            Cacti首先要做的工作就是收集數據,cacti使用Poller(輪詢器)收集數據。Poller是操作系統scheduler的擴展,如在類Unix系統中的crontab。現在的IT設施中                                  會有許多不同的設備,如伺服器、網路設備等,cacti主要使用SNMP協議來從遠端的設備上收集數據,所有可以使用SNMP協議的設備都可以被cacti監控;

           Data Storage

           存儲收集到的數據有許多方法,可以使用資料庫、平面文件等,cacti使用的是RDDTool。RRD是Round Robin Database(環形資料庫)的縮寫,RRD用來存                                  儲和顯示時間序列數據,如網路帶寬、機房溫度、伺服器負載等,RRD使用非常緊湊的方式存儲數據,數據不會隨著時間的推移而增大,RRD還可以生成美觀的                                  圖形。這些特性使得cacti沒有存儲需求。RRD也做一席位其他的工作,如RRD會將原始數據與已整合的數據進行合併,以使得歷史數據的存儲節省空間,RRD支                                  持的整合功能包括:AVERAGE, MAXIMUM, MINIMUM和LAST;

           Data Presentation

          Cacti最大的一個特點是內置了RRDTool畫圖功能,將其與通用的web伺服器相結合,可以實現在任意平臺上使用瀏覽器就可以查看監控畫面;

     2>Cacti原理圖  

           

      3>特性

        (1)、採集數據

        (2)、保存數據

        (3)、數據展示

        (4)、數據分析和報警,

      因為Cacti的數據採集的時間是統一的,而且採集的數據項目也是比較多,如果應用大規模網路的,這裡面牽扯到一個併發和伺服器的I/O讀寫。所以cacti不適應於大規                     模;

3》Cacti 服務端安裝

       1>安裝關聯包

          # yum -y install   php php-mysql php-snmp mysql mysql-server net-snmp net-snmp-libs net-snmp-utils php-pdo perl-DBD-MySQL rrdtool

      2>配置SNMP

         #vim /etc/snmp/snmpd.conf

          #將下邊這行中的default

            com2sec notConfigUser  default       public

          #改為:127.0.0.1

            com2sec notConfigUser  127.0.0.1       public

            com2sec notConfigUser  10.0.0.0/16       public

          #將下邊這行中的systemview

            access  notConfigGroup ""      any       noauth    exact  systemview none none

          #改為:all

            access  notConfigGroup ""      any       noauth    exact  all none none

          #將下邊這行的註釋“#”去掉

            view all    included  .1          80

 

      3>重啟snmpd服務

          # /etc/init.d/snmpd  restart

          # chkconfig snmpd on

             

      4>安裝Cacti

        # wget http://www.cacti.net/downloads/cacti-0.8.8b.tar.gz   下載cacti主文件

        # tar -xvf cacti-0.8.8b.tar.gz

        # mv cacti-0.8.8b /var/www/html/cacti

        # chown apache:apahce /var/www/html/cacti/ -R

        # chmod 755 /var/www/html/cacti/ -R

       5>啟動Mysql配置資料庫

        # /etc/init.d/mysqld restart

        # mysql –uroot –p

          > create database cacti default character set utf8;  註意咯。為utf8為否是亂碼

          > grant all privileges on cacti.* to cacti@localhost identified by 'cacti' with grant option;

          > grant all privileges on cacti.* to [email protected] identified by 'cacti' with grant option;

          >use cacti;

          >source /var/www/html/cacti/cacti.sql;

          > flush privileges;

          >quit

      6>修改cacti PHP文件,修改資料庫地址

        #vim /var/www/html/cacti/include/config.php

          $database_type = "mysql";

          $database_default = "cacti";

          $database_hostname = "localhost";

          $database_username = "cacti";

          $database_password = "cacti";

          $database_port = "3306"; 

          # vim /etc/php.ini

            ;date.timezone =

            date.timezone = Asia/Shanghai             

          # crontab –e

            */5 * * * *  /usr/bin/php /var/www/html/cacti/poller.php >/dev/null 2>&1

          # /etc/init.d/crond restart

      7>驗證安裝

        在瀏覽器裡面打開

        http://10.0.0.201/cacti

        (1)然後-> #點“Next”-> #選擇“New Install”,點擊“Next” ->確保所有的路徑都是顯示“FOUND”,沒有“NOT FOUND”的->點擊Finish 完成安裝。

        (2)要求輸入用戶密碼登陸,輸入預設用戶和密碼為:admin 密碼:admin

          第一次登陸要求修改密碼:請輸入新的密碼修改

        (3)登陸成功後。到此界面

              

4》Cacti 客戶端安裝

      1>安裝snmp

        # yum -y install net-snmp

      2>配置snmp

        #vim /etc/snmp/snmpd.conf

        #將下邊這行中的default

          com2sec notConfigUser  default       public

        #改為:127.0.0.1

          com2sec notConfigUser  10.0.0.201       public  修改成cacti伺服器的IP地址

        #將下邊這行中的systemview

          access  notConfigGroup ""      any       noauth    exact  systemview none none

        #改為:all

          access  notConfigGroup ""      any       noauth    exact  all none none

        #將下邊這行的註釋“#”去掉

          view all    included  .1          80

     3>重啟snmp服務

        # # /etc/init.d/snmpd  restart

5》Cacti 的使用

       1>新建一個本地主機

      (1)、選擇Devices

                

         (2)、選擇ADD 添加

              

        

      (3)、輸入信息à然後點擊右下角Create

                    

        (4)、創建成功後如下圖

            

        

        (5)、為監控模板創建圖形文件

                     

      (6)、勾選所有模板,點擊Create

             

        

        (7)、選擇創建圖形的顏色

                     

      (8)、創建成功

                   

      (9)、加入預設樹圖

                 

        (10)、選擇ADD

              

            

        (11)、選擇HOST –〉Create創建    

              

          

          (12)選擇樹圖查看

                  

          

        (13)查看日誌輪詢情況。就是執行計劃任務的情況

                         

           14、輪詢是否報錯。這個將決定狀態是否UP 

                            

       15、如果沒有up,手動執行

          /usr/bin/php /var/www/html/cacti/poller.php  執行一邊輪詢和數據生成.

          生成的數據在:/var/www/html/cacti/rra 裡面

          每次執行輪詢的記錄在/var/www/html/cacti/log 日誌裡面

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 近來在複習防火牆管理工具 iptables 的基本使用方法,涉及到對埠添加或刪除防火牆策略的內容,之前對ssh更改預設埠號及免密碼登錄的方法不熟悉,這次做一個基本的總結防止自己遺忘。 錯誤偏差及其他經驗之處,還望各位多多指出! 系統環境:兩台 RHEL 7 登錄主機:master.domain1 ...
  • 上一節中,我們已經準備好了 SQL Server,那麼接下來,我們要把 ASE 放到容器里了。 首先,新建 Start.ps1,內容如下: Dockerfile: 或許把 AzureStorageEmulator.exe" init 放到 Dockerfile 里也是個好主意,但是這樣每個環境都要 ...
  • 微軟自帶虛擬機Hyper-V使用ubuntu解析度設置 不喜勿噴,謝謝 ...
  • 1.在cmd命令視窗空黑處,單擊滑鼠右鍵——選擇【標記】——單擊滑鼠左鏈拖動選擇要複製的文字,【再按一下Eenter鍵】就完成了命令的複製了。 2.粘貼就更簡單了,視窗內單擊右鍵——選擇【粘貼】,就將剪貼板的文字內容粘貼到視窗游標處了。 ...
  • 在 /etc/profile 文件中,有一段腳本: 這裡的 “點號 + 空格 + 文件” 是什麼含義? 1、如果我們要執行某個文件,但是此文件不可執行,此時我們要用 chmod u+x file_name 來使文件具有可執行許可權2、可是有時我們不想更改此文件的執行許可權,但又想執行此文件,可以採用(點 ...
  • 一、準備工作 1. DiskGenius:分區工具,為 Linux 建立單獨的分區。(Linux 公社下載源) 2. UUI:Universal USB Installer,通用 U 盤安裝器,用來製作一個功能類似 WinPE 的 Linux 系統。在這個 Linux 系統里我們安裝 Ubuntu。 ...
  • 這篇不是專業權威的tmux指南,只是我的一點點使用經驗,更詳盡的資料請google。 tmux 是什麼 先說說tmux是什麼,不要被什麼視窗會話管理嚇到了,工具都是用來解決問題的。 在遠程linux機器開發是每個程式員工作中最常見的場景,不可避免地會遇到問題:一個視窗不夠用!最初我在windows系 ...
  • 在高可用(HA)系統中,當聯繫2個節點的“心跳線”斷開時,本來為一整體、動作協調的HA系統,就分裂成為2個獨立的個體。由於相互失去了聯繫,都以為是對方出了故障。兩個節點上的HA軟體像“裂腦人”一樣,爭搶“共用資源”、爭起“應用服務”,就會發生嚴重後果——或者共用資源被瓜分、2邊“服務”都起不來了;或 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...