Cacti1.2.14最新版安裝和配置(詳細版)

 

Cacti的起源與發展現狀

故事要從2001年的某一天說起。
一個叫Ian Berry的中學生還在學習如何使用PHP和MySQL進行編程及功能的實現,那時候他業餘時間為一個名不見經傳的互聯網運營商開發項目,他希望藉助這個項目不僅可以精進自己的編程功力,還可以創建一個新的監控顯示方法,既要比RRDTool容易使用、比MRTG靈活,又要更加容易擴展和調整。
天賦異稟的Ian在自己的不懈努力下,通過使用PHP語言,完成了第一個開源程式的版本。在隨後的幾年中,開源社區的開發愛好者們越發關注這隻「帶刺兒的仙人掌」,並在大家的共同推動下,0.8.6版本在2004年9月13日正式發布。0.8.6版本甚至可以認為是Cacti發展歷史上的里程碑,它褪去了幼稚與粗糙,在全球開發者的細心呵護下開始展露自己成熟之後的迷人魅力,它的執行效率越來越高,經過優化的源程式碼使得Cacti變得越來越靈活,越來越易於擴展。

按照原來Roadmap的計劃,1.0.0版本將會在2013年年底正式發布,但是這個開源項目太火了,大家開始不斷地建立自己的分支版本,不斷在各個版本基礎上開發帶有附加特性的新的子版本,這導致1.0.0版本一直難以統一。預見到這個狀況可能發生,Ian開始在2012年6月份,集中力量重組研發資源配置,開始在提高研發效率、縮短研發周期方面花力氣,直到目前為止官方已更新至1.2.14版本。

一,cacti介紹

1.什麼是Cacti?

Cacti 在英文中的意思是仙人掌的意思,Cacti是一套基於PHP,MySQL,SNMPRRDTool開發的網路流量監測圖形分析工具。它通過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教學。

2,什麼是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)的庫。

3,什麼是RRDtools?

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

Cacti1.2.14最新版安裝和配置(詳細版)

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

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

Cacti1.2.14最新版安裝和配置(詳細版)

Cacti實例應用:

1)網路設置

2)主機系統

(1)網路介面流量(進與出的頻寬)

(2)監控CPU的負載、記憶體等等

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

3)cacti常見的監測對象

(1)伺服器資源:CPU、記憶體、磁碟、進程、連接數等

(2)伺服器類型:WEB、Mail、FTP、資料庫、中間件

(3)網路介面:流量、轉發速度、丟包率

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

(5)安全設備性能、連接數、攻擊數

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

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

二,Cacti安裝和配置

本章基於rpm一鍵包來部署,所用的包組,來自於whsir一鍵包

環境要求

  • CentOS 7.8.2003 (Core)
  • PHP 7.1
  • MariaDB或者Mysql5.7版本以上

1、卸載自帶的mariadb相關服務

yum remove mariadb-libs

2、添加epel源

yum install epel-release

3、添加whsir一鍵包源

rpm -ivh //mirrors.whsir.com/centos/whsir-release-centos.noarch.rpm

4、安裝nginx、php、mysql

yum install wnginx wphp71 wmysql57

5、安裝php擴展及其他所需依賴

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

6、設置環境變數

echo 'export PATH=$PATH:/usr/local/nginx/sbin/:/usr/local/php/bin/:/usr/local/mysql/bin/' >> /etc/profile
source /etc/profile
 

7、設置兩個軟鏈接

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
 

8、取消被禁用的php函數

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

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

/etc/init.d/php-fpm71 restart

9、啟動相關服務

/etc/init.d/nginx start
/etc/init.d/mysql start
/etc/init.d/snmpd start
 

10、修改MySQL密碼(默認為空)*

修改默認MySQL密碼,創建cacti資料庫,並添加相應許可權

mysql -uroot -p
mysql> set password = password('whsir');
mysql> CREATE DATABASE cacti DEFAULT CHARACTER SET utf8;
mysql> GRANT ALL ON cacti.* TO [email protected] IDENTIFIED BY 'blog.whsir.com';
mysql> GRANT SELECT ON mysql.time_zone_name TO [email protected] IDENTIFIED BY 'blog.whsir.com';
mysql> ALTER DATABASE cacti CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
mysql> flush privileges;
mysql> quit
 

11、載入時區到mysql資料庫

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

12、下載cacti

網路不佳的情況下,強烈建議先下載到本地,再上傳到伺服器

mkdir /data/www
cd /data/www
wget //www.cacti.net/downloads/cacti-1.2.14.tar.gz
tar xf cacti-1.2.14.tar.gz
mv cacti-1.2.14 cacti
 

13、修改cacti資料庫配置文件

 
cd /data/www/cacti/include
vi config.php
 
$database_type = 'mysql';
$database_default = 'cacti';
$database_hostname = 'localhost';
$database_username = 'cacti';
$database_password = 'blog.whsir.com';
$database_port = '3306';
$database_retries = 5;
$database_ssl = false;
$database_ssl_key = '';
$database_ssl_cert = '';
$database_ssl_ca = '';
 

14、導入cacti.sql

mysql -ucacti -pblog.whsir.com cacti < /data/www/cacti/cacti.sql

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

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

15、做一些軟鏈,後續安裝用的到

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
 

16、修改cacti目錄許可權

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

17、修改nginx配置

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

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

18、重啟nginx服務

nginx -t
/etc/init.d/nginx restart
 

19、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 blog.whsir.com
DB_Port 3306
 

驗證一下

/usr/local/spine/bin/spine

返回以下內容表示成功

SPINE: Using spine config file [spine.conf]
SPINE: Version 1.2.2 starting
SPINE: Time: 1.0244 s, Threads: 1, Devices: 1

20、進入web安裝

注意:如果訪問有問題,修改後建議清空下瀏覽器快取,或直接開瀏覽器隱身模式,以防有快取

//IP/cacti

默認帳號admin 密碼admin

Cacti1.2.14最新版安裝和配置(詳細版)

第一次登陸後會提示更改密碼,新版本密碼要求有大小寫特殊字元

Cacti1.2.14最新版安裝和配置(詳細版)

設置語言、勾選許可協議,開始安裝

Cacti1.2.14最新版安裝和配置(詳細版)

安裝嚮導檢查,根據檢查結果,自行更改php.ini和my.cnf文件,更改後記得重啟,如相關參數在配置中不存在,手動添加即可

這裡需要在my.cnf添加以下參數(注意最後兩個參數如果不添加,後續可能會產生warning),然後重啟MySQL

vi /etc/my.cnf
[client]
port = 3306
socket = /tmp/mysql.sock
 
[mysqld]
port = 3306
socket = /tmp/mysql.sock
pid_file = /data/mysql/mysql.pid
datadir = /data/mysql
 
 
slow_query_log=off
long_query_time=2
slow_query_log_file=/data/mysql/mysql_slow_query.log
log-error = /data/mysql/error.log
 
skip-external-locking
key_buffer_size = 32M
max_allowed_packet = 100M
max_heap_table_size = 100M
table_open_cache = 1024
sort_buffer_size = 1m
net_buffer_length = 8K
read_buffer_size = 1m
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
thread_cache_size = 16
query_cache_size = 32M
tmp_table_size = 200M
performance_schema_max_table_instances = 500
join_buffer_size = 120M
 
explicit_defaults_for_timestamp = true
#skip-networking
#bind-address = 127.0.0.1
max_connections = 500
max_connect_errors = 2000
open_files_limit = 65535
 
# binlog
log-bin=mysql-bin
binlog_format=mixed
server-id = 100
expire_logs_days = 10
 
# innodb
default_storage_engine = InnoDB
innodb_file_per_table = 1
innodb_data_home_dir = /data/mysql
innodb_data_file_path = ibdata1:64M:autoextend
innodb_log_group_home_dir = /data/mysql/
innodb_buffer_pool_size = 1280M
innodb_log_file_size = 32M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
collation-server=utf8mb4_unicode_ci
innodb_flush_log_at_timeout = 3
innodb_read_io_threads = 32
innodb_write_io_threads = 16
innodb_buffer_pool_instances = 17
innodb_io_capacity = 5000
innodb_io_capacity_max = 10000
 
[mysqldump]
quick
max_allowed_packet = 100M
 
[myisamchk]
key_buffer_size = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M
 
[mysqlhotcopy]
interactive-timeout
 

重啟資料庫

/etc/init.d/mysql restart

Cacti1.2.14最新版安裝和配置(詳細版)Cacti1.2.14最新版安裝和配置(詳細版)Cacti1.2.14最新版安裝和配置(詳細版)Cacti1.2.14最新版安裝和配置(詳細版)Cacti1.2.14最新版安裝和配置(詳細版)Cacti1.2.14最新版安裝和配置(詳細版)Cacti1.2.14最新版安裝和配置(詳細版)Cacti1.2.14最新版安裝和配置(詳細版)Cacti1.2.14最新版安裝和配置(詳細版)Cacti1.2.14最新版安裝和配置(詳細版)Cacti1.2.14最新版安裝和配置(詳細版)Cacti1.2.14最新版安裝和配置(詳細版)

Poller輪詢器配置

spine是一個高速的輪詢器,是cmd.php的替代品,在cmd.php的基礎上,擁有更好的靈活性、速度和並發性。

cacti默認使用的cmd.php進行輪詢,由於我們之前已經安裝好了spine,所以我這裡就更改成spine。

在cacti監控系統中,選擇系統配置→設置→Poller→採集類型選擇spine→保存

將cmd.php改為spine

Cacti1.2.14最新版安裝和配置(詳細版)

到此Cacti就安裝完成

測試檢驗

驗證snmp

使用以下命令驗證snmp能否獲取到本機的數據

[[email protected]192 ~]# snmpwalk -v 2c -c public localhost

如果正常,會返回以下內容

Cacti1.2.14最新版安裝和配置(詳細版)

配置crontab

如果不配置此功能,圖形介面全部會顯示The Cacti Poller has not run yet。

Centos7安裝crontab服務(系統默認一般都自帶此服務)

yum install crontabs -y

配置crontab前,請使用以下命令測試是否可以獲取數據

/usr/bin/php /data/www/cacti/poller.php
//注意後面的poller.php地址,一定找確認地址正確。

Cacti1.2.14最新版安裝和配置(詳細版)

檢查圖形是否已出圖

 

 

原創來源://mefj.com.cn/lur2382.html