1、cacti 監控軟件簡介php
1. cacti是用php語言實現的一個軟件,它的主要功能是用snmp服務獲取數據,而後用rrdtool儲存和更新數據,當用戶須要查看數據的時候用rrdtool生成圖表呈現給用戶。所以,snmp和rrdtool是cacti的關鍵。Snmp關係着數據的收集,rrdtool關係着數據存儲和圖表的生成。mysql
2. Mysql配合PHP程序存儲一些變量數據並對變量數據進行調用,如:主機名、主機ip、snmp團體名、端口號、模板信息等變量linux
3. snmp抓到數據不是存儲在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目錄的rra文件夾下)。rrdtool對數據的更新和存儲就是對rrd文件的處理,rrd文件是大小固定的檔案文件(RoundRobinArchive),它可以存儲的數據筆數在建立時就已經定義。web
2、搭建cacti 監控環境sql
1、搭建環境介紹:數據庫
服務端瀏覽器 |
CentOS服務器 |
*.*.*.*網絡 |
客戶端dom |
任意網絡設備 |
192.168.1.110 |
二、關閉iptables和SElinux
[root@localhost configs]# iptables -F
[root@localhost configs]# setenforce 0
3、cacti 服務端操做:
[root@localhost/]# yum install epel-release //安裝epel擴展源,爲下面安裝cacti作準備
[root@localhost/]# yum install -y httpd php php-mysql mysql mysql-server mysql-devel php-gd libjpeg libjpeg-devel libpng libpng-devel //安裝cacti相關的php、mysql軟件
[root@localhost/]# yum install -y cacti net-snmp net-snmp-utils rrdtool //安裝cacti、net-snmp、rrdtool
這裏cacti的安裝能夠用yum 直接安裝,也能夠本身經過wget 下載tar.gz相關安裝包下載,惟一的區別是yum安裝,在配置cacti.conf文件時,yum是自動生成的,只須要修改裏面相應的參數,下面配置會有說明,這裏簡單的說下經過解壓包安裝時怎麼來手動配置cacti.conf文件。
首先先說明下,若是沒有配置cacti.conf文件,咱們在進入cacti的安裝嚮導時會報錯,URL不正確之類信息。
因此這是必須配置的,網上的文章十有八九都是抄襲,沒有這塊的說明,有的也說的不詳細,主要前期本身在這一塊也是折騰了很久,so特此說明一下:
下面說下如何配置手動配置cacti.conf文件
進入到[root@localhost/]# cd /etc/httpd/conf.d/目錄下
手動重建cacti.conf文件
[root@localhost/]# vi cacti.conf
Alias /cacti/ "/usr/share/cacti/"
<Directory "/usr/share/cacti">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
而後保存退出
這樣配置之後就能夠進入cacti安裝嚮導了。
啓動服務:
[root@localhost/]# /etc/init.d/mysqld start
[root@localhost/]# /etc/init.d/httpd start
[root@localhost/]# /etc/init.d/snmpd start
更改httpd配置文件:
[root@localhost/]# vi /etc/httpd/conf.d/cacti.conf //將配置文件的"Deny from all" 改成 "Allow from all"
[root@localhost/]# /etc/init.d/httpd restart
導入數據建立cacti庫:
[root@localhost/]# mysql -uroot -e "create database cacti"
[root@localhost/]# mysql -uroot -e "grant all on cacti.* to 'cacti'@'127.0.0.1' identified by 'cacti';"
[root@localhost/]# mysql -uroot cacti < /usr/share/doc/cacti-1.1.19/cacti.sql
編輯cacti配置文件:
[root@localhost/]# vi /usr/share/cacti/include/config.php
$database_type ="mysql"; 數據庫名稱
$database_default= "cacti";數據庫名稱
$database_hostname= "127.0.0.1";主機名稱
$database_username= "cacti";數據庫用戶名
$database_password= "cacti";數據庫密碼
$database_port ="3306";
$database_ssl =false;
*注意*:這塊的信息必須和數據用戶信息、密碼對應,負責會報錯:
+---------------------------------------+
| query |
+---------------------------------------+
| User: 'cacti'@'127.0.0.1'; |
| User: 'root'@'127.0.0.1'; |
| User: ''@'localhost'; |
| User: 'cactiuser'@'localhost'; |
| User: 'root'@'localhost'; |
| User: ''@'localhost.localdomain'; |
| User: 'root'@'localhost.localdomain'; |
+---------------------------------------+
$database_type ="mysql"; 數據庫名稱
$database_default= "cacti";數據庫名稱
$database_hostname= "127.0.0.1";主機名稱
$database_username= "cacti";數據庫用戶名
$database_password= "cacti";數據庫密碼
$database_port ="3306";
$database_ssl =false;
存在用戶名密碼不匹配的,參照一下修改:
查看MYSQL數據庫中全部用戶:
mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
+---------------------------------------+
| query |
+---------------------------------------+
| User: 'cacti'@'127.0.0.1'; |
| User: 'root'@'127.0.0.1'; |
| User: ''@'localhost'; |
| User: 'cactiuser'@'localhost'; |
| User: 'root'@'localhost'; |
| User: ''@'localhost.localdomain'; |
| User: 'root'@'localhost.localdomain'; |
+---------------------------------------+
修改密碼,刷新權限:
mysql> grant all on cacti.* to 'cacti'@'127.0.0.1' identified by '321321';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)重啓mysql httpd服務:
在安裝cacti時,有一段報錯
1 |
ERROR: Your Cacti database login account does not have access to the MySQL TimeZone database. Please provide the Cacti database account "select" access to the "time_zone_name" table in the "mysql" database, and populate MySQL's TimeZone information before proceeding. |
解決辦法:登陸mysql,執行如下內容
mysql> GRANT SELECT ON mysql.time_zone_name TO cacti@localhost IDENTIFIED BY 'cactiwhsir'; mysql> flush privileges; |
而後發現又報錯
ERROR: Your MySQL TimeZone database is not populated. Please populate this database before proceeding. 解決辦法:登陸mysql,執行如下內容 |
mysql_tzinfo_to_sql /usr/share/zoneinfo/Asia/Shanghai Shanghai | mysql -u root -p mysql
調整httpd配置,將cacti源碼目錄做爲網站根目錄
Vi/etc/httpd/conf/httpd.conf
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/usr/share/cacti/"
3、web訪問cacti並安裝
上面三步按照系統默認步驟點擊;
第一次進入cacti輸入管理密碼時賬號和密碼均爲admin,輸入後系統默認要求用戶強制更改密碼;
4、執行poller.php, 生成圖形,加入計劃任務
[root@localhost/]# /usr/bin/php /usr/share/cacti/poller.php
OK u:0.01 s:0.02 r:0.67
OK u:0.01 s:0.02 r:0.67
OK u:0.01 s:0.02 r:0.71
OK u:0.01 s:0.02 r:0.71
OK u:0.01 s:0.02 r:0.78
OK u:0.01 s:0.02 r:0.78
OK u:0.01 s:0.02 r:0.84
OK u:0.01 s:0.02 r:0.84
OK u:0.01 s:0.02 r:1.00
OK u:0.01 s:0.02 r:1.00
06/17/2015 02:53:39 AM - SYSTEM STATS: Time:1.2623 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:5 RRDsProcessed:5
[root@localhost/]# crontab -e //加入cron服務,讓圖片上的流量定時變更
*/5 * * * * /usr/bin/php /usr/share/cacti/poller.php
5、如下是在客戶端:
[root@hpf-linux mysql]# yum install -y net-snmp lm_sensors
[root@hpf-linux/]# vi /etc/snmp/snmpd.conf //修改syslocation以及syscontact, 其中syslocation 能夠寫監控客戶機的ip,syscontact寫管理員郵箱
syslocation 192.168.1.110
syscontact Root aming@linux.com
同時在配置文件內按如下修改,若不修改則會形成在添加網卡檢測時會沒法找到網卡選項;
view systemview included .1.3.6.1.2.1.1
修改成:
view systemview included .1.3.6.1.2.1
[root@hpf-linux/]# /etc/init.d/snmpd start
正在啓動 snmpd: [肯定]
6、瀏覽器下配置cacti 檢測
進入瀏覽器登陸cacti管理後臺,點console , 再點New Graphs,在右上角點」Create New Host「;
Description 寫監控客戶機的名字或自定義
Hostname 寫被監控客戶機ip
Host Template 選ucd/net SNMP Host
SNMP Version 選Version 2
點右下角的create
出現snmp的介紹信息後,點右上角的」CreateGraphs for this Host「;
在下面框中選擇要監控的硬件信息或者網卡,好比選擇eth0,eth1, 在最右側小方塊裏打對勾,而後點右下角的create;
Graph Types: 再選擇 Graph Template Based,在下面的框中,選擇你要監控的項目,好比Unix- Load Average,在右側小方塊中打對勾,而後點右下角的create;
點左側的Graph Trees ,選中」DefaultTree「,點右上角的Add;
Tree Item Type 選擇 」Host「,Host 選擇咱們剛剛增長的那個機器ip,點右下角的create;
點左上角的Graphs按鈕 ,在左側能夠看到,Defaut Tree下面已經增長了咱們剛剛添加的主機,圖形一開始不會那麼快出來,要等一小會才能夠。
********************************************************************************************************
不出圖,主機狀態爲unkonwn,snmp等其餘信息都正常
多是時間問題引發的,這時候能夠看看cacti的日誌,注意看開始時間和結束時間(這是因爲系統每過10分鐘會和時間服務器同步一次時間)。
這樣會致使數據庫記錄poller的執行時間出問題
這時候查看下poller的始終時間,始終時間必定要正確這樣會致使poller進程中止工做,直到系統時間超過了start_time,poller進程纔回開始工做,圖像才能出來!這裏要特別說明下:不能簡單地修改數據庫poller_time表裏的時間,由於數據庫裏面還有好多表也記錄了採集各類數據的時間。
因此解決辦法有兩個:
1 等系統時間超過start_time(過了下午12點10),一切恢復正常(若是你有耐心 )。
2 若是如今系統的時間不正確先把系統時間修改正確,而後刪除/usr/share/cacti/rra下面的全部文件,最後強制執行poller程序從新生成/usr/share/cacti/rra下面的全部文件。操做過程以下:
[root@zz cacti]# rm -rf /usr/share/cacti/rra/*
[root@zz cacti]# /usr/bin/php /usr/share/cacti/poller.php --force
OK u:0.00 s:0.00 r:0.05
OK u:0.00 s:0.00 r:0.05
OK u:0.00 s:0.00 r:0.07
OK u:0.00 s:0.00 r:0.07
OK u:0.00 s:0.00 r:0.11
OK u:0.00 s:0.00 r:0.11
OK u:0.00 s:0.00 r:0.17
OK u:0.00 s:0.00 r:0.17
OK u:0.00 s:0.00 r:0.27
OK u:0.00 s:0.00 r:0.27
OK u:0.00 s:0.00 r:0.29
OK u:0.00 s:0.00 r:0.29
OK u:0.00 s:0.00 r:0.30
OK u:0.00 s:0.00 r:0.30
OK u:0.00 s:0.01 r:0.31
OK u:0.00 s:0.01 r:0.32
OK u:0.00 s:0.01 r:0.34
OK u:0.00 s:0.01 r:0.34
10/28/2016 11:58:02 AM - SYSTEM STATS: Time:0.4926 Method:cmd.php Processes:1 Threads:N/A Hosts:4 HostsPerProcess:4 DataSources:13 RRDsProcessed:9
10/28/2016 11:58:02 AM - WEATHERMAP: Poller[0] Weathermap 0.97a starting - Normal logging mode. Turn on DEBUG in Cacti for more information
10/28/2016 11:58:02 AM - WEATHERMAP: Poller[0] STATS: Weathermap 0.97a run complete - Fri, 28 Oct 16 11:58:02 +0800: 0 maps were run in 0 seconds with 0 warnings.
注意必定要先刪除usr/share/cacti/rra/下的全部文件在執行
/usr/bin/php /usr/share/cacti/poller.php --force,否則有些rra會報時間錯誤!等一會久違的圖像就出來啦...