飞云小侠的个人博客

欢迎你到这里来

« WebWork2 Wiki 中文版 1.0a 发布了 | Main | 紫光输入法5.0发布了 »

使用Cacti,mod_watch监视Apache虚拟主机的流量
2006/05/30,14:35
本文简单介绍了如何使用Cacti,mod_watch监测Apache中的各个虚拟主机的流量

MRTG+Mod_watch监测虚拟主机流量的文章在网上已经有好多了,这么不在罗嗦了.

首先我们要安装好mod_watch, 以及rrdtools,cacti等程序,如何安装,可以参考chinaunix论坛的很多文章.

Cacti支持自己写脚本来取得数据,之前在网上搜索,找到一个cacti+mod_watch的脚本,在上面改了改,然后自己添加了模板,实现了监测Apache的虚拟主机的流量.

:发现Apache的流量和网卡的流量似乎不太对应.原因 未知

用来监测的php脚本如下:(从原来的cacti中文站网上找到修改的--该网站目前没了?)

  1. <?php
  2.  
  3. /* apachevhost_inout.php
  4. * enables cacti to read mod_watch statistics
  5. * by cnscud # gmail.com
  6. *
  7. *
  8. *
  9. * usage:
  10. * apachevhost_inout.php hostname:port virtual
  11. *
  12. *
  13. *
  14. *
  15. * based on ws_apachestats.pl
  16. * by Rolf Poser - rolf@stasolutions.co.za
  17. */
  18.  
  19.  
  20. if ($_SERVER["argc"] != 3) {
  21. die ("Usage : apachevhost_inout.php hostname_to_query virtual ");
  22. }
  23.  
  24. $hostname = $_SERVER["argv"][1];
  25. $virtual=$_SERVER["argv"][2];
  26.  
  27.  
  28. $hostnameurl="http://".$hostname."/watch-list";
  29.  
  30. $handle = fopen($hostnameurl, "r");
  31.  
  32. if ($handle) {
  33. while (!feof($handle)) {
  34. $buffer = chop(fgets($handle, 4096));
  35.  
  36. $pattern = '/^'.$virtual.'s(d+)s(d+)s(d+)s(d+)s(d+)s(d+)s(d+.d+)s(d+)s(d+)/';
  37. if (preg_match($pattern, $buffer, $matches)) {
  38. print "out:".round($matches[3])." in:".round($matches[2]); //out,in
  39. }
  40. }
  41. fclose($handle);
  42. }
  43.  
  44.  
  45.  
  46. ?>

 

可以直接下载文件:(下载后改为.php)

apachevhost_inout.txt

 

本脚本从apache的watch-list中读取当前虚拟主机的信息,返回in,out两个数据. 如果你想返回其他数据,可以修改程序达到你的目的.

我的apache配置为仅从一个地方可以访问watch-list,没有设置watch-info,并且设置只允许从本地访问,这样避免了安全问题.

配置如下:

  1. <IfModule mod_watch.c>
  2.  
  3. <Location /watch-list>
  4. SetHandler watch-list
  5. Order deny,allow
  6. Deny from all
  7. Allow from 127.0.0.1
  8. </Location>
  9.  
  10. </IfModule>

 

 

编写完脚本之后,如果没有合适的模板,可以自己创建,步骤如下:

  • 创建 Data-input-method
  • 创建 Data Template
  • 创建 Graphic Template

然后就可以New Graph了,每个里面指定hostname和virtualhostname.

Cacti为了方便,很多地方都可以选择使用统一的数据设置或者是每个都指定自己的数据,这个功能非常方便. 例如我们根据自己的情况,假设我们仅有一台虚拟主机服务器,则可以统一设定hostname,在新建图的地方只需要指定virtualhostname就可以了

下面的文件是我创建的模板,可以根据自己的情况修改:

cacti_scud_template_apache_vhost_inout_data_traffic.xml

下图是监测的图:

注意 其中当指定virtualhostname为SERVER 时,返回的是Apache的全部流量,非常方便.这是mod_watch提供的,也就是watch-list里面的第一项.

由于有多个虚拟主机,没有什么好办法,只好一个一个加了,然后在tree上建立一个节点,这样就方便多了.

 

 

 

 

 

technorati tags: , , ,

最新回复

能否加个MSN:fengwei_1220@hotmail.com,有些Cacti和这个脚本的问题希望您的赐教,万分感谢

Comment Icon Posted by: 肥嘟嘟 at 2006/10/16, 00:50

是否cacti能否检测其他的工具,不是由于中间的 OID有关吗??
你所说的脚本他的用处是什么呢??

Comment Icon Posted by: 再次起航 at 2006/10/11, 11:25
 
Support by JavaScud