最近用cacti 實現了對幾臺服務器的監控,期間遇到不少問題,經過借鑑網友的方法都一個個的解決了,我把具體的配置過程發在這裏,但願對你們有所幫助。
php
安裝用到的 源碼包有 cacti-memcached-1.0.tar.gz mysql-cacti-templates-1.1.3.tar.gz php-5.2.10.tar.gz cgilib-0.5.tar.tar httpd-2.2.14.tar.gz
rrdtool-1.3.6 cacti-nginx.tar.gz cacti-0.8.7e.tar.gz
RPM
還須要一些 rpm包 我是用yum 安裝的,若是你能鏈接公網的話最好找個快點的 yum源 用yum 把他們都裝上(省心又省力)
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel
glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn
libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers pango-devel net-snmp-devel net-snmp net-snmp-utils net-snmp-libs
上面這些就差很少了,呵呵該升級的升級該安裝的安裝
pango-devel 這個包是裝rrdtool 用的,如今先把他裝上省的一下子出錯。
Mysql
好了首先是mysql,我用的是二進制包,因此直接解壓就能用了
tar zxvf mysql-5.1.38-linux-x86_64.tar.gz
mv mysql-5.1.38-linux-x86_64-icc-glibc23 /usr/local/mysql
cd /usr/local/mysql
groupadd mysql
useradd -g mysql mysql
scripts/mysql_install_db --user=mysql #初始化數據庫
chown -R root .
chown -R mysql data
chgrp -R mysql .
./bin/mysqld_safe --user=mysql & #啓動
./bin/mysqladmin -u root password admin#給root用戶設置密碼
cp ./support-files/mysql.server /etc/init.d/mysqld
# 使用ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql創建一個軟鏈接,使得能夠在命令行下直接使用mysql命令
# 使用ln -s /usr/local/mysql/bin/mysqladmin /usr/local/bin/mysqladmin創建一個軟鏈接,使得能夠在命令行下直接使用mysqladmin命令
# 使用ln -s /usr/local/mysql/bin/mysqldump /usr/local/bin/mysqldump創建一個軟鏈接,使得能夠在命令行下直接使用mysqldump命令
# 使用ln -s /usr/local/mysql/lib/libmysqlclient.so.16 /usr/local/lib/創建一個軟鏈接,是其餘軟件能夠找到編譯和運行時的庫
/usr/local/mysql/bin/mysql -u root -padmin
讓咱們進入數據庫並給cacti創建一個專用的庫cactidb 下面這段受權我從bleach的無廢話弄過來的,他寫的很好,就是缺東西太多了。
mysql> create database cactidb;
mysql> grant all on cactidb.* to root;
mysql> grant all on cactidb.* to root@localhost;
mysql> grant all on cactidb.* to cactiuser;
mysql> grant all on cactidb.* to cactiuser@localhost;
mysql> set password for cactiuser@localhost=password('admin');
mysql> exit
好了,到這裏mysql的設置就告一段落,下面該apache了
Apache
tar zxvf httpd-2.2.14.tar.gz
cd httpd-2.2.14
./configure --prefix=/usr/local/apache --enable-so
make
make config
apache安裝沒什麼好說的,下面就該php了,在編譯php的時候常常會報錯,不過由於上面yum安裝那些包就有針對php的因此這裏我沒遇到任何錯誤
若是您遇到了一些錯誤,請參考博客裏的文章《安裝php、rrdtool、phpmyadmin時遇到的問題及解決辦法》
PHP
cd ..
tar zxvf php-5.2.10.tar.gz
cd php-5.2.10
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache/bin/apxs
--enable-sockets --with-zlib-dir=/usr/include --with-gd
make
make install
cp php.ini-dist /usr/local/php/php.ini
vim /usr/local/apache/conf/httpd.conf #修改apache的配置文件加入下面幾行 用來對php進行支持
<Directory /> #一些安全的設置
# Options FollowSymLinks
Options None
AllowOverride None
Order deny,allow
Deny from all
</Directory>
AddType application/x-tar .tgz
AddType application/x-httpd-php .php
AddType p_w_picpath/x-icon .ico
DirectoryIndex index.php index.html index.html.var
保存退出
啓動 apache
/usr/local/apache/bin/apachectl start
lsof -i:80 #查看apache是否已經啓動
好了,讓咱們作個測試頁面來驗證apache是否已經支持php
vim /usr/local/apache/htdocs/ceshi.php
<?php
phpinfo( );
?>
在網址裏輸入http://localhost/ceshi.php 看看是否有php的相關信息
SNMP
若是有的話咱們就進行下一步,配置 snmp 。由於我在上面把須要的幾個包都已經裝好了(net-snmp-devel net-snmp net-snmp-utils net-snmp-libs)
因此直接修改配置文件便可
vim /etc/snmp/snmpd.conf
找到下面幾行並修改
#com2sec notConfigUser default public
com2sec notConfigUser 127.0.0.1 public #default 改成127.0.0.1
(注意這裏:若是你之後想往cacti裏添加其餘機器,只要在被監控的主機上把127.0.0.1改成cacti服務器的地址就好了)
#access notConfigGroup "" any noauth exact systemview none none
access notConfigGroup "" any noauth exact all none none #systemview 改成all
#view all included .1 80
view all included .1 80 #去掉註釋
好了保存退出後
service snmpd restart
讓咱們測試一下,看看snmp是否已經正常工做 ,下面的命令 應該會獲得本機的ip地址信息
snmpwalk -c public -v 1 -m ALL 127.0.0.1 .1.3.6.1.2.1.4.20
若是你添加了遠程主機就用下面的命令測試
snmpwalk -c public -v 1 -m ALL 192.168.1.118 .1.3.6.1.2.1.4.20
ok若是成功,我們就進入下一步,安裝rrdtool 這個東西之前裝他的時候費了好多功夫,後來他裝上後才發現一切居然如此簡單...
rrdtool
tar zxvf rrdtool-1.3.6.tar.tar
cd rrdtool-1.3.6
./configure
可能會報下面這個錯誤
configure: error: Please fix the library issues listed above and try again.
解決方法
ls /usr/lib/pkgconfig/freetype2.pc #查看freetype是否已裝好,若是裝好就直接裝pango-devel這個包,我也不知道爲何,反正是解決問題了。
/usr/lib/pkgconfig/freetype2.pc
yum install pango-devel
如今再./configure
make
make install
應該就不會報錯了
Cacti
最後咱們來安裝和配置 cacti
useradd cactiuser -s /sbin/nologin
tar zxvf cacti-0.8.7e.tar.gz
mv cacti-0.8.7e /usr/local/apache/htdocs/cacti
cd /usr/local/apache/htdocs/cacti
chown -R cactiuser rra/ log/
cd scripts
chown cactiuser:users *
這幾步權限設置很重要,改完權限後修改配置文件
vim /usr/local/apache/htdocs/cacti/include/config.php
$database_type = 「mysql」;
$database_default = 「cactidb」;
$database_hostname = 「localhost」;
$database_username = 「cactiuser」;
$database_password = 「admin」;
只須要修改上面幾行便可。
對了,不要忘記把cacti目錄下的cacti.sql 導入cactidb數據庫
/usr/local/mysql/bin/mysql -u root -padmin cactidb < cacti.sql
好了,讓咱們測試一下吧
http://192.168.1.163/cacti/
選擇全新安裝,路徑要數據絕對路徑
html
/usr/local/rrdtool-1.3.6/bin/rrdtool
/usr/local/php/bin/php
這兩個路徑通常cacti找不到,要手動填進去。
還有要注意的是,在Settings 選項裏有個rrdtool的版本選項,必定要選擇你當前使用的版本,要不沒有圖像
mysql
如今進去應該是看不到圖像的由於還要用php去執行腳本
如今以 cactiuser用戶身份添加一條計劃任務 ,最好讓他每分鐘執行一次
crontab -u cactiuser -e
*/1 * * * * /usr/local/php/bin/php /usr/local/apache/htdocs/cacti/poller.php > /dev/null 2>&1
先手動執行一下,看rrd目錄是否生成圖像
su cactiuser
/usr/local/php/bin/php /usr/local/apache/htdocs/cacti/poller.php
ls /usr/local/apache/htdocs/cacti/rra/
若是有文件生成表示執行成功了,再用瀏覽器打開http://192.168.1.163/cacti/ 看一下linux
OK,到這裏安裝就結束了。
Mysql 監控
至於 cacti的插件,我用了mysql-cacti-templates 來監控mysql
能夠參考這篇文章http://xok.la/2009/05/cacti_mysql_monitor.html
須要注意的是數據庫權限 ,要在被監控的mysql數據庫裏面給cacti受權
mysql> grant process,super on *.* to 'cactiuser'@'192.168.1.163' identified by 'admin';
mysql> grant all privileges on cacti.* to cactiuser@"192.168.1.163" identified by "admin";
Nginx 監控
用的是 cacti-nginx 這個插件 能夠參考這篇文章
http://xok.la/2009/05/cacti_nginx_monitor.html
不過這篇文章有一點沒有提 那就是添加模板最後一步
在 URL of nginx stub status這個裏面必定要加上 完整URL,如http://192.168.1.163/NginxStatus
client 和socket 兩個都要加,要不沒有數據
nginx