如何安裝配置Collectd和Collectd-Web監(jiān)控服務器資源?
譯文Collectd-web是一款基于RRDtool(輪循數據庫工具)的Web前端監(jiān)控工具,它能夠解讀并以圖形化方式輸出由Linux系統(tǒng)上的Collectd服務收集的數據。
Collectd服務在默認情況下隨帶一大批可用插件,這些插件接入其默認的配置文件;一旦你安裝了軟件包,其中一些插件在默認情況下已經被激活。
Collectd-web CGI腳本可解讀并生成圖形化的html頁面統(tǒng)計信息,用Apache CGI網關即可執(zhí)行,Apache Web服務器端只需要極少的配置。
然而,附有所生成統(tǒng)計信息的圖形化Web界面也可以由Python CGIHTTPServer腳本提供的獨立式Web服務器來執(zhí)行,該腳本隨主Git軟件庫預先安裝。
本教程將介紹Collectd服務和Collectd-web界面在基于RHEL/CentOS/Fedora和Ubuntu/Debian的系統(tǒng)上的安裝過程,只需要進行極少的配置,就可以運行服務,并啟用Collectd服務插件。
第1步:安裝Collectd服務
1. 基本上來說,Collectd守護程序的任務就是在它所運行的系統(tǒng)上收集并存儲數據統(tǒng)計信息。Collectd程序包可以從默認的基于Debian的發(fā)行版軟件庫下載和安裝,只要執(zhí)行下面這個命令:
在Ubuntu/Debian上:
# apt-get install collectd [On Debian based Systems]
將Collectd安裝到Debian/Ubuntu上
在RHEL/CentOS 6.x/5.x上:
在基于紅帽的較舊系統(tǒng)(比如CentOS/Fedora)上,你先需要啟用系統(tǒng)下的epel軟件庫,然后你才能從epel軟件庫安裝collectd程序包。
# yum install collectd
在RHEL/CentOS 7.x上:
在最新版本的RHEL/CentOS 7.x上,你可以從默認的yum軟件庫安裝和啟用epel軟件庫,如下所示。
# yum install epel-release # yum install collectd
將Collectd安裝到CentOS/RHEL/Fedora上
注意:對Fedora用戶而言,不需要啟用任何第三方軟件庫,只要運行yum命令,即可從默認的yum軟件庫獲得collectd程序包。
2. 一旦程序包安裝到了你的系統(tǒng)上,運行下面這個命令,以便啟動服務。
# service collectd start [On Debian based Systems] # service collectd start [On RHEL/CentOS 6.x/5.x Systems] # systemctl start collectd.service [On RHEL/CentOS 7.x Systems]
#p#
第2步:安裝Collectd-Web和依賴項
3. 在開始導入Collectd-web Git軟件庫之前,你先需要保證Git軟件包和下列所需的依賴項已安裝到你的機器上:
----------------- On Debian / Ubuntu systems ----------------- # apt-get install git # apt-get install librrds-perl libjson-perl libhtml-parser-perl
將Git安裝到Debian/Ubuntu上
----------------- On RedHat/CentOS/Fedora based systems ----------------- # yum install git # yum install rrdtool rrdtool-devel rrdtool-perl perl-HTML-Parser perl-JSON
安裝Git和依賴項
第3步:導入Collectd-Web Git軟件庫,并修改獨立式Python服務器
4. 下一步,從Linux樹狀層次結構選擇目錄,并更改成想要導入Git項目的系統(tǒng)路徑(你可以使用/usr/local/ path),然后運行下面這個命令,復制Collectd-web git軟件庫:
# cd /usr/local/ # git clone https://github.com/httpdss/collectd-web.git
使用Git復制Collectd-Web
5. 一旦Git軟件庫導入到你的系統(tǒng)中,只管進入到collectd-web目錄,列出目錄內容,以便找到Python服務器腳本(runserver.py),下一步會修改該腳本。此外,為下列CGI腳本:graphdefs.cgi添加執(zhí)行權限。
# cd collectd-web/ # ls # chmod +x cgi-bin/graphdefs.cgi
設置執(zhí)行權限
6. Collectd-web獨立式Python服務器腳本默認情況下已配置成運行、只綁定回送地址(127.0.0.1)。
為了從遠程瀏覽器訪問Collectd-web界面,你需要編輯runserver.py腳本,并將127.0.1.1 IP地址改成0.0.0.0,那樣才能綁定所有的網絡接口IP地址。
如果你只想綁定某個特定的接口,那么使用該接口的IP地址(不建議使用這個選項,以防網絡接口地址由DHCP服務器動態(tài)分配)。使用下列屏幕截圖,了解最后的runserver.py腳本應該看起來是啥樣:
# nano runserver.py
配置Collect-web
如果你想使用8888之外的另一個網絡端口,修改PORT變量值。#p#
第4步:運行Python CGI獨立式服務器,瀏覽Collectd-web界面
7. 你修改了獨立式Python服務器腳本IP地址綁定后,只管啟動后臺服務器,為此只要執(zhí)行下面這個命令:
# ./runserver.py &
另外一個辦法就是,你可以調用Python解釋器,啟動服務器:
# python runserver.py &
啟動Collect-Web服務器
8. 想訪問Collectd-web界面,并顯示關于你主機的統(tǒng)計信息,不妨打開瀏覽器,使用HTTP協(xié)議,讓URL指向你服務器的IP地址和端口8888。
默認情況下,你會看到關于處理器、磁盤使用情況、網絡流量、內存、進程及其他系統(tǒng)資源的許多圖形,只要點擊上Hosts(主機)表單上所顯示的主機名稱。
http://192.168.1.211:8888
訪問Collect-Web面板
Linux磁盤監(jiān)控
9. 想停止獨立式Python服務器,執(zhí)行下面這個命令,或者可以按Ctrl+c鍵來取消或停止腳本:
# killall python
#p#
第5步:構建自定義Bash腳本,以管理獨立式Python服務器
10. 想更輕松地管理獨立式PyhtonCGIServer腳本(啟動、停止和查看狀態(tài)),不妨在系統(tǒng)可執(zhí)行路徑下構建下列collectd-server Bash腳本,并使用下列配置:
# nano /usr/local/bin/collectd-server
將下列內容添加到collectd-server文件。
#!/bin/bash
PORT="8888"
case $1 in
start)
cd /usr/local/collectd-web/
python runserver.py 2> /tmp/collectd.log &
sleep 1
stat=`netstat -tlpn 2>/dev/null | grep $PORT | grep "python"| cut -d":" -f2 | cut -d" " -f1`
if [[ $PORT -eq $stat ]]; then
sock=`netstat -tlpn 2>/dev/null | grep $PORT | grep "python"`
echo -e "Server is still running:\n$sock"
else
echo -e "Server has stopped"
fi
;;
stop)
pid=`ps -x | grep "python runserver.py" | grep -v "color"`
kill -9 $pid 2>/dev/null
stat=`netstat -tlpn 2>/dev/null | grep $PORT | grep "python"| cut -d":" -f2 | cut -d" " -f1`
if [[ $PORT -eq $stat ]]; then
sock=`netstat -tlpn 2>/dev/null | grep $PORT | grep "python"`
echo -e "Server is still running:\n$sock"
else
echo -e "Server has stopped"
fi
;;
status)
stat=`netstat -tlpn 2>/dev/null |grep $PORT| grep "python" | cut -d":" -f2 | cut -d" " -f1`
if [[ $PORT -eq $stat ]]; then
sock=`netstat -tlpn 2>/dev/null | grep $PORT | grep "python"`
echo -e "Server is running:\n$sock"
else
echo -e "Server is stopped"
fi
;;
*)
echo "Use $0 start|stop|status"
;;
esac
萬一你更改了runserver.py腳本的PORT變量值,就要確保你相應地對該bash文件更改了端口變量。
11. 一旦你構建了collectd-server腳本,添加執(zhí)行權限,以便能夠運行它?,F在唯一剩下來的事情就是,以類似管理系統(tǒng)服務的方式來管理Collectd-web服務器,為此執(zhí)行下列命令。
# chmod +x /usr/local/bin/collectd-server # collectd-server start # collectd-server status # collectd-server stop
Collectd服務器腳本#p#
第6步:啟用Collectd守護程序插件
12. 為了激活Collectd服務方面的插件,你必須進入到其主配置文件,該文件位于/etc/collectd/collectd.conf,打開該文件,即可編輯和取消注釋,即可以去掉你想激活的插件名稱前面的那個#符號。
一旦帶插件名稱的LoadPlugin語句被取消了注釋,你就必須深入搜尋整個文件,找到含有運行所需配置的同一個插件名稱。
舉例說,下面介紹了如何激活Collectd Apache插件。首先打開Collectd主配置文件,以便編輯:
# nano /etc/collectd/collectd.conf
A. 使用Ctrl+w鍵,開啟nano編輯工具搜索,并在提交搜索的下列終端上輸入apache。一旦找到了LoadPlugin apache語句,去掉注釋特殊符號#,即可取消注釋,如下列屏幕截圖所示。
啟用Collectd Apache插件
B. 下一步,鍵入Ctrl+w鍵,即可再次搜索,apache應該已經出現在提交的搜索上,按回車鍵,即可找到插件配置。
一旦找到了apache插件配置(它們看起來類似Apache web服務器語句),取消下列幾行的注釋,那樣最后的配置應該看起來像這樣:
- <Plugin apache>
- <Instance "example.lan">
- URL "http://localhost/server-status?auto"
- # User "www-user"
- # Password "secret"
- # VerifyPeer false
- # VerifyHost false
- # CACert "/etc/ssl/ca.crt"
- # Server "apache"
- </Instance>
- #
- # <Instance "bar">
- # URL "http://some.domain.tld/status?auto"
- # Host "some.domain.tld"
- # Server "lighttpd"
- # </Instance>
- </Plugin>
為Collectd啟用Apache配置
注意:根據你的服務器主機名稱,更換語句字符串。
C. 在你完成文件編輯后,保存文件(Ctrl+o)并關閉文件(Ctrl+x),然后重啟Collectd守護程序,讓變更內容生效。清空瀏覽器緩存,重新裝入頁面,查看Collectd守護程序到目前為止為Apache Web服務器收集的統(tǒng)計信息。
# /usr/local/bin/collectd-server start
Apache監(jiān)控
想啟用其他插件,請訪問Collectd維基頁面(https://collectd.org/wiki/index.php/Table_of_Plugins)。#p#
第7步:在整個系統(tǒng)范圍啟用Collectd守護程序和Collectd-web服務器
13. 為了在系統(tǒng)啟動時通過Bash腳本自動啟動Collectd-web服務器,打開/etc/rc.local文件以編輯,并在exit 0語句前面添加下面這一行:
/usr/local/bin/collectd-server start
在整個系統(tǒng)范圍啟用Collectd
如果你不使用管理Python服務器腳本的collectd-server Bash腳本,就把rc.conf中的上述行換成下面這一行:
# cd /usr/local/collectd-web/ && python runserver.py 2> /tmp/collectd.log &
然后,執(zhí)行下列命令,啟用這兩項系統(tǒng)服務:
------------------ On Debian / Ubuntu ------------------ # update-rc.d collectd enable # update-rc.d rc.local enable
在系統(tǒng)啟動時啟用這項服務的另外一種方法就是,借助sysv-rc-conf程序包:
------------------ On Debian / Ubuntu ------------------ # sysv-rc-conf collectd on # sysv-rc-conf rc.local on ------------------ On RHEL/CentOS 6..x/5.x and Fedora 12-19 ------------------ # chkconfig collectd on # chkconfig --level 5 collectd on ------------------ On RHEL/CentOS 7.x and Fedora 20 onwards ------------------ # systemctl enable collectd
就這樣!事實證明,Collectd守護程序和Collectd-web服務器是Linux服務器的出色監(jiān)控工具,對系統(tǒng)資源的影響極小,它會生成并顯示一些值得關注的機器工作負載方面的圖形統(tǒng)計信息;到目前為止唯一的缺點就是,要是不刷新瀏覽器,統(tǒng)計信息就不會實時顯示。
英文:How to Install and Configure ‘Collectd’ and ‘Collectd-Web’ to Monitor Server Resources in Linux