類別:原創 服務器php
本文參考:html
《使用cacti + snmp 實現對apache 、mysql 、 nginx 的監控的安裝和配置 》http://jedy82.blog.51cto.com/425872/888803mysql
其它內容:linux
關於插件安裝:《cacti 0.8.8b 插件安裝及郵件 短信告警》http://jedy82.blog.51cto.com/425872/1569820nginx
第一:說明sql
目的: 安裝cacti並配置。數據庫
其它說明:apache
操做系統爲:centos 6.6 64位,windows
cactiserver的ip爲:192.168.10.112centos
第二:本例操做環境
[root@i-tcz0hdhc~]# yum update -y
[root@i-tcz0hdhc ~]# uname -a
Linux i-tcz0hdhc 2.6.32-431.29.2.el6.x86_64#1 SMP Tue Sep 9 21:36:05 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
[root@i-tcz0hdhc ~]# more/etc/redhat-release
CentOS release 6.6 (Final)
[root@i-tcz0hdhc ~]#
第三:服務器安裝和基本配置
1、 安裝必須的軟件包
爲求方便,本文全部軟件所有使用yum 方式安裝。
檢查軟件安裝
[root@i-tcz0hdhc ~]# yum install -y httpd mysql mysql-server cacti php net-snmp crontabs
Loaded plugins: fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
*base: mirrors.yun-idc.com
*epel: mirrors.yun-idc.com
*extras: mirrors.yun-idc.com
*rpmfusion-free-updates: mirror.bjtu.edu.cn
*rpmfusion-nonfree-updates: mirror.bjtu.edu.cn
*updates: mirrors.neusoft.edu.cn
Package httpd-2.2.15-39.el6.centos.x86_64already installed and latest version
Package mysql-5.1.73-3.el6_5.x86_64already installed and latest version
Package mysql-server-5.1.73-3.el6_5.x86_64already installed and latest version
Package cacti-0.8.8b-7.el6.noarch alreadyinstalled and latest version
Package php-5.3.3-38.el6.x86_64 alreadyinstalled and latest version
Package 1:net-snmp-5.5-50.el6_6.1.x86_64already installed and latest version
Package crontabs-1.10-33.el6.noarchalready installed and latest version
Nothing to do
[root@i-tcz0hdhc ~]#
[root@i-tcz0hdhc ~]# chkconfig httpd on
[root@i-tcz0hdhc ~]# chkconfig mysqld on
[root@i-tcz0hdhc ~]# chkconfig crond on
[root@i-tcz0hdhc ~]# chkconfig snmpd on
[root@i-tcz0hdhc ~]# chkconfig
[root@i-tcz0hdhc ~]#
2、基本配置
a. 修改httpd配置
[root@i-tcz0hdhc ~]# vi/etc/httpd/conf/httpd.conf
修改/etc/httpd/conf/httpd.conf將ServerName改爲ServerName :80
#ServerName www.example.com:80
ServerName :80
[root@i-tcz0hdhc ~]# service httpd restart
[root@i-tcz0hdhc ~]#
b. 驗證php支持
[root@i-tcz0hdhc ~]# vi/var/www/html/test.php
<?php
phpinfo()
?>
[root@i-tcz0hdhc ~]#
瀏覽器打開以下:http://192.168.10.112/test.php
3、cacti配置
a. 修改cacti配置
[root@i-tcz0hdhc ~]# vi/etc/httpd/conf.d/cacti.conf
更改cacti的訪問權限,根據安裝的httpd的版本決定修改
<Directory /usr/share/cacti/> \\ 這是yum方式安裝後的cacti的主目錄
<IfModule mod_authz_core.c>
# httpd 2.4
Require host localhost
</IfModule>
<IfModule !mod_authz_core.c>
# httpd 2.2
Order deny,allow
Deny from all
#Allow from localhost \\ 註釋掉
Allow from all \\ 增長
</IfModule>
[root@i-tcz0hdhc ~]# service httpd restart
[root@i-tcz0hdhc ~]# cd /usr/share/cacti/
[root@i-tcz0hdhc cacti]# vi include/config.php
修改數據庫配置
$database_type = "mysql"; \\ 數據庫類型(默認)
$database_default ="cacti"; \\ 數據庫名
$database_hostname ="localhost"; \\ 數據庫地址(默認)
$database_username ="cacti"; \\ 數據庫用戶名
$database_password ="cactipass"; \\ 數據庫密碼
$database_port = "3306"; \\ 數據庫端口 (默認)
$database_ssl = false;
[root@i-tcz0hdhc cacti]#
b. 建立cacti庫
[root@i-tcz0hdhc ~]# service mysqld restart
[root@i-tcz0hdhc ~]# mysql -u root -p
password: 輸入數據庫管理員的密碼
mysql> create database cacti;
mysql> use cacti;
mysql> grant all on cacti.* to cacti@localhost identified by"cactipass";
mysql> flush privileges;
mysql> \q
[root@i-tcz0hdhc ~]#
c. 導入cacti數據庫
[root@i-tcz0hdhc ~]# mysql -u cacti -pcactipass cacti </usr/share/doc/cacti-0.8.8b/cacti.sql
[root@i-tcz0hdhc ~]# mysql -u cacti -pcactipass cacti
mysql> show tables; \\ 查看導入的表,應該會列出表
mysql> \q
[root@i-tcz0hdhc ~]#
d. 新建自動化任務
[root@i-tcz0hdhc cacti]# crontab -l
*/5 * * * * /usr/bin/php /usr/share/cacti/poller.php> /dev/null 2>&1
[root@i-tcz0hdhc cacti]#
此處網上說是在php 前面加上 cacti這個用戶 讓這個用戶來執行,但本人試了好屢次都沒成功 因此只能用root用戶來作了。
第四:使用cacti
本處參照了:
http://hi.baidu.com/xymclone/blog/item/19726fd3c7465b1c3bf3cf3c.html
http://linux.chinaunix.net/techdoc/net/2006/10/03/941444.shtml
1、初始化cacti
在本地瀏覽器裏輸入 http://192.168.10.112/cacti
按照提示 一直進行下一步,這裏的 rrdtool 能夠選1.4,最後點Finish 。
根據提示默認用戶名/密碼:admin/admin。第一次進入會要求更改密碼。Console→ Configuration → Setting → Genneral → SNMP Defaults → SNMP Community
確認這裏的community 的名稱是以前咱們設置的 public,固然這裏的community 會做爲以後新建的Devices的默認的community。
2、新建監控主機(snmp客戶端安裝請參考文後的附言部分)
第一步建立主機 management → devices → add →devices[new]
a. Descritpion 對服務器的描述信息,任意取一個容易記的名稱
b. Hostname 監控主機的IP地址或主機名,若是使用主機名,別忘了設置/etc/hosts
c. Host Template 這裏其實是一個監控模板,在建立圖形時會有一些默認的監控項,好比CPU、內存等。根據監控主機的類型來選擇,若是是Linux系統,一般選擇「Local Linux Machine」和「ucd/net SNMP Host」。監控網絡設備這裏通常選擇了「ucd/netSNMP Host」。
d. SNMP Community 要和snmpd.conf中的團體名一致(和設備中設置的團體名一致好比前面設置的public)
e. SNMP Version 若是選擇Version 1,就不用設置SNMPUsername和SNMP Password兩項了,由於只有在Version3中才會使用。
f. SNMP Port 默認使用161端口
g. SNMP Timeout 獲取目標主機信息的超時時間
進行完這一步,就完成了一個主機基本信息的描述。保存後在device裏就生成了一條記錄,點擊記錄再進入記錄條目,此時若是SNMP infomation下面有一個紅色提示snmp error說明多是CACTI服務器鏈接不到目標主機,也多是SNMP團體名設置錯誤,可作適當調整,直到沒有錯誤。
若是沒有錯誤 會出現一些設備信息,相似下面這樣:
SNMP Information
System:Linuxi-tcz0hdhc 2.6.32-431.29.2.el6.x86_64 #1 SMP Tue Sep 9 21:36:05
UTC 2014 x86_64
Uptime: 947782 (0 days, 2 hours, 37 minutes)
Hostname: i-tcz0hdhc
Location: Unknown (edit /etc/snmp/snmpd.conf)
Contact: Root root@localhost (configure /etc/snmp/snmp.local.conf)
第二步 爲主機建立圖形
在上圖的界面點擊旁邊的create Graphs for this host爲剛剛建立的主機建立圖形。
實際上這一步看到的界面是和前面選用的模板有關的,另外在下面還可增長監控模板。若是監控模板不對,則顯示的圖形不合實際或者沒法顯示。這裏能夠選擇要監控那些信息。最後保存就爲這個主機建立了一個流量信息圖集。
第三步 建立圖形樹
作完了第二步,實際上在graphs裏是看不到圖形的,須要用圖形樹把圖形連接出來,使用本身建立的圖形樹的目的是爲了規劃圖形分類,讓管理更清晰。
Management→ Graph Trees → Graph Trees → add
新建圖形樹
NAME 起一個一級目錄的名字
sortingtype分類類型 其實是目錄排序,分別是無排序、安字母、天然排序、數字排序。通常選無排序。
建立完了一級目錄後,進入一級目錄,單擊Add建立二級目錄
此項注意: 先選擇節點類型,由於選擇節點類型後頁面要刷新,其餘的白選。頁面類型以下
Header 是菜單項,意思就是點擊後彈出子菜單。
Graphs 圖形 點擊後連接到具體的一個圖形。
Host 主機點擊後現實設備中定義的主機下全部的圖形集。
這一級菜單隻有header能夠定義名稱。graphs和host是集成前面定義的名稱來的。因此有的時候爲了看起來清晰明瞭 須要將你的主機再向下包含一層目錄。
到此簡單的流量監控圖就建立完了,主菜單的graphs項列出了咱們建立的圖形樹,點擊可看到相應的數據圖表。
第五:錯誤解決
1、[root@jedy ~]# snmpwalk -v1 -c test localhost 報下面的錯誤
End of MIB
[root@jedy ~]#
參考:這個錯誤通常是在 snmp.conf 裏view 裏面沒有容許該OID ,甚至作了顯式拒絕,解決辦法是容許該 OID.
加入: view all included .1
本處參照了 http://ilexes.blog.51cto.com/705330/243937 但原文有一點錯誤
[root@jedy ~]#
2、[root@jedy ~]# snmpwalk -v1 -c public localhost
getaddrinfo: localhost1 Name or service not known
snmpwalk: Unknown host (localhost)
說明 主機名不對或是snmp服務不正常
3、[root@jedy ~]# snmpwalk -v 1 -c test localhost
Timeout: No Response from localhost
說明Community 不正確 或是snmp服務不正常
如下錯誤是從網上摘抄的,供參考。本人沒有碰到過,因此沒有測試。
圖片不能顯示
總結cacti圖形採集正確,卻沒法實現部分監控圖像的問題
有些時候,使用的cacti出現莫名其妙的問題,網卡圖形沒法顯示,其餘圖形正常顯示,
在確保snmp數據採集正常的狀況下,總結以下
1.--console-----system utilities - → Rebuild poller cache
2.系統時間不許確,從新設置時間
3.圖像沒有生成,運行#/usr/bin/php /srv/www/htdocs/cacti/poller.php--force
4.權限問題,修改權限#chmod 777 -R /srv/www/htdocs/cacti/rra
5.數據庫表有損壞,修復#mysqlcheck -ao cacti --auto-repair -uroot-p
6.重啓snmpd服務#service snmpdrestart
7.cacti的日誌太大,清理日誌
8.查看日誌,---console-----System Utilities---View Cacti logFile"
通常查看日誌,會出現大量數據採集失敗的警告
不一樣網段之間別忘記了路由問題
附:snmp客戶端安裝和基本配置
一、 Linux客戶端的安裝配置
a. 檢查軟件安裝
[root@i-tcz0hdhc~]# yum install -y net-snmp
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
*base: mirrors.yun-idc.com
*epel: mirrors.yun-idc.com
*extras: mirrors.yun-idc.com
*rpmfusion-free-updates: mirror.hust.edu.cn
*rpmfusion-nonfree-updates: mirror.hust.edu.cn
*updates: mirror.oasis.onnetcorp.com
Setting up Install Process
Package 1:net-snmp-5.5-49.el6_5.4.x86_64already installed and latest version
Nothing to do
[root@i-tcz0hdhc~]#
[root@i-tcz0hdhc~]# chkconfig
[root@i-tcz0hdhc~]# chkconfig snmpd on
[root@i-tcz0hdhc~]# chkconfig
b. 配置本機snmpd(想要被cacti監控的linux主機都要修改)
只需修改如下幾個地方,其它地方保持默認便可。下面是改好後的樣子
[root@i-tcz0hdhc~]# more/etc/snmp/snmpd.conf | egrep -v"^$|^#"
com2sec notConfigUser default public \\將這裏的snmp團體名改爲一個好記的名字,固然也能夠不改,此處我改爲了 public
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
view all included .1 \\增長這一行,要用all 不能用systemview 要否則取不到數據。這是增長cpu取值的
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.2 \\增長這一行。這是增長網卡取值的
view systemview included .1.3.6.1.2.1.25.1.1
access notConfigGroup "" any noauth exact all none none \\增長這一行,要用all 不能用systemview 要否則取不到數據。這是增長cpu取值的
com2sec mynetwork 192.168.10.112/24 public \\增長這一行,要用all 不能用systemview 要否則取不到數據。這是增長cpu取值的
view all included .1 80 \\增長這一行,要用all 不能用systemview 要否則取不到數據。這是增長cpu取值的
view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc \\將這一行前面的#去掉
syslocation Unknown (edit/etc/snmp/snmpd.conf)
syscontact Root <root@localhost>(configure /etc/snmp/snmp.local.conf)
dontLogTCPWrappersConnects yes
[root@i-tcz0hdhc~]#
c. 開放防火牆容許snmp通訊端口
[root@jedy ~]# iptables -A INPUT; -s IP地址 -p udp --dport 161 -jACCEPT
注意 必定要開udp的端口,以上一行能夠寫到 /etc/sysconfig/iptables 中 這樣 每次開機後會自動啓用的
d. 測試snmp
重啓 snmp服務器
[root@jedy ~]#
[root@jedy ~]# services snmpd restrart
[root@jedy ~]#netstart -tlnp | grep 161 查看服務端口有沒有起來
若是沒有snmptranslate;snmpwalk命令,請安裝net-snmp-utils 包
[root@jedy ~]# snmptranslate -To | head 若是取到部分oid 說明snmp工做正常 固然這個正常並不表明 cacti就能取到數據。還要進行下面的測試
.1.3
.1.3.6
.1.3.6.1
.1.3.6.1.1
.1.3.6.1.2
.1.3.6.1.2.1
.1.3.6.1.2.1.1
.1.3.6.1.2.1.1.1
.1.3.6.1.2.1.1.2
.1.3.6.1.2.1.1.3
[root@jedy ~]#
[root@jedy ~]# snmpwalk -v 1 -c test localhost 後將會輸出不少信息 說明snmp工做沒問題
[root@jedy ~]# snmpwalk -v 1 -c test localhost .1.3.6.1.4.1.2021.11 若是有輸出,說明能取到cpu值
[root@jedy ~]# snmpwalk -v 1 -c test localhost .1.3.6.1.4.1.2021.10.1.3 若是有輸出,說明能取到cpu值
若是上面的測試輸出爲:End of MIB 說明不能取到cpu的值。
須要注意的是,雖然在snmpd.conf 中配置了cpu的取值,但在cacti的圖表中,cpu usage 圖表經常是沒有曲線圖的,但下面是有數值的,這是正常的,只是由於數值過小 無法繪圖
二、 Windows 客戶端的安裝配置
a. 檢查軟件安裝
開始 → 運行 → services.msc → SNMP server 或開始 → 控制面板 → 管理工具 → 服務 → SNMP server
若是沒有SNMP server請自行安裝windows組件中的網絡管理中的snmp服務,安裝後要從新打開服務。
SNMP server啓動類型設爲 自動
b. 開放防火牆容許snmp通訊端口
防火牆開放udp 161端口,容許cacti服務器訪問。具體設置略
c. snmp設置
增長社區名,好比個人是 public,權限只讀
增長主機權限,好比個人是 192.168.10.112
保存退出
全部設置完成。