第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服务器脚本
第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)。
第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(文/ 布加迪/编译 51CTO.com)