可以使用cacti、nagios等监控程序监控nginx服务器,不过有时候不用那么复杂,用nginx-rrd就能完成连接、请求的监控功能。
首先编译安装nginx,注意加载stub_status模块,Nginx中的stub_status模块主要用于查看Nginx的一些状态信息. 本模块默认是不会编译进Nginx的,如果你要使用该模块,则要在编译安装Nginx时指定
- tar xzvf nginx-1.2.0.tar.gz
- cd nginx-1.2.0
- ./configure --prefix=/usr/local/nginx --with-http_stub_status_module
- make && make install
yum安装相关的perl、rrdtool的rpm包
- yum install perl rrdtool perl-libwww-perl libwww-perl perl-rrdtool
确定 rrdtool 和相应的perl 被安装上后,开始安装nginx-rrd
- tar zxvf nginx-rrd-0.1.4.tgz
- cd nginx-rrd-0.1.4
- cp -p usr/sbin/* /usr/sbin //复制主程序文件到 /usr/sbin 下
- cp -p etc/nginx-rrd.conf /etc //复制配置文件到 /etc 下
- 创建nginx-rrd生成目录
- mkdir /usr/local/nginx/html/rrd
- cp html/index.php /usr/local/nginx/html
这里提醒需要修改 index.php文件的默认访问密码WCO。
编辑修改/etc/nginx-rrd.conf
- vim /etc/nginx-rrd.conf
- #####################################################
- #
- # dir where rrd databases are stored
- RRD_DIR="/usr/local/nginx/html/rrd";
- # dir where png p_w_picpaths are presented
- WWW_DIR="/usr/local/nginx/html";
- # process nice level
- NICE_LEVEL="-19";
- # bin dir
- BIN_DIR="/usr/sbin";
- # servers to test
- # server_utl;server_name
- SERVERS_URL="http://www.linuxom.com/nginx_status;www.linuxom.com"
多个虚拟主机,可以SERVERS_URL中空格分开,前部分为nginx_status 的地址,后面为被监控主机的域名。
查看已安装的nginx是否包含stub_status模块
- /usr/local/nginx/sbin/nginx -V
- nginx version: Nginx/1.2.0
- configure arguments: --with-http_stub_status_module
确定支持stub_status模块后编辑修改nginx.conf
- vim /usr/local/nginx/conf/nginx.conf
- //server{} 中,需要已经加入如下内容
- location / {
- root html;
- index index.php index.html index.htm;
- location /nginx_status {
- stub_status on; //这个选项参数就是在编译时对stub_status模块的支持,如果不编译加入则会在启动nginx时有警告信息
- access_log off;
- }
- }
- #error_page 404 /404.html;
- # redirect server error pages to the static page /50x.html
- #
- error_page 500 502 503 504 /50x.html;
- location = /50x.html {
- root html;
- }
- # proxy the PHP scripts to Apache listening on 127.0.0.1:80
- #
- #location ~ \.php$ {
- # proxy_pass http://127.0.0.1;
- #}
- # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
- #
- // 去掉如下内容的注释,这里是对php的支持,注意文件路径
- location ~ \.php$ {
- root html;
- fastcgi_pass 127.0.0.1:9000;
- fastcgi_index index.php;
- fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
- include fastcgi_params;
- }
重启Nginx服务器
- /usr/local/nginx/sbin/nginx -s reload
设置定时收集数据
- crontab -e
- * * * * * root /usr/sbin/nginx-collect
- */10 * * * * root /usr/sbin/nginx-graph
访问页面 ,nginx的连接数如下图
nginx请求数如下图