系统性能监控利器-collectd详解

系统监控是作为网站运维、网站性能优化必不可少的工具,目前比较常用的有Nagios、Cacti以及Zabbix,笔者用过后两个,其中Zabbix确实很强大,web界面操作也比较不错。不过这几个工具安装起来那可并不简单,其中Nagios的复杂那可是出了名的。

笔者近期一直在尝试用Collectd,一款性能监控程序,C语言开发(高效)、无需系统cron支持(独立)、简单易用。Collectd是插件式架构,主要分为输入、输出类型插件,具体可以参考collectd官方网站。
Collectd的官方网站 http://collectd.org/

1. 安装
Ubuntu和CentOS都可以用apt或者yum安装。

sudo yum install collectd.x86_64 collectd-apache collectd-ping collectd-nut collectd-snmp collectd-mysql collectd-rrdtool

要注意的是,安装collectd的时候要注意CPU架构,64位的一定要带上x86_64,否则装不上。

2. 启动
sudo /etc/init.d/collectd start
这样,就启动了collectd deamon程序。

Collectd前端程序

Collectd的deamon程序搞定之后,我们需要安装客户端,collectd的客户端非常多,大家可以参考这个列表。
Collectd前端列表 http://collectd.org/wiki/index.php/List_of_front-ends

我们选择第一个Collectd Graph Panel。

wget http://pommi.nethuis.nl/storage/software/cgp/cgp-0.3.tgz
tar -zxvf cgp-0.3.tgz
mv cgp-0.3 /var/www/html/cgp

注意:此处假设你的apache document root位于/var/www/html。

然后修改一下cgp的配置(笔者测试的版本为 collectd 4.10.3, Collectd Graph Panel 0.3)

vim conf/config.php

修改如下一行(笔者机器的默认配置,注意如果启用了network插件,这个位置会变)

$CONFIG['datadir'] = '/var/lib/collectd';

这时,所有一切都基本搞定,打开浏览器,输入 http://your-host/cgp

配置多服务器监控
Collectd支持多服务器监控,通过network插件,可以将一个collectd配置成为server,其他的配置成为client,然后client会向服务器端发送数据,所有的统计都会记录在服务端。

简单的配置如下,在plugin network下面:

  Listen "192.168.8.1"

如果启用的是内网IP,甚至不用验证。(collectd验证请参考官网wiki)。服务器端也很简单,加上Server配置即可。

这里主要共享一下笔者在配置中遇到的几个注意点:
1. collectd是基于udp协议的,所以在查看deamon程序的时候试用netstat -nupl,笔者习惯写 netstat -ntpl所以费了好大劲才确认了collectd服务启动成功。
2. 在collectd启动中,如果启用FQDNLookup选项,确保服务器的hostname和IP一致,比如我的hostname是robbin-server-01,这个不是一个FQDN,所以需要在/etc/hosts里面添加一行:127.0.0.1 robbin-server-01,否则会启动不成功。(可以在/var/log/messages里面查看日志)
3. 在试用collectd-web作为前端的时候,需要先执行require验证的脚本,看系统配置是否满足。

4. 如果是CGP,注意权限问题。参考collectd-graphic-panel官网的一段评论如下:

Xan says: January 29, 2011 at 15:17
Error:No Collectd hosts found in /var/lib/collectd/rrd
All seems to be correct: the server, and collectd, but CGP show me that error. How can I fix it?
Thanks,
Xan,

pommi says: January 29, 2011 at 19:56
Hi Xan, This message can mean 2 things:
1. Your collectd datadir is not in /var/lib/collectd/rrd. Set $CONFIG['datadir'] in conf/config.local.php to set the correct one.
2. Your webserver user (for example: user www-data when Debian/Apache2) is not allowed to read the files in /var/lib/collectd/rrd

参考链接:

Collectd官方网站 http://collectd.org
Collectd多服务器监控配置 http://collectd.org/wiki/index.php/Networking_introduction
Collectd前端列表 http://collectd.org/wiki/index.php/List_of_front-ends

(文/赵高欣 . Robbin)

本文来源:http://www.drupal001.com/2012/07/system-monitor-collectd/


如果给你带来帮助,欢迎微信或支付宝扫一扫,赞一下。