草庐IT

用nginx-rrd监控nginx访问数

linux_python 2023-03-28 原文
用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

第二种方法:

设置定时收集数据

  1. crontab -e  

  2. * * * * * root /usr/sbin/nginx-collect  

  3. */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请求数如下图


有关用nginx-rrd监控nginx访问数的更多相关文章

  1. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  2. ruby-on-rails - 在混合/模块中覆盖模型的属性访问器 - 2

    我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah

  3. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

    我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

  4. ruby - 续集在添加关联时访问many_to_many连接表 - 2

    我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以

  5. Observability:从零开始创建 Java 微服务并监控它 (二) - 2

    这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/

  6. ruby - 有没有办法从 ruby​​ case 语句中访问表达式? - 2

    我想从then子句中访问c​​ase语句表达式,即food="cheese"casefoodwhen"dip"then"carrotsticks"when"cheese"then"#{expr}crackers"else"mayo"end在这种情况下,expr是食物的当前值(value)。在这种情况下,我知道,我可以简单地访问变量food,但是在某些情况下,该值可能无法再访问(array.shift等)。除了将expr移出到局部变量然后访问它之外,是否有直接访问caseexpr值的方法?罗亚附注我知道这个具体示例很简单,只是一个示例场景。 最佳答案

  7. ruby - 从外部访问类的实例变量 - 2

    我理解(我认为)Ruby中类变量和类的实例变量之间的区别。我想知道如何从该类外部访问该类的实例变量。从内部(即在类方法中而不是实例方法中),它可以直接访问,但是从外部,有没有办法做MyClass.class.[@$#]variablename?我没有任何具体原因要这样做,只是学习Ruby并想知道是否可行。 最佳答案 classMyClass@my_class_instance_var="foo"class上述yield:>>foo我相信Arkku演示了如何从类外部访问类变量(@@),而不是类实例变量(@)。我从这篇文章中提取了上述内

  8. ruby-on-rails - 使用 HTTP.get_response 检索 Facebook 访问 token 时出现 Rails EOF 错误 - 2

    我试图在我的网站上实现使用Facebook登录功能,但在尝试从Facebook取回访问token时遇到障碍。这是我的代码:ifparams[:error_reason]=="user_denied"thenflash[:error]="TologinwithFacebook,youmustclick'Allow'toletthesiteaccessyourinformation"redirect_to:loginelsifparams[:code]thentoken_uri=URI.parse("https://graph.facebook.com/oauth/access_token

  9. ruby-on-rails - 如何用不同的用户运行nginx主进程 - 2

    A/ctohttp://wiki.nginx.org/CoreModule#usermaster进程曾经以root用户运行,是否可以以不同的用户运行nginxmaster进程? 最佳答案 只需以非root身份运行init脚本(即/etc/init.d/nginxstart),就可以用不同的用户运行nginxmaster进程。如果这真的是你想要做的,你将需要确保日志和pid目录(通常是/var/log/nginx&/var/run/nginx.pid)对该用户是可写的,并且您所有的listen调用都是针对大于1024的端口(因为绑定(

  10. ruby - 使用 Class.new 时访问外部范围 - 2

    是否有可能以某种方式访问​​Class.new范围内的a?a=5Class.new{defb;aend}.new.b#NameError:undefinedlocalvariableormethod`a'for#:0x007fa8b15e9af0>#:in`b' 最佳答案 即使@MarekLipka的回答是正确的——改变变量范围总是有风险的。这是可行的,因为每个block都带有创建它的上下文,因此您的局部变量a突然变得不那么局部了——它变成了一个“隐藏的”全局变量:a=5object=Class.new{define_method(

随机推荐