nginx中ngxtop实时监视服务器访问状态

1. 安装ngxtop
1.1 源码安装
# wget https://github.com/lebinh/ngxtop/archive/master.zip -O ngxtop-master.zip
# unzip ngxtop-master.zip
# cd ngxtop-master
# python setup.py install
...省略....
Finished processing dependencies for ngxtop==0.0.1

//看到如上输出表示安装成功,安装过程需要网络支持

1.2 ngxtop安装
pip install ngxtop

2. ngxtop使用详解
# ngxtop --help
ngxtop - ad-hoc query for nginx access log.
 
Usage:
    ngxtop [options]
    ngxtop [options] (print|top|avg|sum) <var> ...
    ngxtop info
    ngxtop [options] query <query> ...
 
Options:
    -l <file>, --access-log <file>  需要分析的访问日志
    -f <format>, --log-format <format>  log_format指令指定的日志格式 [默认: combined]
    --no-follow  ngxtop default behavior is to ignore current lines in log
                     and only watch for new lines as they are written to the access log.
                     Use this flag to tell ngxtop to process the current content of the access log instead.
    -t <seconds>, --interval <seconds>  report interval when running in follow mode [default: 2.0]
 
    -g <var>, --group-by <var>  根据变量分组 [默认: request_path]
    -w <var>, --having <expr>  having clause [default: 1]
    -o <var>, --order-by <var>  排序 [默认: count]
    -n <number>, --limit <number>  显示的条数 [default: 10]
    -a <exp> ..., --a <exp> ...  add exp (must be aggregation exp: sum, avg, min, max, etc.) into output
 
    -v, --verbose  更多的输出
    -d, --debug  print every line and parsed record
    -h, --help  当前帮助信息.
    --version  输出版本信息.
 
    高级选项:
    -c <file>, --config <file>  运行ngxtop解析nginx配置文件
    -i <filter-expression>, --filter <filter-expression>  filter in, records satisfied given expression are processed.
    -p <filter-expression>, --pre-filter <filter-expression> in-filter expression to check in pre-parsing phase.
 
范例:
    All examples read nginx config file for access log location and format.
    If you want to specify the access log file and / or log format, use the -f and -a options.
 
    "top" like view of nginx requests
    $ ngxtop
 
    404前十的请求
    $ ngxtop top request_path --filter 'status == 404'
 
    总流量前十的请求
    $ ngxtop --order-by 'avg(bytes_sent) * count'
 
    访问量前十的ip地址
    $ ngxtop --group-by remote_addr
 
    输出400以上状态吗的请求以及请求来源
    $ ngxtop -i 'status >= 400' print request status http_referer
 
    Average body bytes sent of 200 responses of requested path begin with 'foo':
    $ ngxtop avg bytes_sent --filter 'status == 200 and request_path.startswith("foo")'
 
    使用common日志格式分析远程服务器Apache访问日志
    $ ssh remote tail -f /var/log/apache2/access.log | ngxtop -f common

3. ngxtop实例
3.1 实时状态
# ngxtop -c /usr/local/nginx-1.5.2/conf/nginx.conf
nginx

ngxtop

3.2 访问量前十的IP
# ngxtop -c /usr/local/nginx-1.5.2/conf/nginx.conf top remote_addr
nginx

ngxtop

4. 注意事项
4.1 ngxtop单条命令无法执行
# ngxtop
Error: Access log file or format was not set and nginx
config file cannot be detected. Perhaps nginx is not in your PATH?

意识说nginx执行文件要加到PATH路径中,
方法一:软连接
# ln -s /usr/local/nginx-1.5.2/sbin/nginx /sbin/

方法二:修改环境变量
# vim /etc/profile
export PATH=$PATH:/usr/local/nginx-1.5.2/sbin
 
# source /etc/profile

方法三:指定配置文件
# ngxtop -c /usr/local/nginx-1.5.2/conf/nginx.conf

4.2 虚拟主机配置文件必须在nginx.conf主配置中
一般情况下,我们会将虚拟主机单独写到一个配置文件中,然后nginx.conf做个include。例如我们站点www.111cn.net
配置文件:/usr/local/nginx-1.5.2/conf/vhost/www.111cn.net.conf
再nginx.conf的http段中添加include vhost/*.conf

这种情况下ngxtop不支持,必须要保证所有配置都在nginx.conf中才行。不知道是否我哪里理解不对,如果是的话,知道的兄弟留言告知。本人在此感激不尽。

5. 结束
ngxtop非常实用,值得推荐。

原文来自:ttlsa.com

时间: 2024-10-03 07:41:34

nginx中ngxtop实时监视服务器访问状态的相关文章

Nginx中虚拟主机与指定访问路径的设置方法讲解_nginx

添加多个虚拟主机 最近在ubuntu上捣腾nginx,安装成功了,就只有rewrite没有试验,因为服务器上有多个网站,还不敢在服务器上尝试,慢慢来.网上查了一些文章,下了一篇留下来做试验. nginx上虚拟主机的配置其实跟apache上的基本上类似. 需要注意的几点是: 第一.关于.htaccess配置,也就是为静态配置,在nginx上一般你要写在虚拟主机的配置文本中,但是我也有看到用包含文件解决这个问题的,即在虚拟主机配置脚本上include .htaccess文件,不过没有没有试过. 第二

在nginx中实现单位时间内限制访问频率的教程_nginx

首先说一下遇到这个问题是因为网站被攻击,阿里云报警,想到要限制一下访问频率,而不是限制ip(限制ip的方案稍后给出).nginx连接资源被吃空返回状态码是502,添加本方案限制后返回599,与正常状态码区别开. 步骤如下: 首先nginx.conf里面添加如下内容: map $http_x_forwarded_for $clientRealIp { "" $remote_addr; ~^(?P<firstAddr>[0-9\.]+),?.*$ $firstAddr; } #

利用ngxtop实时监控nginx的访问情况

关于对nginx web server的实时访问的实时监控问题,我很久之前就想实现的,现在虽有nginx自带的status扩展,但那是全局的,无法细分到vhost,并且提供的metric也很少,加之目前是通过cacti每5分钟取nginx status,实时性也不是很好,记得前一阵为maptail兴奋一点,以为能够解决我的问题,可是他只是漂亮的在地图上显示实时用户的ip地理位置信息,没有其他功能了,不过他的思想很重要---"tail -f log",如今的ngxtop其实也是这种思想,

linux系统中rsync+inotify实现服务器之间文件实时同步_Linux

之前做了"ssh信任与scp自动传输脚本"的技术文档,此方案是作为公司里备份的方法,但在实际的运行中,由于主服务器在给备份服务器传输的时候,我们的主服务器需要备份的文件是实时.不停的产生的,造成不知道主服务器给备份服务器传输了多少文件,磁盘空间就那么大,做备份的原因:一个是为了保持文件,另外一个是解决主服务器的磁盘饱满问题,但由于不知道备份服务器到底接收了多少文件,所以主服务器里的文件不敢删除(如果没有备份的情况下删除,问题就严重了,我这个是政府的项目,服务器里的文件都是重要的,删错了

Nginx中禁止使用IP访问网站的配置实例_nginx

国内因为备案的原因,所有服务器都要禁止使用IP访问网站.否则,如果允许使用IP访问网站,那随便解析一个域名到该IP,访问该域名就可以打开网站了.这是一个极大的风险!Nginx中可以很方便的来解决这个问题,小菜鸟来跟大家一起探讨一下. 国内因为备案的原因,所有服务器都要禁止使用IP访问网站.否则,如果允许使用IP访问网站,那随便解析一个域名到该IP,访问该域名就可以打开网站了.这是一个极大的风险!Nginx中可以很方便的来解决这个问题,小菜鸟来跟大家一起探讨一下. 如下的配置项,可以设置允许使用I

链接-主机无法访问虚拟机中Linux的Apache服务器

问题描述 主机无法访问虚拟机中Linux的Apache服务器 Linux中Apache服务已经开启,防火墙也关闭了,在Linux中访问127.0.0.1显示it works! 但是在主机中的浏览器中无法链接Apache,请教各位大神~~ 解决方案 不知道你使用的是什么虚拟机软件,我之前使用的是virtualbox,使用桥接模式,让虚拟机和宿主主机在一个网段中,可以相互访问--

无物理网络的情况下,通过自己的物理机上浏览器访问虚拟机中的绿色tomcat服务器页面

问题描述 无物理网络的情况下,通过自己的物理机上浏览器访问虚拟机中的绿色tomcat服务器页面 如题,无物理网络的情况下,通过自己的物理机上浏览器访问虚拟机中的绿色tomcat服务器页面.请尽量详细 解决方案 虚拟机的网卡设置为host-only模式,这样虚拟机和主机就组成了一个"局域网".虚拟机用ipconfig查得ip,主机就可以用这个ip去访问了. 解决方案二: 安装tomcat的虚拟机,网卡设置成桥接模式,把虚拟机的ip地址和真机设置成同个网段,比如虚拟机是192.168.1.

nginx中如何配置java与php?使两个网站都能访问

问题描述 nginx中如何配置java与php?使两个网站都能访问 现在在nginx(使用的80端口)中配置的java程序能够正常使用,使用的是8080端口,配置的php程序使用的appserv服务使用的是82端口,目前不能正常使用,怎样配置或是程序怎样放置才能使两个程序都能够与相应的域名对应起来呢?求大神赐教,谢谢 解决方案 请参考:nginx 多站点配置方法集合http://www.jb51.net/article/27533.htm

Nginx中定义404页面并且返回404状态码的正确方法_nginx

前几天,一朋友出程序出问题却怎么查都没看出问题,于是让我帮它看看.其实它是ajax请求了很多个模板,然后把模板写到页面中.关键是所有请求的页面都是200正常状态码返回,表面上看没什么问题,实际上有些请求虽然返回200状态码,但给回的状态码是200.WebServer是nginx,直接告诉我应该他们配置了nginx的404错误页面,虽然请求不存在的资源可以成功返回404页面,但返回状态码确是200. 404.html 复制代码 代码如下: This is 404 page. 请求一个不存在的页面: