CentOS7部署Cacti監控路由器和主機(無坑版)

防僞碼:桃李春風一杯酒 江湖夜雨十年燈php

1、Cacti介紹

一、部署信息

操做系統css

CentOS Linux release 7.5.1804 (Core)  html

Nginxmysql

1.18.0linux

PHPnginx

7.1.33web

MYSQLsql

5.7.30shell

Cacti數據庫

1.2.2

訪問地址

http://222.29.77.84/cacti

用戶名/密碼

admin/admin

部署路徑

/data/www/cacti

二、什麼是Cacti?

Cacti是一套基於PHP,MySQL,SNMP及RRDTool開發的網絡流量監測圖形分析工具。在三大開源工具中,cacti的網絡監控能力是很是強的,經過 snmpget來獲取數據,使用 RRDtool繪畫圖形,並且你徹底能夠不須要了解RRDtool複雜的參數。它提供了很是強大的數據和用戶管理功能,能夠指定每個用戶能查看樹狀結構、host以及任何一張圖,還能夠與LDAP結合進行用戶驗證,同時也能本身增長模板,功能很是強大完善。

Cacti 在英文中的意思是仙人掌的意思,Cacti是一套基於PHP,MySQL,SNMP及RRDTool開發的網絡流量監測圖形分析工具。它經過snmpget來獲取數據,使用 RRDtool繪畫圖形,並且你徹底能夠不須要了解RRDtool複雜的參數。它提供了很是強大的數據和用戶管理功能,能夠指定每個用戶能查看樹狀結構、host以及任何一張圖,還能夠與LDAP結合進行用戶驗證,同時也能本身增長模板,功能很是強大完善。Cacti 的發展是基於讓 RRDTool 使用者更方便使用該軟件,除了基本的 Snmp 流量跟系統資訊監控外,Cacti 也可外掛 Scripts 及加上 Templates 來做出各式各樣的監控圖。

 

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

 

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

 

snmp抓到數據不是存儲在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目錄的rra文件夾下)。rrdtool對數據的更新和存儲就是對rrd文件的處理,rrd文件是大小固定的檔案文件(Round Robin Archive),它可以存儲的數據筆數在建立時就已經定義。關於RRDTool的知識請參閱RRDTool教學。

 

3什麼是SNMP?

snmp(Simple Network Management Protocal, 簡單網絡管理協議)在架構體系的監控子系統中將扮演重要角色。大致上,其基本原理是,在每個被監控的主機或節點上 (如交換機)都運行了一個 agent,用來收集這個節點的全部相關的信息,同時監聽 snmp 的 port,也就是 UDP 161,並從這個端口接收來自監控主機的指令(查詢和設置)。

 

若是安裝 net-snmp,被監控主機須要安裝 net-snmp(包含了 snmpd 這個 agent),而監控端須要安裝 net-snmp-utils,若接受被監控端經過trap-communicate發來的信息的話,則須要安裝net-snmp,並啓用trap服務。若是自行編譯,須要 beecrypt(libbeecrypt)和 elf(libraryelf)的庫。

 

4什麼是RRDtools?

RRDtool是指Round Robin Database 工具(環狀數據庫)。Round robin是一種處理定量數據、以及當前元素指針的技術。想象一個周邊標有點的圓環--這些點就是時間存儲的位置。從圓心畫一條到圓周的某個點的箭頭--這就是指針。就像咱們在一個圓環上同樣,沒有起點和終點,你能夠一直往下走下去。過來一段時間,全部可用的位置都會被用過,該循環過程會自動重用原來的位置。這樣,數據集不會增大,而且不須要維護。RRDtool處理RRD數據庫。它用向RRD數據庫存儲數據、從RRD數據庫中提取數據。

image.png

Cacti整個系統的架構是這樣的:基於SNMP協議,被監控端是服務器,或一些網絡設備,網絡管理工做站,採用Linux(或Freebsd)操做系統,而且安裝Net-SNMP工具,使用RRDTOOL採集數據,存儲數據,並用Cacti調用rrdtool顯示出來。

CACTI採用PHP編寫,基於B/S結構。

image.png

五、Cacti的實例應用

5.1網絡設置

 

5.2主機系統

1)網絡接口流量(進與出的帶寬)

2)監控CPU的負載、內存等等

3)監控磁盤的空間、進程數等等

5.3 cacti常見的監測對象

1)服務器資源:CPU、內存、磁盤、進程、鏈接數等

2)服務器類型:WEB、Mail、FTP、數據庫、中間件

3)網絡接口:流量、轉發速度、丟包率

(4)網絡設備性能、配置文件(對比與備份)、路由數

(5)5)安全設備性能、鏈接數、***數

6)設備運行狀態:風扇、電源、溫度

7)機房運行環境:電流、電壓、溫溼度

六、注意事項

原來本文是以php7.2爲例,後續再使用中發現cacti偶爾會在php7.2下報錯,由於有些函數兼容性問題,因此不建議使用php7.2或php7.3版原本運行cacti。

本文在Centos7.x系統上運行,當前php使用7.1版本,mysql使用5.7版本,注意內存要大於2G!!!

操做以前關閉selinux,關閉防火牆或者放開tcp端口80、330六、9000,udp端口161

firewall-cmd --add-port=80/tcp --permanent

firewall-cmd --add-port=9000/tcp --permanent

firewall-cmd --add-port=3306/tcp --permanent

firewall-cmd --add-port=161/udp --permanent

firewall-cmd --reload

2、Cacti安裝

一、添加epel源

yum install epel-release

二、添加wlnmp一鍵包源

rpm -ivh http://mirrors.wlnmp.com/centos/wlnmp-release-centos.noarch.rpm


三、安裝nginx、php、mysq


yum install wnginx wphp71 wmysql57


四、安裝php擴展及其餘所需依


yum install wphp71-ldap wphp71-snmp wrrdtool wnet-snmp wspine-1.2.2 sendmail

五、設置兩個軟連接

ln -sv /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib64/libmysqlclient.so.20

ln -sv /usr/local/mysql/lib/libmysqlclient.so /usr/lib64/libmysqlclient.so

六、取消被禁用的php函數

vi /usr/local/php/etc/php.ini

找到disable_functions行,刪除shell_exec,exec,popen,保存退出,重啓php服務

/etc/init.d/php-fpm71 restart

七、啓動相關服務

/etc/init.d/nginx restart

/etc/init.d/mysql restart

八、修改MySQL密碼(默認爲空)

修改默認MySQL密碼,建立cacti數據庫,並添加相應權限

mysql -uroot -p

mysql> set password = password('cacti');

mysql> CREATE DATABASE cacti DEFAULT CHARACTER SET utf8;

mysql> GRANT ALL ON cacti.* TO cacti@localhost IDENTIFIED BY 'cacti';

mysql> GRANT SELECT ON mysql.time_zone_name TO cacti@localhost IDENTIFIED BY 'cacti';

mysql> ALTER DATABASE cacti CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

mysql> flush privileges;

mysql> quit

九、加載時區到mysql數據庫

/usr/local/mysql/bin/mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql -uroot -pcacti mysql

十、下載cacti

網絡不佳的狀況下,強烈建議先下載到本地,再上傳到服務器

mkdir -p /data/www

cd /data/www

wget https://www.cacti.net/downloads/cacti-1.2.2.tar.gz

tar xf cacti-1.2.2.tar.gz

mv cacti-1.2.2 cacti

 

十一、修改cacti數據庫配置文件

cd /data/www/cacti/include

vi config.php

$database_type = 'mysql';

$database_default = 'cacti';

$database_hostname = 'localhost';

$database_username = 'cacti';

$database_password = 'cacti';

$database_port = '3306';

$database_ssl = false;

十二、導入cacti.sql

mysql -uroot -pcacti cacti < /data/www/cacti/cacti.sql

touch日誌文件,後續安裝時用的到

touch /data/www/cacti/log/cacti.log

touch /data/www/cacti/log/cacti_stderr.log

1三、設置軟連接

ln -sv /usr/local/rrdtool/bin/rrdtool /usr/local/bin/rrdtool

ln -sv /usr/local/php/bin/php /usr/bin/php

ln -sv /usr/local/snmp/bin/snmpwalk /usr/local/bin/snmpwalk

ln -sv /usr/local/snmp/bin/snmpget /usr/local/bin/snmpget

ln -sv /usr/local/snmp/bin/snmpbulkwalk /usr/local/bin/snmpbulkwalk

ln -sv /usr/local/snmp/bin/snmpgetnext /usr/local/bin/snmpgetnext

ln -sv /usr/local/snmp/bin/snmptrap /usr/local/bin/snmptrap

 

1四、修改cacti目錄權限

useradd cacti

chown -R cacti:cacti /data/www/cacti/

chmod a+w /data/www/cacti/log

chmod a+w /data/www/cacti/cache/boost/

chmod a+w /data/www/cacti/cache/mibcache

chmod a+w /data/www/cacti/cache/realtime

chmod a+w /data/www/cacti/cache/spikekill

chmod a+w /data/www/cacti/log/cacti.log

chmod a+w /data/www/cacti/resource/snmp_queries/

chmod a+w /data/www/cacti/resource/script_server/

chmod a+w /data/www/cacti/resource/script_queries

chmod a+w /data/www/cacti/scripts

1五、修改nginx配置

vi /usr/local/nginx/conf/vhost/demo.conf

server

    {

        listen 80 default_server;

        server_name 222.29.77.101;

        index index.html index.htm index.php;

        root  /data/www;

 

        error_page   500 502 503 504  /50x.html;

 

        #include enable-php56.conf;

        #include enable-php70.conf;

        include enable-php71.conf;

        #include enable-php72.conf;

        #include enable-php73.conf;

#include enable-php74.conf;

 

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

        {

            expires      30d;

        }

 

        location ~ .*\.(js|css)?$

        {

            expires      12h;

        }

 

        access_log  /data/logs/nginx/demo_access.log;

error_log /data/logs/nginx/demo_error.log;

    }

修改root路徑爲root /data/www;,取消php註釋include enable-php71.conf;,修改下server_name爲本機IP,或者本身填個域名,自行hosts,不作過多說明!

1六、重啓nginx服務

nginx -t

/etc/init.d/nginx restart

1七、spine配置

spine是一個基於C語言的,很是快速的輪詢引擎,它是默認的cmd.php的可選替代,若是要使用spine須要單獨的設置

cd /usr/local/spine/etc

cp spine.conf.dist spine.conf

vi spine.conf(修改最底下兩段)

DB_Host localhost

DB_Database cacti

DB_User cacti

DB_Pass cacti

DB_Port 3306

驗證一下

/usr/local/spine/bin/spine

返回如下內容表示成功

SPINE: Using spine config file [spine.conf]

SPINE: Version 1.2.2 starting

SPINE: Time: 0.0407 s, Threads: 1, Devices: 1

1八、進入web安裝

注意:若是訪問有問題,修改後建議清空下瀏覽器緩存,或直接開瀏覽器隱身模式,以防有緩存

http://222.29.77.84/cacti

image.png

image.png

image.png

image.png

這裏須要在my.cnf添加如下參數(注意最後兩個參數若是不添加,後續可能會產生warning),而後重啓MySQL

vim /etc/my.cnf

character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
/etc/init.d/nginx restart

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

3、Cacti使用

3.1、監控網絡設備

建立——新設備

image.png

管理——設備——總交換機

image.png

image.png

服務器執行php /data/www/cacti/poller.php,抓取數據

image.png

查看狀態,UP爲正常

image.png

查看圖表

image.png

image.png

image.png

image.png

3.二、監控Linux主機

建立——新設備

image.png

管理——設備——模塊服務器

image.png

服務器執行php /data/www/cacti/poller.php,抓取數據

image.png

查看圖表

image.png

image.png

image.png

image.png

相關文章
相關標籤/搜索