Cacti安裝配置以及監控經驗分享
最近在學習cacti,發現本文寫得很是詳細,於是乎就轉載來慢慢學習,感謝原創作者的分享
1.系統環境
採用LNMP架構(本案例中不予安裝過程的說明,重點講Cacti)作爲Cacti運行的PHP環境,RedHat 5.8 32位操作系統。
本案例中採用Cacti版本是0.8.8a,截至發稿前的最新版,英文原版。
2.snmp安裝
SNMP有兩種方法,一種是yum,還有一種是採用源代碼的編譯安裝。
(1)yum安裝
- yum -y install net-snmp-devel net-snmp-libs net-snmp
執行上面的命令即可安裝完畢。
(2)源代碼的安裝
重點講下源代碼的安裝,採用官方最新版。
- wget http://sourceforge.net/projects/net-snmp/files/net-snmp/5.7.1/net-snmp-5.7.1.tar.gz
- tar zxf net-snmp-5.7.1.tar.gz
- cd net-snmp-5.7.1
- ./configure \
- --prefix=/usr/local/snmp \
- --enable-mfd-rewrites \
- --with-default-snmp-version="2" \
- --with-sys-contact="Luxiaok,E_mail:[email protected]" \
- --with-sys-location="China" \
- --with-logfile="/usr/local/snmp/var/log/snmpd.log" \
- --with-persistent-directory="/usr/local/snmp/var/snmp" \
- --sysconfdir=/usr/local/snmp/etc \
- --with-mib-modules=ucd-snmp/diskio
- make && make install
編譯參數說明
prefix:net-snmp的安裝路徑
enable-mfd-rewrites:允許用新的MFD重寫可用的mid模塊
with-default-snmp-version:默認的SNMP版本
with-sys-contact:可以配置該設備的聯繫人
with-sys-location:該設備的位置
with-logfile:日誌文件路徑
with-persistent-directory:不變數據存儲目錄
with-mib-modules=ucd-snmp/diskio 選項,可以讓服務器支持磁盤I/O監控
使用以上參數選項即可,否則configure配置時會要求手動輸入。
配置文件
- cp EXAMLE.conf /usr/local/snmp/share/snmp/snmpd.conf
EXAMLE.conf是在源代碼文件夾裏。
配置snmpd.conf
1).監聽
agentAddress udp:127.0.0.1:161 註釋掉該行
agentAddress udp:161,udp6:[::1]:161 修改爲該行,也可以不要後面的IPv6部分。
2).v2c授權
找到
rocommunity public default -V systemonly
註釋掉,添加一行
- rocommunity public 192.168.1.101
IP地址是監控服務器的IP,不解釋
3).v3授權
暫不多贅述,因爲現在利用snmp協議監控多使用1或者2版本。
啓動文件
- cp dist/snmpd-init.d /etc/init.d/snmpd
啓動
- /etc/init.d/snmpd start
或者:
- /usr/local/snmp/sbin/snmpd -c /usr/local/snmp/etc/snmpd.conf
注意:在RedHat Enterprise Linux平臺下,用源代碼自帶的snmpd作爲SystemV啓動腳本,使用service命令啓動時,獲取snmp數據時總是顯示超時(實際上是服務並沒有完全啓動),就必須使用上面的命令手動啓動。建議修改下snmpd的systemV文件,把start函數部分修改爲手動啓動的代碼,即上面的代碼。
測試:
- /usr/local/snmp/bin/snmpwalk -c public -v 2c 127.0.0.1
在服務器上執行
- snmpwalk -v2c -c public 192.168.1.101
IP地址寫被監控服務器的IP
系統運行時間OID
.1.3.6.1.2.1.25.1.1.0
測試:
- [root@cacti ~]# snmpwalk -v2c -c public 192.168.1.101 .1.3.6.1.2.1.25.1.1.0
- HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (583354108) 67 days, 12:25:41.08
- [root@cacti ~]#
3.rrdtool安裝
先安裝必要的rpm包
- yum install cairo cairo-devel libxml2 libxml2-devel pango pango-devel perl perl-devel
使用官方最新版
- wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.7.tar.gz
- tar zxf rrdtool-1.4.7.tar.gz
- cd rrdtool-1.4.7
- ./configure --prefix=/usr/local/rrdtool
- make && make install
- ln -s /usr/local/rrdtoo/bin/* /usr/local/bin/
小提示:很多同學會發現Cacti裏用rrdtool畫的圖片的最右邊有一豎排關於RRDTOOL標識的字,怎麼去掉呢,有辦法。在解壓了rrdtool源代碼包後,修改src目錄下的rrd_graph.c文件,用vim打開查找“RRDTOOL”,要是大寫的呢,1.4.7的版本是在第2740行,如圖:
去掉“RRDTOOL / TOBI OETIKER”,記住引號要留着。然後開配置,編譯,安裝就OK了,畫圖就沒有多餘的字了。我們可以看到源代碼裏有個“-90”,其實是恰好把那引號裏的字順時針轉了90度。
4.spine安裝
spine的安裝稍有點麻煩,如果net-snmp是編譯安裝的,加--with-snmp=/usr/local/net-snmp。另外,LNMP架構基本是編譯安裝的,所以
- ln -s /usr/local/mysql/lib/libmysql* /usr/lib/
做一個MySQL的庫的軟鏈接。
如果snmp是採用的yum安裝的,記得安裝net-snmp-devel和net-snmp-libs這兩個包。
編譯
- ./configure --prefix=/usr/local/spine
- make && make install
配置文件
填寫對應的數據庫和用戶名,可以做一個軟鏈接也可以不做:
- ln -s /usr/local/spine/etc/spine.conf /etc/
5.安裝Cacti
準備工作都差不多了,開始安裝Cacti。它的安裝過程挺簡單的,只要需要的軟件都安裝好了。
這裏採用官方最新版:0.8.8a
- wget http://www.cacti.net/downloads/cacti-0.8.8a.tar.gz
解壓釋放到web根目錄下,最好沿用默認的二級目錄訪問形式cacti。
導入數據庫,修改config.php,填入相關數據庫和用戶名密碼。
打開客戶端瀏覽器http://ip/cacti/install,填入正確的路徑即可,不再詳細說明。
6.監控遠程Linux主機
以監控RedHat/CentOS系統爲例說明
需要注意的是以Unix開頭的模版只能監控本機,如果監控別的(遠程)的Linux主機,那所有主機的圖像和數據都是一樣的,即監控服務器本身的數據。
監控模版說明:
CPU:ucd/net - CPU Usage,SNMP - Get Processor Informatio(每個核一個圖,相對前面的比較準確點)
內存:SNMP - Get Mounted Partitions
磁盤: ucd/net - Get Monitored Partition(如果無數據就在被監控機器的snmpd.conf裏添加disk /), SNMP - Get Mounted Partitions也可以獲取到磁盤分區(如果是VPS,虛擬化出來的可能獲取不到,標準的物理Linux服務器是可以的)
負載:ucd/net - Load Average
進程:Host MIB - Processes
用戶:Host MIB - Logged in Users
網卡流量:SNMP - Interface Statistics
其他:待定。
7.常見問題
(1)rrdtool中文問題
1.4.7的版本是支持中文的,不需要修改源代碼文件,而1.2的版本就會亂碼。要讓圖完全顯示中文還需要修改下cacti目錄下lib/function.php,就在第一個PHP標籤里加入setlocale(LC_CTYPE,"en_US.UTF-8");
(2)監控nginx和php-fpm配置文件
- server {
- listen 80;
- server_name 192.168.1.100;
- root /var/www/.monitor;
- index index.php index.html;
- location /nginx_status {
- stub_status on;
- # disable access_log if requared
- access_log off;
- allow 192.168.1.101;
- deny all;
- }
- location ~ ^/(php_status)$ {
- include fastcgi_params;
- fastcgi_pass 127.0.0.1:9000;
- fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
- access_log off;
- allow 192.168.1.101;
- deny all;
- }
- }
(3)Cacti裏的單位
Cacti中使用如下單位:M(兆)、K(千)、m(微)。
這裏的單位 m 表示微,即需要除以1000。100m表示0.1。
m - 10^-3 即0.001
M - 10^6
G - 10^9
T - 10^12
(4)snmp.conf自定義OID的說明
之所有講下這個是因爲snmp軟件版本(區分清楚snmp協議版本與軟件版本)問題,會出現一些很抓狂的問題。
舉個例子,自定義一個OID,監測LNMP架構中Nginx、MySQL以及php各種佔用的CPU和內存是多少。
首先上腳本:/etc/snmp/lnmp_status.sh
- #!/bin/bash
- #
- # 定義函數
- function ps_aux() {
- process=$1 # nginx httpd mysql php-fpm,and so on
- # 獲取對應性能佔用百分比,並用AWK求和
- percent_cpu=(`ps aux | grep -i $process | grep -v "grep" | awk '{ total += $3 } END { print total }'`)
- percent_mem=(`ps aux | grep -i $process | grep -v "grep" | awk '{ total += $4 } END { print total }'`)
- # 判斷進程是否爲空,爲空表示未開啓服務或進程
- [ ! $percent_cpu ] && percent_cpu=0
- [ ! $percent_mem ] && percent_mem=0
- # 輸出
- echo $percent_cpu
- echo $percent_mem
- }
- # 調用函數
- ps_aux nginx
- ps_aux mysql
- ps_aux php-fpm
- # 統計網站數量並輸出
- web_num=`ls /var/www/html | wc -l`
- echo $web_num
這裏多添加了一個統計/var/www/html/目錄下所運行的網站的數量,所以一共有7個數據返回,定義的OID是.1.3.6.1.4.1.2021.23,所以在/etc/snmpd.conf裏添加一下內容:
- extend .1.3.6.1.4.1.2021.23 lnmp_status /bin/bash /etc/snmp/lnmp_status.sh
需要說明的問題在這裏:在RHEL 5平臺下的snmp軟件的版本是5.3,而到了RHEL 6平臺下snmp的版本是5.5(可以使用snmpd -v命令查詢軟件版本),是5.3的版本里可以使用exec關鍵字來定義自己的OID,但是在5.5版本下就不行了,如果用exec,就會報錯
這會很抓狂的,所以統一都使用extend。
模版在附件裏有,先看看效果圖:
(5)圖形模版裏的“| date_time |”
在有些圖形模版裏,有些打印了“最後更新時間”,但是打印出來的格式卻不怎麼符合我們的習慣,是如下的模式:
就像是在Linux下執行單純的“date”命令一樣,這其實是用php的date函數打印出來的,我們可以修改下Cacti的源代碼,文件是cacti/lib/rrd.php。
打開後查找"date_time",可以看到模式的格式是:
- date('D d M H:i:s T Y')
修改爲
- date('Y-m-d (l) H:i:s')
看看打印的效果
這個是可以自定義的,php裏的date函數具體怎麼用可以去查下資料,大致按照中國人的習慣打印出”年-月-日 時間“的格式就差不多習慣了。
(6)待添加
本文出自 “陸小K網絡工作室” 博客,請務必保留此出處http://luxiaok.blog.51cto.com/2177896/1006175