防僞碼:桃李春風一杯酒 江湖夜雨十年燈php
操做系統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是一套基於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教學。
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)的庫。
RRDtool是指Round Robin Database 工具(環狀數據庫)。Round robin是一種處理定量數據、以及當前元素指針的技術。想象一個周邊標有點的圓環--這些點就是時間存儲的位置。從圓心畫一條到圓周的某個點的箭頭--這就是指針。就像咱們在一個圓環上同樣,沒有起點和終點,你能夠一直往下走下去。過來一段時間,全部可用的位置都會被用過,該循環過程會自動重用原來的位置。這樣,數據集不會增大,而且不須要維護。RRDtool處理RRD數據庫。它用向RRD數據庫存儲數據、從RRD數據庫中提取數據。
Cacti整個系統的架構是這樣的:基於SNMP協議,被監控端是服務器,或一些網絡設備,網絡管理工做站,採用Linux(或Freebsd)操做系統,而且安裝Net-SNMP工具,使用RRDTOOL採集數據,存儲數據,並用Cacti調用rrdtool顯示出來。
CACTI採用PHP編寫,基於B/S結構。
(1)網絡接口流量(進與出的帶寬)
(2)監控CPU的負載、內存等等
(3)監控磁盤的空間、進程數等等
(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 |
yum install epel-release |
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 |
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密碼,建立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 |
/usr/local/mysql/bin/mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql -uroot -pcacti mysql |
網絡不佳的狀況下,強烈建議先下載到本地,再上傳到服務器 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
|
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; |
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 |
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 |
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 |
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,不作過多說明! |
nginx -t /etc/init.d/nginx restart |
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 |
注意:若是訪問有問題,修改後建議清空下瀏覽器緩存,或直接開瀏覽器隱身模式,以防有緩存 http://222.29.77.84/cacti |
這裏須要在my.cnf添加如下參數(注意最後兩個參數若是不添加,後續可能會產生warning),而後重啓MySQL
vim /etc/my.cnf character-set-server=utf8mb4 |
建立——新設備
管理——設備——總交換機
服務器執行php /data/www/cacti/poller.php,抓取數據
查看狀態,UP爲正常
查看圖表
3.二、監控Linux主機
建立——新設備
管理——設備——模塊服務器
服務器執行php /data/www/cacti/poller.php,抓取數據
查看圖表