cacti-0.8.7d安裝
database & user準備
# mysql -u root -p
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12142 to server version: 3.23.58
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> create database cacti;
Query OK, 1 row affected (0.00 sec)
mysql> grant select,insert,update,delete on *.* to root@"%" Identified by "123456";
Query OK, 0 rows affected (0.01 sec)
mysql> grant all privileges on cacti.* to cactiuser@"localhost" Identified by "cactipw" WITH GRANT OPTION;
Query OK, 0 rows affected (0.01 sec)
mysql> exit
上述命令建立了cacti數據庫,同時建立了賬戶cactiuser,並賦予了對應的訪問權限。
cacti安裝
軟件包路徑下載:http://www.cacti.net/downloads/cacti-0.8.7d.tar.gz
a) 安裝
shell>tar zxvf cacti-0.8.7d.tar.gz
shell>mv cacti-0.8.7d /data/cacti 這裏假設apache配置/data/cacti爲主目錄
shell>cd /data/cacti
shell>mysql –u root –p cacti < cacti.sql
shell>vi include/global.php,修改以下:
$database_type = 「mysql」;
$database_default = 「cacti」;
$database_hostname = 「localhost」;
$database_username = 「cactiuser」;
$database_password = 「cactipw」;
上述配置文件說明了和MySQL的鏈接參數。
b) 新增用戶
//添加cacti用戶
# useradd cactiuser
//將rra目錄的全部權給cacti用戶
# chown –R cactiuser /usr/loca/apache/htdocs/cacti/rra
//修改cacti目錄所屬組
# chgrp –R cactiuser /usr/loca/apache/htdocs/cacti
c) 添加定時採集的crontab
shell>crontab -e 添加以下命令:
*/5 * * * */usr/local/php/bin php /usr/local/apache/htdocs/cacti/poller.php > /dev/null 2>&1
表示每隔5分鐘,將採集數據並生成rrd文件
d) 爲了不中文環境對rrd文件的影響,最好在執行命令以前加入以下對LANG環境變量的設置:
export LC_ALL=en_US;
export LANG=en_US;
export LANGUAGE=en_US;
export LC_CTYPE=en_US;
export LC_TIME=en_US;
cacti初始化
一切正常後,從新啓用Apache服務,而後在瀏覽器中輸入http://IP/cacti進入其初始化配置頁面,點擊next後.
而後輸入初始化用戶名和密碼 admin/admin,提示須要修改該密碼,修改完畢後,點擊Save按鈕,進入Cacti管理界面。
cacti建立設備及圖表的基本過程
進入主頁面後,請選擇按照如下步驟建立圖表:
選擇屏幕左上方的Management->Devices,隨後屏幕右邊會出現現有的設備狀況,而後點擊右上方的Add按鈕,出現下面的界面:
須要輸入:1)設備描述;
2)Hostname(能夠是地址或域名);
3)模板,通常是ucd/net SNMP host或cisco router;
4)輸入community;
5)選擇SNMP Version,最後點擊Create添加設備。
若是一切正常的話,下個界面上方將顯示該主機的信息,標識SNMP通訊正常。
選擇屏幕左上方的Management->Devices,點擊剛纔建立的設備,而後點右上方的「Create Graphs For This Host」,以下圖所示:
點擊後會出現下面的界面,根據不一樣的主機狀況,多是不一樣的,例以下圖顯示了一臺Cisco交換機能夠建立的圖形模板,包括了:CPU Usage和網絡接口:
請在上圖選擇對應的選項(右側的Check Box),同時選擇Graph Type(例如Cisco – CPU Usage,In/Out Bytes(64-bit Counters)),
而後點擊「Create」按鈕。確認後,會出現一個頁面,此刻能夠選擇圖形中的顏色,點擊「Create」按鈕後,出現剛纔那個頁面,可是上方會顯示建立圖形的結果,以下圖所示:
表示圖形建立正確。
接下來能夠點擊Management->Graph Trees,點擊右上方的「Add」按鈕,能夠添加Tree Root,以下圖所示,添加了一個」USA ViewToo Portal「:
接着點擊上圖中建立的Tree Root(例如「USA ViewToo Portal「)後,能夠再建立其下面的子節點,以下圖所示:
上圖中能夠看出,在USA..節點下建立了一個名爲「San Jose「的子節點。要想一樣建立一個這類節點,請單擊圖形右邊的」Add「按鈕。
要想在已存在的子節點下建立主機信息,請點擊子節點旁邊的」Add「按鈕(例如Sunnyvale(Add)),將會出現以下界面:
在上圖上選擇Parent Item爲對應的子節點和Tree Item Type爲Host,而後選擇對應的Host主機,點擊「Create「後將會建立主機。
建立後的狀況如以前的那幅圖所示。選擇「Add「按鈕後出現以下界面,請輸入相應的節點信息,如Sunnyvale,注意Parent Item須要是」[root]「,
同時Tree Item Type爲」Header「:
建立完相應的子節點信息後,就能夠在剛纔那個根下面看到此節點,從此能夠將與之關聯的主機性能圖掛接到這個子節點下對應的主機上。
接下來須要將圖形掛接到對應的節點和主機下面(注意:默認狀況下若建立了相應的Host,同時也生成了該Host的圖形,
那麼系統會自動將全部的Host圖片掛接到該Host點下,而無需手動完成。若你須要自動調整圖形和Host的關係,那麼請按照下面步驟完成),
點擊Management->Graph Management,選擇剛纔新建的主機,以下圖所示:
選擇相應的主機,而後會顯示以前已建立的圖形,選擇「Place on A Tree(USA ViewToo Portal)「後點擊」go」按鈕。出現下圖,
選擇以前新建立的子節點,而後選擇yes確認。
至此整個配置過程基本完成,咱們能夠從Graphs Tab上查看剛纔添加的子節點,主機,及相應的圖形,以下圖所示(Sunnyvale->Host:3750-01):
cacti插件安裝
cacti還提供了thold,monitor,report等plugin插件,如下說明這些插件的安裝過程。
安裝包的準備
首先到以下URL下載支持plugin的patch包:
http://mirror.cactiusers.org/downloads/plugins/cacti-plugin-0.8.7d-PA-v2.4.zip
其次到以下URL下載相應的plugin安裝包:
http://cactiusers.org/downloads/
Linux或者Unix環境下,最好都下載gzip格式安裝包
Patch的安裝
強烈建議安裝以前先閱讀patch文件包中的Readme.txt文件;通常都會有安裝patch的說明,根據ReadMe指引進行patch的安裝便可。
#wget http://mirror.cactiusers.org/downloads/plugins/cacti-plugin-0.8.7d-PA-v2.4.zip
#unzip cacti-plugin-0.8.7d-PA-v2.4.zip -d cacti-plugin-arch
#cp -R cacti-plugin-arch/* /usr/share/cacti/
#cd /usr/local/apache/htdocs/cacti/
#mysql -ucacti -p cacti < pa.sql
#patch -p1 -N < cacti-plugin-0.8.7d-PA-v2.4.diff
這樣作完後,可能會圖象不對(前提,你設置的url是http://xxx/cacti),那麼須要修改以下的內容.
#vim include/global.php
$config['url_path'] = '/cacti/';
注意:這兒的cacti後面的/是必需的。
進入"用戶管理"->點admin->區域權限->Plugin Management
plugin的安裝
a) 安裝setting,thold,monitor
>cd cacti/plugins
>wget http://mirror.cactiusers.org/downloads/plugins/settings-0.5.tar.gz
>tar zxvf settings-0.5.tar.gz
>wget http://mirror.cactiusers.org/downloads/plugins/thold-0.4.1.tar.gz
>tar zxvf thold-0.4.1.tar.gz
>wget http://cactiusers.org/downloads/monitor.tar.gz
>tar zxvf monitor.tar.gz
>vim ../include/global.php
在$plugins = array();的後面加上以下內容
$plugins[] = 'thold';
$plugins[] = 'settings';
$plugins[] = monitor;
b) 安裝完成以後
OWL中缺乏sendmail,所以須要手動安裝
procmail-3.22-17.1.el5.centos.x86_64.rpm
c) 進入http://ip/cacti時候,會出現php文件找不到,所以
修改:/include/global_constants.php.rej文件
在175,178 之間找到
define("SNMP_CMDPHP", 1);
define("SNMP_WEBUI", 2);
--- 175,182 ----
define("SNMP_CMDPHP", 1);
define("SNMP_WEBUI", 2);
下面增長:
define('OPER_MODE_NATIVE', 0);
define('OPER_MODE_RESKIN', 1);
define('OPER_MODE_IFRAME_NONAV', 2);
d) 使用插件
使用monitor插件
刷新cacti系統的web管理界面,能夠看到多出兩個標籤頁(thold、monitor)。
1>打開「Console->Settings->Misc」,能夠調整Monitor的各項配置。例如:勾選「Show Icon Legend」能夠在監控頁面顯示圖例;
「View」能夠選用Tiles類型,以顯示設備狀態表格。
2>爲cacti添加新設備時,勾選上「Monitor Host」項。對已添加的設備能夠經過「Management->Devices」進去修改。
3>單擊Web頁面上方的「monitor」標籤連接,能夠進入查看各設備/主機的狀態圖示。
使用thold插件
1>打開「Console->Settings->Mail/DNS」,能夠調整「SMTP Options」和「DNS Options」等配置,用於確保預警郵件可以發出。
2>打開「Console->Settings->Alerting/Thold」,能夠調整Thold的各項配置。例如:「Dead Host Notifications Email」處
可填寫設備當機時發送警告信息到哪一個郵箱;勾選「
Send alerts as text」項,能夠設置只發送文本格式的郵件。
3>打開「Templates->Threshold Templates」,能夠添加、取出須要關聯到預警系統的模板,例如:能夠添加和「Interface-Traffic」模板的關聯,
選擇 「traffic_in」、"traffic_out」數據項,分別設置警告閾值「High Threshold」(如200000000比特/秒);能夠添加和「Unix-Disk Space」模板的關聯……。
4>打開「Create->New Graphs」,選擇須要提供預警的設備,單擊右側上方的「Auto-create thresholds」建立預警項目。
5>打開「Management->Thresholds」,能夠管理已經建立的預警項目。
FAQ
在執行poller.php出現reset錯誤
錯誤信息以下:
PHP Warning: reset(): Passed variable is not an array or object in /usr/local/cacti/lib/functions.php on line 146
Warning: reset(): Passed variable is not an array or object in /usr/local/cacti/lib/functions.php on line 146
PHP Warning: Variable passed to each() is not an array or object in /usr/local/cacti/lib/functions.php on line 147
Warning: Variable passed to each() is not an array or object in /usr/local/cacti/lib/functions.php on line 147
PHP Warning: reset(): Passed variable is not an array or object in /usr/local/cacti/lib/functions.php on line 146
Warning: reset(): Passed variable is not an array or object in /usr/local/cacti/lib/functions.php on line 146
PHP Warning: Variable passed to each() is not an array or object in /usr/local/cacti/lib/functions.php on line 147
Warning: Variable passed to each() is not an array or object in /usr/local/cacti/lib/functions.php on line 147
解決方法:
這是在安裝插件patch以後的一個小bug,須要修改lib/functions.php,找到function read_default_config_option,修改成以下代碼:
function read_default_config_option($config_name) {
global $config, $settings;
if (is_array($settings)) {
reset($settings);
while (list($tab_name, $tab_array) = each($settings)) {
if ((isset($tab_array[$config_name])) && (isset($tab_array[$config_name]["default"]))) {
return $tab_array[$config_name]["default"];
}else{
while (list($field_name, $field_array) = each($tab_array)) {
if ((isset($field_array["items"])) && (isset($field_array["items"][$config_name]))
&& (isset($field_array["items"][$config_name]["default"]))) {
return $field_array["items"][$config_name]["default"];
}
}
}
}
}
}
poller.php沒法正常採集數據,一直處於等待狀態
輸出的日誌信息以下:
08/23/2005 11:04:59 AM - POLLER: Poller[0] Maximum runtime of 296 seconds exceeded. Exiting.
解決辦法:
這有多是因爲環境中有多個php的程序,cacti初始化所用的php的路徑,與crontab中執行的時候所用的php的路徑不一致;
而且,cacti初始化指定的php必須是與mysql結合編譯的那個php,不然的話,會出現沒法鏈接到mysql數據庫的報錯。
cacti進階應用
cacti加入msn預警
a) 獲取cacti補丁
http://www.hiadmin.com/wp-content/uploads/2008/11/cacti_thold-039_settings-05_add_fetion_msn.path
b) 補丁安裝
#cd /var/www/cacti/plugins
#patch -p1 < cacti_thold-0.3.9_settings-0.5_add_fetion_msn.path
執行過程以下:
root@TS263 cacti]# patch -p1 < cacti_thold-039_settings-05_add_fetion_msn.path
The next patch would create the file index.php,
which already exists! Assume -R? [n] y
patching file index.php
Hunk #1 FAILED at 1.
File index.php is not empty after patch, as expected
1 out of 1 hunk FAILED — saving rejects to file index.php.rej
patching file settings/fetion-test.php
can’t find file to patch at input line 42
Perhaps you used the wrong -p or –strip option?
The text leading up to this was:
————————–
|diff -uNr plugins-old/settings/include/functions.php plugins/settings/include/functions.php
|— plugins-old/settings/include/functions.php 2008-04-29 14:03:40.000000000 +0800
|+++ plugins/settings/include/functions.php 2008-11-24 18:22:10.000000000 +0800
————————–
File to patch:
Skip this patch? [y] y
Skipping patch.
1 out of 1 hunk ignored
patching file settings/include/msnpauth.php
patching file settings/include/sendMsg.php
patching file settings/msn-test.php
can’t find file to patch at input line 537
Perhaps you used the wrong -p or –strip option?
The text leading up to this was:
————————–
|diff -uNr plugins-old/settings/setup.php plugins/settings/setup.php
|— plugins-old/settings/setup.php 2008-04-29 14:03:40.000000000 +0800
|+++ plugins/settings/setup.php 2008-11-24 13:07:48.000000000 +0800
————————–
File to patch: plugins/settings/
patch: **** File plugins/settings/ is not a regular file — can’t patch
c) 測試
安裝成功以後能夠看到:
能夠在這裏測試郵件和MSN,如圖:
測試郵件
測試MSN
由於公司的郵件服務器須要SMTP認證,所以測試時郵件服務器使用圖中的就能夠了。
創建thold模板時可用選擇發送多個用戶,如圖:
d) 修改文件
須要修改:../cacti/plugins/thold/ thold_templates.php 在352行處
foreach ($users as $user) {
$send_notification_array[$user['id']] = $user['data'] . ' - ' . ucfirst($user['type']);
}
修改數據庫:plugin_thold_contacts表
增長鬚要顯示的用戶信息,例如:
其中user_id爲1表示爲管理員,是在user_auth表中的用戶信息。
e) 短信提醒可使用139郵箱附帶的短信通知實現。
使用cacti監控url的響應時間
引用一個page_load_time.tar.gz的模板,該模板包含2個文件,一個是獲取某個url響應時間的perl腳本page_load_time.pl,
一個是須要導入cacti的模板xml 文件 cacti_graph_template_page_load_time.xml。
具體操做步驟以下:
將page_load_time.pl腳本放置於<cacti_home>/scripts/目錄下;須要注意的是,腳本中引用的幾條命令:perl、wget、time的具體路徑,
要根據cacti安裝的主機上的實際路徑來修改;
在【import templates】模塊,將cacti_graph_template_page_load_time.xml的模板文件導入;
在【devices】模塊中添加url對應主機的設備;
在【Associated Graph Templates】位置,添加page load time 這個圖形模板;
點擊【Create Graphs for this Host】,添加page load time圖形,而且選擇page load time的data source
出現的data source定義頁面上,指定須要監控的url。
注意事項:
像陝西aaa這種在url上須要帶端口進行監控的。http://10.0.3.20:5050/ aaa/portal/login.do?action=autoLogon&way=mine。
經過$host . $url的方式來拼出wget須要的url是有問題的。所以,修改page_load_time.pl,將其輸入的參數設置爲只有一個url的參數;
在【Data Input Methods】中,將page load time這個方法的命令中去掉對<host>參數的引用,修改成:
perl <path_cacti>/scripts/page_load_time.pl <url>
在【Data Source】中,將須要check的url設置爲絕對的url路徑,例如:http://10.0.3.20:5050/aaa/portal/login.do?action=autoLogon&way=mine
在最後生成圖片的時候,有一個ERROR:the RRD does not contain an RRA matching the chosen CF 這樣的報錯。須要修改graph templates,
將item1的CFType由原先的Last修改成Average,則圖片能夠顯示正常了。
其餘
Cacti提供了很是靈活的模板定製和導入模板功能,包括了數據採集部分,圖形部分等。同時能夠對用戶進行靈活的管理和權限分配, 例如能夠指定該用戶僅僅有查看圖形的權限而不能作任何系統相關配置,更進一步能夠作到指定該用戶擁有哪幅圖/主機/模板/節點(樹)的查看權限。 有待咱們去作進一步研究和挖掘。其更爲詳細使用說明,請參考隨機帶的文檔或其網站Documents部分。