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

ngxtop现在虽然还有些问题,如本文最后,但开源才15天,值得期待!
Real-time metrics for nginx server:https://github.com/lebinh/ngxtop 1、安装python
tar xzvf Python-2.7.3
cd Python-2.7.3
./configure --prefix=/usr/local/python2.7
make
make install

安装后python2.7所在路径
/usr/local/python2.7/bin/python2.7

为保持python2.4不变,建立python2.7的软连接指向python2.7所在路径
mv /usr/bin/python /usr/bin/python.bak
ln -s /usr/local/python2.7/bin/python2.7 /usr/bin/python2.7
ln -s /usr/bin/python2.7 /usr/bin/python

2、安装setuptools
wget https://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg --no-check-certificate
chmod +x setuptools-0.6c11-py2.7.egg
sh setuptools-0.6c11-py2.7.egg

3.1、通过pip安装ngxtop,因为源在国外,可能下载、安装过程会很慢
安装pip
https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb
tar xzvf pip-1.5.4.tar.gz
cd pip-1.5.4
python setup.py install

安装ngxtop
/usr/local/bin/pip install ngxtop

3.2、直接通过ngxtop源码安装
wget https://github.com/lebinh/ngxtop/archive/1c200d51fbae7824a30159714669146d6b214210.zip
unzip ngxtop-1c200d51fbae7824a30159714669146d6b214210.zip
cd ngxtop-1c200d51fbae7824a30159714669146d6b214210
python setup.py install

如果提示没有pyparsing的话,下载安装即可
wget https://pypi.python.org/packages/source/p/pyparsing/pyparsing-2.0.1.zip
unzip pyparsing-2.0.1.zip
cd pyparsing-2.0.1
python setup.py instal

4、使用及效果截图
如果不出效果debug一下:
ngxtop -t 1 -l /var/log/nginx/access.log -d

默认输出:
ngxtop -t 1 -l /var/log/nginx/access.log

显示请求最多的ip和request
ngxtop -t 1 -l /var/log/nginx/access.log top remote_addr request

远程实时分析(这个很实用呦,不用每台server都安装ngxtop)
sshpass -f pass.txt ssh 192.168.0.100 tail -f /var/log/nginx/nginx.log|ngxtop

其他用法

ngxtop --help

5、测试过程遇到的问题
(1)执行ngxtop会报如下错误:ImportError: No module named _sqlite3
# /usr/local/bin/ngxtop --help
Traceback (most recent call last):
File "/usr/local/bin/ngxtop", line 7, in <module>
from ngxtop.ngxtop import main
File "/usr/local/lib/python2.7/site-packages/ngxtop/ngxtop.py", line 60, in <module>
import sqlite3
File "/usr/local/lib/python2.7/sqlite3/__init__.py", line 24, in <module>
from dbapi2 import *
File "/usr/local/lib/python2.7/sqlite3/dbapi2.py", line 27, in <module>
from _sqlite3 import *
ImportError: No module named _sqlite3

解决方案:编辑Python-2.7.3/Modules/_sqlite/connection.c加入如下44-57行,然后重新编译python2.7即可
[root@admin200 Python-2.7.3]# vim Modules/_sqlite/connection.c
38 #if SQLITE_VERSION_NUMBER >= 3003008
39 #ifndef SQLITE_OMIT_LOAD_EXTENSION
40 #define HAVE_LOAD_EXTENSION
41 #endif
42 #endif
43
44 /*** add by lai for **/
45 #ifdef SQLITE_INT64_TYPE
46 typedef SQLITE_INT64_TYPE sqlite_int64;
47 typedef unsigned SQLITE_INT64_TYPE sqlite_uint64;
48 #elif defined(_MSC_VER) || defined(__BORLANDC__)
49 typedef __int64 sqlite_int64;
50 typedef unsigned __int64 sqlite_uint64;
51 #else
52 typedef long long int sqlite_int64;
53 typedef unsigned long long int sqlite_uint64;
54 #endif
55 typedef sqlite_int64 sqlite3_int64;
56 typedef sqlite_uint64 sqlite3_uint64;
57 /*** end ***/
58
59
60 static int pysqlite_connection_set_isolation_level(pysqlite_Connection* self, PyObject* isolation_level);
61 static void _pysqlite_drop_unused_cursor_references(pysqlite_Connection* self);
62

(2)、无法启动ngxtop,报错:OSError: [Errno 2] No such file or directory
[root@admin200 nginx]# /usr/local/bin/ngxtop
Traceback (most recent call last):
File "/usr/local/bin/ngxtop", line 11, in <module>
sys.exit(main())
File "/usr/local/python2.7/lib/python2.7/site-packages/ngxtop/ngxtop.py", line 446, in main
process(args)
File "/usr/local/python2.7/lib/python2.7/site-packages/ngxtop/ngxtop.py", line 408, in process
config = get_nginx_conf_path()
File "/usr/local/python2.7/lib/python2.7/site-packages/ngxtop/ngxtop.py", line 120, in get_nginx_conf_path
proc = subprocess.Popen(['nginx', '-V'], stderr=subprocess.PIPE)
File "/usr/local/python2.7/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/local/python2.7/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
[root@admin200 nginx]#

解决方法:因nginx为自定义安装目录,ngxtop需要查找nginx的pid,故需要将nginx路径加入环境变量,或者做个符号链接
cp /usr/local/nginx/sbin/nginx /usr/bin/
或者
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

(3)远程实时分析其他server的log
sshpass -f pass.txt ssh 192.168.0.100 tail -f /var/log/nginx/bod-access.log|ngxtop

利用ngxtop实时监控nginx的访问情况的更多相关文章

  1. 通过ngxtop实时监控webserver的访问情况 / 解决ImportError: No module named _sqlite3问题

    通过ngxtop实时监控webserver的访问情况 2014-04-03      0个评论    来源:通过ngxtop实时监控web server的访问情况   收藏    我要投稿 关于对ng ...

  2. 使用ngxtop实时监控nginx

    Ngxtop实时解析nginx访问日志,并且将处理结果输出到终端,功能类似于系统命令top,所以这个软件起名ngxtop.有了ngxtop,你可以实时了解到当前nginx的访问状况,再也不需要tail ...

  3. ngxtop实时监控nginx状态

    ngxtop实时解析nginx访问日志,并且将处理结果输出到终端,功能类似于系统命令top,所以这个软件起名ngxtop.有了ngxtop,你可以实时了解到当前nginx的访问状况,再也不需要tail ...

  4. 一个小工具帮你搞定实时监控Nginx服务器

    Linux运维工程师的首要职责就是保证业务7 x 24小时稳定的运行,监控Web服务器对于查看网站上发生的情况至关重要.关注最多的便是日志变动,查看实时日志文件变动大家第一反应应该是'tail -f ...

  5. Tomcat集群 Nginx负载均衡 shell脚本实时监控Nginx

    第一步,安装Tomcat 系统环境:Centos7 第1步:下载tomcat安装包 tomcat官网:https://tomcat.apache.org/ 第2步:安装包上传至linux中 第3步:下 ...

  6. java利用WatchService实时监控某个目录下的文件变化并按行解析(注:附源代码)

    首先说下需求:通过ftp上传约定格式的文件到服务器指定目录下,应用程序能实时监控该目录下文件变化,如果上传的文件格式符合要求,将将按照每一行读取解析再写入到数据库,解析完之后再将文件改名. 一. 一开 ...

  7. CentOS6.9安装Filebeat监控Nginx的访问日志发送到Kafka

    一.下载地址: 官方:https://www.elastic.co/cn/downloads/beats/filebeat 百度云盘:https://pan.baidu.com/s/1dvhqb0 二 ...

  8. ngxtop:在命令行实时监控 Nginx 的神器

    Nginx网站服务器在生产环境中运行的时候需要进行实时监控.实际上,诸如Nagios, Zabbix, Munin 的网络监控软件是支持 Nginx 监控的. 如果你不需要以上软件提供的综合性报告或者 ...

  9. zabbix4.2配置监控nginx服务

    1.监控原理 通过status模块监控(--with-http_stub_status_module)  2.修改nginx配置(/etc/nginx/conf.d/default.conf) 在被监 ...

随机推荐

  1. Maven+druid+MyBatis+Spring+Oracle+Dubbo开发环境搭建

    1.开发工具使用: MyEclipse或Eclipse,数据库使用Oracle.需要用到的软件有Zookeeper(注册中心),Tomcat(Web容器)和Maven(包管理). 2.初始环境配置: ...

  2. 大话数据结构–1.基础知识+2.算法

      2.算法: 算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每个指令表现为一个或多个操作. 特性:输入.输出.有穷性.确定性.可行性.   2.9.1.算法时间复杂度: 语句 ...

  3. MySQL 主从同步

    http://blog.csdn.net/z69183787/article/details/53897894

  4. ASP.NET MVC使用Bundle来打包压缩js和css

    Bundle它是用来将js和css进行压缩(多个文件可以打包成一个文件),并且可以区分调试和非调试,在调试时不进行压缩,以原始方式显示出来,以方便查找问题. 1.BundleConfig配置Bundl ...

  5. 二叉树学习笔记之B树、B+树、B*树

    动态查找树主要有二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree), 红黑树 (Red-Black Tree ), 都是典型的 ...

  6. 在ubuntu上搭建开发环境7---ubuntu安装JDK

    首先,当然是要下载了. 地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 按 ...

  7. NPOI读写Excel

    1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet:行:Row:单元格Cell. 2.NPOI是POI的C#版本,NPOI的行和列的index都是从0开始 ...

  8. 攻城狮在路上(叁)Linux(二十五)--- linux内存交换空间(swap)的构建

    swap的功能是应付物理内存不足的状况,用硬盘来暂时放置内存中的信息. 对于一般主机,物理内存都差不多够用,所以也就不会用到swap,但是对于服务器而言,当遇到大量网络请求时或许就会用到. 当swap ...

  9. linux下epoll如何实现高效处理百万句柄的

    linux下epoll如何实现高效处理百万句柄的 分类: linux 技术分享 2012-01-06 10:29 4447人阅读 评论(5) 收藏 举报 linuxsocketcachestructl ...

  10. loj 1036(dp)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=25913 思路:易证存在一条从左上角到右下角的折线,沿着格子边缘的. ...