用nginx-rrd监控nginx访问数
本文参考:http://www.gm100861.com/542.html
http://laoxu.blog.51cto.com/4120547/1159491
nginx-rrd是基于虚拟主机的,监控并发连接数量的!通过Cacti监控到的nginx的并发连接数量,是一台nginx服务器上所有的虚拟主机的并发总量!
nginx-rrd配置起来很简单,只需要简单的安装配置一下即可,监控nginx的并发量,肯定要开启nginx的stub模块,Nginx中的stub_status模块主要用于查看Nginx的一些状态信息.本模块默认是不会编译进Nginx的,如果你要使用该模块,则要在编译安装Nginx时指定添加--with-http_stub_status_module参数。
编译安装nginx参考http://freeloda.blog.51cto.com/2033581/1288553博文
首先配置其需要的环境,并下载软件包准备安装
yum install perl rrdtool perl-libwww-perl libwww-perl perl-rrdtool -y
wget http://soft.vpser.net/status/nginx-rrd/nginx-rrd-0.1.4.tgz
确定 rrdtool 和相应的perl 被安装上后,开始安装配置nginx-rrd
tar xf nginx-rrd-0.1.4.tgz
cd nginx-rrd-0.1.4
cp usr/sbin/* /usr/sbin/
cp etc/nginx-rrd.conf /etc/
cp etc/cron.d/nginx-rrd.cron /etc/cron.d/
mkdir /var/www/html/nginx/rrd -pv
mkdir /var/www/html/nginx/html -pv
cp html/index.php /var/www/html/nginx/html/
编辑修改/etc/nginx-rrd.conf文件
vi /etc/nginx-rrd.conf
RRD_DIR="/var/www/html/nginx/rrd/";
WWW_DIR="/var/www/html/nginx/html/";
NICE_LEVEL="-19";
BIN_DIR="/usr/sbin";
SERVERS_URL="http://www.123.com/nginxstatus;www.123.com"
如果有多个URL要监控,中间以空格隔开。URL的第一部分是虚拟主机配置好的stub-status,第二部分是域名所在的主机。默认是15分钟绘制一次图形.
第一种方法:
cat /etc/cron.d/nginx-rrd.cron
# generate graphs from lighttpd RRD data
MAILTO=root
***** root/usr/sbin/nginx-collect
/15**** root/usr/sbin/nginx-graph
你可以根据你的需求去改变绘制图形的周期。其实这个软件就两个pl脚本,一个收集数据,一个绘制图形。
service crond restart
可能出现的错误:
cron任务计划没有执行
查日志发现:
Aug406:11:02centos1000 crond[12966]:(*system*)BAD FILEMODE(/etc/cron.d/nginx-rrd.cron)
报了一个错误,好像是文件的权限有问题,看一下文件的权限,发现是755
# ls -l /etc/cron.d/
-rwxr-xr-x1root root13408-0405:56 nginx-rrd
把权限改为0644,就正常执行了。看来/etc/cron.d/里面放的任务计划文件,不能有执行权限,不然会无法执行!
chmod 0644 /etc/cron.d/nginx-rrd
第二种方法:
设置定时收集数据
crontab -e
* * * * * root /usr/sbin/nginx-collect
*/10 * * * * root /usr/sbin/nginx-graph
service crond restart 重启crond服务
查看已安装的nginx是否包含stub_status模块
/usr/sbin/nginx -V
nginx version: Nginx/1.5.8
configure arguments: --with-http_stub_status_module
确定支持stub_status模块后编辑修改/etc/nginx/nginx.conf文件
vim /usr/local/nginx/conf/nginx.conf
user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
server {
listen 80;
server_name www.123.com;
//server{} 中,需要已经加入如下内容
location / {
root /var/www/html/nginx/html/;
index index.php index.html index.htm;
location /nginxstatus {
stub_status on;//这个选项参数就是在编译时对stub_status模块的支持,如果不编译加入则会在启动nginx时有警告信息
access_log off;
allow all;
}
}
// 去掉如下内容的注释,这里是对php的支持,注意文件路径
location ~ \.php$ {
root /var/www/html/nginx/html/;
#root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME /var/www/html/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
}
启Nginx服务器 /usr/sbin/nginx -s reload
访问页面http://域名/index.php,
例如:http://www.123.com/index.php nginx的连接数如下图
nginx请求数如下图