Collectd-web是一款基于RRDtool(轮循数据库工具)的Web前端监控工具,它能够解读并以图形化方式输出由Linux系统上的Collectd服务收集的数据。
Collectd服务在默认情况下随带一大批可用插件,这些插件接入其默认的配置文件;一旦你安装了软件包,其中一些插件在默认情况下已经被激活。
Collectd-web CGI脚本可解读并生成图形化的html页面统计信息,用Apache CGI网关即可执行,Apache Web服务器端只需要极少的配置。
然而,附有所生成统计信息的图形化Web界面也可以由Python CGIHTTPServer脚本提供的独立式Web服务器来执行,该脚本随主Git软件库预先安装。
本教程将介绍Collectd服务和Collectd-web界面在基于RHEL/CentOS/Fedora和Ubuntu/Debian的系统上的安装过程,只需要进行极少的配置,就可以运行服务,并启用Collectd服务插件。
第1步:安装Collectd服务
1. 基本上来说,Collectd守护程序的任务就是在它所运行的系统上收集并存储数据统计信息。Collectd程序包可以从默认的基于Debian的发行版软件库下载和安装,只要执行下面这个命令:
在Ubuntu/Debian上:
# apt-get install collectd [On Debian based Systems]
将Collectd安装到Debian/Ubuntu上
在RHEL/CentOS 6.x/5.x上:
在基于红帽的较旧系统(比如CentOS/Fedora)上,你先需要启用系统下的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. 一旦程序包安装到了你的系统上,运行下面这个命令,以便启动服务。
# 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项目的系统路径(你可以使用/usr/local/ path),然后运行下面这个命令,复制Collectd-web git软件库:
# cd /usr/local/ # git clone https://github.com/httpdss/collectd-web.git
使用Git复制Collectd-Web
5. 一旦Git软件库导入到你的系统中,只管进入到collectd-web目录,列出目录内容,以便找到Python服务器脚本(runserver.py),下一步会修改该脚本。此外,为下列CGI脚本:graphdefs.cgi添加执行权限。
# cd collectd-web/ # ls # chmod +x cgi-bin/graphdefs.cgi
设置执行权限
6. Collectd-web独立式Python服务器脚本默认情况下已配置成运行、只绑定回送地址(127.0.0.1)。
为了从远程浏览器访问Collectd-web界面,你需要编辑runserver.py脚本,并将127.0.1.1 IP地址改成0.0.0.0,那样才能绑定所有的网络接口IP地址。
如果你只想绑定某个特定的接口,那么使用该接口的IP地址(不建议使用这个选项,以防网络接口地址由DHCP服务器动态分配)。使用下列屏幕截图,了解最后的runserver.py脚本应该看起来是啥样:
# nano runserver.py
配置Collect-web
如果你想使用8888之外的另一个网络端口,修改PORT变量值。#p#
第4步:运行Python CGI独立式服务器,浏览Collectd-web界面
7. 你修改了独立式Python服务器脚本IP地址绑定后,只管启动后台服务器,为此只要执行下面这个命令:
# ./runserver.py &
另外一个办法就是,你可以调用Python解释器,启动服务器:
# python runserver.py &
启动Collect-Web服务器
8. 想访问Collectd-web界面,并显示关于你主机的统计信息,不妨打开浏览器,使用HTTP协议,让URL指向你服务器的IP地址和端口8888。
默认情况下,你会看到关于处理器、磁盘使用情况、网络流量、内存、进程及其他系统资源的许多图形,只要点击上Hosts(主机)表单上所显示的主机名称。
http://192.168.1.211:8888
访问Collect-Web面板
Linux磁盘监控
9. 想停止独立式Python服务器,执行下面这个命令,或者可以按Ctrl+c键来取消或停止脚本:
# killall python
#p#
第5步:构建自定义Bash脚本,以管理独立式Python服务器
10. 想更轻松地管理独立式PyhtonCGIServer脚本(启动、停止和查看状态),不妨在系统可执行路径下构建下列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脚本,添加执行权限,以便能够运行它。现在唯一剩下来的事情就是,以类似管理系统服务的方式来管理Collectd-web服务器,为此执行下列命令。
# 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服务器收集的统计信息。
# /usr/local/bin/collectd-server start
Apache监控
想启用其他插件,请访问Collectd维基页面(https://collectd.org/wiki/index.php/Table_of_Plugins)。#p#
第7步:在整个系统范围启用Collectd守护程序和Collectd-web服务器
13. 为了在系统启动时通过Bash脚本自动启动Collectd-web服务器,打开/etc/rc.local文件以编辑,并在exit 0语句前面添加下面这一行:
/usr/local/bin/collectd-server start
在整个系统范围启用Collectd
如果你不使用管理Python服务器脚本的collectd-server Bash脚本,就把rc.conf中的上述行换成下面这一行:
# cd /usr/local/collectd-web/ && python runserver.py 2> /tmp/collectd.log &
然后,执行下列命令,启用这两项系统服务:
------------------ On Debian / Ubuntu ------------------ # update-rc.d collectd enable # update-rc.d rc.local enable
在系统启动时启用这项服务的另外一种方法就是,借助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服务器的出色监控工具,对系统资源的影响极小,它会生成并显示一些值得关注的机器工作负载方面的图形统计信息;到目前为止唯一的缺点就是,要是不刷新浏览器,统计信息就不会实时显示。
英文:How to Install and Configure ‘Collectd’ and ‘Collectd-Web’ to Monitor Server Resources in Linux